<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>35226</bug_id>
          
          <creation_ts>2010-02-21 20:12:48 -0800</creation_ts>
          <short_desc>Cache JavaScript wrappers inline in DOM nodes</short_desc>
          <delta_ts>2010-02-24 20:07:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>192337</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-02-21 20:12:48 -0800</bug_when>
    <thetext>Cache JavaScript wrappers inline in DOM nodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192341</commentid>
    <comment_count>1</comment_count>
      <attachid>49181</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-02-21 20:29:31 -0800</bug_when>
    <thetext>Created attachment 49181
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192342</commentid>
    <comment_count>2</comment_count>
      <attachid>49181</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-02-21 20:34:53 -0800</bug_when>
    <thetext>Comment on attachment 49181
Patch

&gt;  void forgetDOMObject(DOMObject* wrapper, void* objectHandle)
&gt;  {
&gt; +    
&gt;      JSC::JSGlobalData* globalData = Heap::heap(wrapper)-&gt;globalData();

No need for this added blank line.

&gt; -    JSNode* getCachedDOMNodeWrapper(JSC::ExecState*, Document*, Node*);
&gt; +    JSNode* getCachedDOMNodeWrapper(JSC::ExecState*, Node*);

This is defined in JSNodeCustom.h instead of this header. Why?

&gt; +    inline DOMObjectWrapperMap&amp; DOMObjectWrapperMapFor(JSC::ExecState* exec)
&gt; +    {
&gt; +        return currentWorld(exec)-&gt;m_wrappers;
&gt; +    }

In the past we have lowercased even acronyms like DOM here at the start of a function name. Maybe there&apos;s some way to dodge the issue.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192344</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-21 20:46:04 -0800</bug_when>
    <thetext>Attachment 49181 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/297608</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192345</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-21 20:49:07 -0800</bug_when>
    <thetext>Attachment 49181 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/298397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192388</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-02-22 01:28:47 -0800</bug_when>
    <thetext>Committed r55074: &lt;http://trac.webkit.org/changeset/55074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>192393</commentid>
    <comment_count>6</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-02-22 02:33:58 -0800</bug_when>
    <thetext>Reverted my change; it caused some breakage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193601</commentid>
    <comment_count>7</comment_count>
      <attachid>49461</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-02-24 19:21:42 -0800</bug_when>
    <thetext>Created attachment 49461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193602</commentid>
    <comment_count>8</comment_count>
      <attachid>49461</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-02-24 19:31:17 -0800</bug_when>
    <thetext>Comment on attachment 49461
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193607</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-24 19:50:41 -0800</bug_when>
    <thetext>Attachment 49461 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/309288</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193610</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-02-24 19:57:26 -0800</bug_when>
    <thetext>Attachment 49461 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/308324</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>193614</commentid>
    <comment_count>11</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-02-24 20:07:56 -0800</bug_when>
    <thetext>Committed r55215: &lt;http://trac.webkit.org/changeset/55215&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49181</attachid>
            <date>2010-02-21 20:29:31 -0800</date>
            <delta_ts>2010-02-24 19:21:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35226-20100221202930.patch</filename>
            <type>text/plain</type>
            <size>15493</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTA2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMDItMjEgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YWNoZSBKYXZhU2NyaXB0IHdyYXBwZXJzIGlubGluZSBpbiBET00gbm9kZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjI2CisKKyAgICAgICAgOC44
JSBzcGVlZHVwIG9uIERyb21hZW8gRE9NIENvcmUgdGVzdHMuCisgICAgICAgIDMuMyUgc3BlZWR1
cCBvbiBIaXhpZSBET00gQ29yZSB0ZXN0cy4KKyAgICAgICAgCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZvcmdldERPTU5vZGUpOiBD
bGVhciB3cmFwcGVyIHBvaW50ZXIuCisgICAgICAgIChXZWJDb3JlOjpjYWNoZURPTU5vZGVXcmFw
cGVyKTogQ2FjaGUgaW5saW5lIHRvbyBpZiBjYWNoaW5nIGZvciBub3JtYWwgd29ybGQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpET01P
YmplY3RXcmFwcGVyTWFwRm9yKTogCisgICAgICAgICogYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKTogUmVtb3ZlIHVubmVlZGVkIGFyZ3Vt
ZW50IGZyb20gZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIuCisgICAgICAgICogYmluZGluZ3MvanMv
SlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyYXBwZXJJbmxpbmUp
OiBSZW5hbWVkIHZlcnNpb24gb2Ygb3JpZ2luYWwgY3JlYXRlV3JhcHBlci4KKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZVdyYXBwZXIpOiBDYWxsIGNyZWF0ZVdyYXBwZXJJbmxpbmUuIE91dC1vZi1s
aW5lIHZlcnNpb24uCisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKTogQ2FsbCBj
cmVhdGVXcmFwcGVySW5saW5lIGluc3RlYWQgb2YgY3JlYXRlV3JhcHBlci4KKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRD
YWNoZWRET01Ob2RlV3JhcHBlcik6IE1vdmVkIGhlcmUgc28gaXQgY2FuIGJlIGlubGluZWQuCisg
ICAgICAgIChXZWJDb3JlOjp0b0pTKTogTW92ZWQgaGVyZSBzbyBpdCBjYW4gYmUgaW5saW5lZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFdyYXBwYWJsZTo6U2NyaXB0V3JhcHBhYmxlKTogSW1wbGVtZW50IHRoaXMgaW4g
dGhlIG9idmlvdXMKKyAgICAgICAgd2F5IGZvciBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBh
YmxlOjpjbGVhcldyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOiBJbmNsdWRlIEN1c3RvbUhlYWRlciBoZWFhZGVycworICAgICAgICBpbiB0aGUg
aGVhZGVyLCBub3QganVzdCB0aGUgaW1wbCBmaWxlLCBzbyB0aGV5IGNhbiBhZGQgaW5saW5pbmcu
CisgICAgICAgICogZG9tL05vZGUuaWRsOiBBZGQgQ3VzdG9tSGVhZGVyIGRpcmVjdGl2ZS4KKyAg
ICAgICAgCisgICAgICAgIEFkZCBuZXcgZmlsZXMgdG8gYnVpbGQuCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5w
cm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisKIDIwMTAtMDIt
MDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiA1NTA2MSkKKysrIFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTQzNyw2ICs0MzcsNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20u
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUN1c3RvbS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRp
dGlvbi5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmgg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBcCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQko
cmV2aXNpb24gNTUwNjEpCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpA
QCAtNTY4LDYgKzU2OCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNOYW1lZE5vZGVz
Q29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAnLAorICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDU1MDYxKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMTAxOCw2ICsxMDE4LDcgQEAgSEVBREVS
UyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oIFwKICAgICBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNo
YW5uZWxDb25zdHJ1Y3Rvci5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBcCiAg
ICAgYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggXAogICAgIGJpbmRpbmdzL2pz
L0pTT3B0aW9uQ29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShy
ZXZpc2lvbiA1NTA2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM4MDgwLDYgKzM4MDgwLDEwIEBACiAJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNOb2RlQ3VzdG9tLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJ
CQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNOb2RlRmlsdGVy
Q29uZGl0aW9uLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDU1MDYxKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjEs
MTEgKzIyMSw2IEBAIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRIYXNoVGFibGVGb3JHbG8KICAg
ICByZXR1cm4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwOjptYXBGb3IoZ2xvYmFsRGF0YSkuZ2V0KHN0
YXRpY1RhYmxlKTsKIH0KIAotc3RhdGljIGlubGluZSBET01PYmplY3RXcmFwcGVyTWFwJiBET01P
YmplY3RXcmFwcGVyTWFwRm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBj
dXJyZW50V29ybGQoZXhlYyktPm1fd3JhcHBlcnM7Ci19Ci0KIGJvb2wgaGFzQ2FjaGVkRE9NT2Jq
ZWN0V3JhcHBlclVuY2hlY2tlZChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQqIG9iamVj
dEhhbmRsZSkKIHsKICAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxkSXRlcmF0b3Igd29ybGRJdGVy
KGdsb2JhbERhdGEpOyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7CkBAIC0yNjgsMTUgKzI2Myw5
IEBAIGJvb2wgaGFzQ2FjaGVkRE9NTm9kZVdyYXBwZXJVbmNoZWNrZWQoRG8KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLUpTTm9kZSogZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3Rh
dGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoZG9j
dW1lbnQpCi0gICAgICAgIHJldHVybiBkb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRX
b3JsZChleGVjKSktPmdldChub2RlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4o
RE9NT2JqZWN0V3JhcHBlck1hcEZvcihleGVjKS5nZXQobm9kZSkpOwotfQotCiB2b2lkIGZvcmdl
dERPTU9iamVjdChET01PYmplY3QqIHdyYXBwZXIsIHZvaWQqIG9iamVjdEhhbmRsZSkKIHsKKyAg
ICAKICAgICBKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IEhlYXA6OmhlYXAod3JhcHBl
ciktPmdsb2JhbERhdGEoKTsKIAogICAgIC8vIENoZWNrIHRoZSBub3JtYWwgd29ybGQgZmlyc3Qh
CkBAIC0zMDMsNiArMjkyLDkgQEAgdm9pZCBmb3JnZXRET01Ob2RlKEpTTm9kZSogd3JhcHBlciwg
Tm9kZQogICAgICAgICBmb3JnZXRET01PYmplY3Qod3JhcHBlciwgbm9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CisgICAgCisgICAgaWYgKG5vZGUtPndyYXBwZXIoKSA9PSB3cmFwcGVyKQor
ICAgICAgICBub2RlLT5jbGVhcldyYXBwZXIoKTsKIAogICAgIC8vIFdlIGNhbid0IGd1YXJhbnRl
ZSB0aGF0IGEgd3JhcHBlciBpcyBpbiB0aGUgY2FjaGUgd2hlbiBpdCB1bmNhY2hlcyBpdHNlbGYs
CiAgICAgLy8gc2luY2UgYSBuZXcgd3JhcHBlciBtYXkgYmUgY2FjaGVkIGJlZm9yZSB0aGUgb2xk
IHdyYXBwZXIncyBkZXN0cnVjdG9yIHJ1bnMuCkBAIC0zMTYsMTMgKzMwOCwxNSBAQCB2b2lkIGZv
cmdldERPTU5vZGUoSlNOb2RlKiB3cmFwcGVyLCBOb2RlCiAKIHZvaWQgY2FjaGVET01Ob2RlV3Jh
cHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2Rl
LCBKU05vZGUqIHdyYXBwZXIpCiB7Ci0gICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICB3aWxs
Q2FjaGVXcmFwcGVyKHdyYXBwZXIpOwotICAgICAgICBET01PYmplY3RXcmFwcGVyTWFwRm9yKGV4
ZWMpLnNldChub2RlLCB3cmFwcGVyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICB3aWxs
Q2FjaGVXcmFwcGVyKHdyYXBwZXIpOwotICAgIGRvY3VtZW50LT5nZXRXcmFwcGVyQ2FjaGUoY3Vy
cmVudFdvcmxkKGV4ZWMpKS0+c2V0KG5vZGUsIHdyYXBwZXIpOworCisgICAgaWYgKCFkb2N1bWVu
dCkKKyAgICAgICAgRE9NT2JqZWN0V3JhcHBlck1hcEZvcihleGVjKS5zZXQobm9kZSwgd3JhcHBl
cik7CisgICAgZWxzZQorICAgICAgICBkb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRX
b3JsZChleGVjKSktPnNldChub2RlLCB3cmFwcGVyKTsKKworICAgIGlmIChjdXJyZW50V29ybGQo
ZXhlYyktPmlzTm9ybWFsKCkpCisgICAgICAgIG5vZGUtPnNldFdyYXBwZXIod3JhcHBlcik7CiB9
CiAKIHZvaWQgZm9yZ2V0QWxsRE9NTm9kZXNGb3JEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQp
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDU1MDYxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1
LDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB2b2lkIGZvcmdldERPTU5vZGUo
SlNOb2RlKiB3cmFwcGVyLCBOb2RlKiBub2RlLCBEb2N1bWVudCogZG9jdW1lbnQpOwogICAgIHZv
aWQgZm9yZ2V0RE9NT2JqZWN0KERPTU9iamVjdCogd3JhcHBlciwgdm9pZCogb2JqZWN0SGFuZGxl
KTsKIAotICAgIEpTTm9kZSogZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUq
LCBEb2N1bWVudCosIE5vZGUqKTsKKyAgICBKU05vZGUqIGdldENhY2hlZERPTU5vZGVXcmFwcGVy
KEpTQzo6RXhlY1N0YXRlKiwgTm9kZSopOwogICAgIHZvaWQgY2FjaGVET01Ob2RlV3JhcHBlcihK
U0M6OkV4ZWNTdGF0ZSosIERvY3VtZW50KiwgTm9kZSosIEpTTm9kZSogd3JhcHBlcik7CiAgICAg
dm9pZCBmb3JnZXRBbGxET01Ob2Rlc0ZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAgdm9pZCBm
b3JnZXRXb3JsZE9mRE9NTm9kZXNGb3JEb2N1bWVudChEb2N1bWVudCosIERPTVdyYXBwZXJXb3Js
ZCopOwpAQCAtNDQ2LDYgKzQ0NiwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJl
dHVybiBqc1N0cmluZ1Nsb3dDYXNlKGV4ZWMsIHN0cmluZ0NhY2hlLCBzdHJpbmdJbXBsKTsKICAg
ICB9CiAKKyAgICBpbmxpbmUgRE9NT2JqZWN0V3JhcHBlck1hcCYgRE9NT2JqZWN0V3JhcHBlck1h
cEZvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYykKKyAgICB7CisgICAgICAgIHJldHVybiBjdXJyZW50
V29ybGQoZXhlYyktPm1fd3JhcHBlcnM7CisgICAgfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBKU0RPTUJpbmRpbmdfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RvY3VtZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiA1NTA2MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNEb2N1bWVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAg
SlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYQogICAgIGlmICghZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIERPTU9iamVjdCogd3JhcHBlciA9
IGdldENhY2hlZERPTU5vZGVXcmFwcGVyKGV4ZWMsIGRvY3VtZW50LCBkb2N1bWVudCk7CisgICAg
RE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoZXhlYywgZG9jdW1l
bnQpOwogICAgIGlmICh3cmFwcGVyKQogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTUwNjEpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIEpTTm9kZTo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYg
bWFyCiAgICAgICAgIG1hcmtET01Ob2RlV3JhcHBlcihtYXJrU3RhY2ssIG1faW1wbC0+ZG9jdW1l
bnQoKSwgbm9kZVRvTWFyayk7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY3Jl
YXRlV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIE5vZGUqIG5vZGUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0ZVdyYXBw
ZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQoIWdldENhY2hl
ZERPTU5vZGVXcmFwcGVyKGV4ZWMsIG5vZGUtPmRvY3VtZW50KCksIG5vZGUpKTsKQEAgLTIyOCwy
NSArMjI4LDE4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY3JlYXRlV3JhcHAKIAog
ICAgIHJldHVybiB3cmFwcGVyOyAgICAKIH0KLSAgICAKLUpTVmFsdWUgdG9KU05ld2x5Q3JlYXRl
ZChFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUq
IG5vZGUpCisKK0pTVmFsdWUgY3JlYXRlV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFub2RlKQot
ICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgCi0gICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXIo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBlcklubGlu
ZShleGVjLCBnbG9iYWxPYmplY3QsIG5vZGUpOwogfQogICAgIAotSlNWYWx1ZSB0b0pTKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZSogbm9kZSkK
K0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBKU05vZGUqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01O
b2RlV3JhcHBlcihleGVjLCBub2RlLT5kb2N1bWVudCgpLCBub2RlKTsKLSAgICBpZiAod3JhcHBl
cikKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlcihl
eGVjLCBnbG9iYWxPYmplY3QsIG5vZGUpOworICAgIAorICAgIHJldHVybiBjcmVhdGVXcmFwcGVy
SW5saW5lKGV4ZWMsIGdsb2JhbE9iamVjdCwgbm9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTTm9kZUN1c3RvbV9oCisj
ZGVmaW5lIEpTTm9kZUN1c3RvbV9oCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlLmg+CisjaW5jbHVkZSA8d3RmL0Fsd2F5c0lubGlu
ZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBKU05vZGUqIGdldENhY2hlZERP
TU5vZGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBOb2RlKiBub2RlKQoreworICAgIGlm
IChjdXJyZW50V29ybGQoZXhlYyktPmlzTm9ybWFsKCkpCisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxKU05vZGUqPihub2RlLT53cmFwcGVyKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxK
U05vZGUqPihET01PYmplY3RXcmFwcGVyTWFwRm9yKGV4ZWMpLmdldChub2RlKSk7Cit9CisKK0pT
Qzo6SlNWYWx1ZSBjcmVhdGVXcmFwcGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBOb2RlKik7CisKK2lubGluZSBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZSogbm9kZSkKK3sKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOworCisgICAgSlNOb2Rl
KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoZXhlYywgbm9kZSk7CisgICAgaWYg
KHdyYXBwZXIpCisgICAgICAgIHJldHVybiB3cmFwcGVyOworCisgICAgcmV0dXJuIGNyZWF0ZVdy
YXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBub2RlKTsKK30KKworfQorCisjZW5kaWYgLy8gSlNE
T01Ob2RlQ3VzdG9tX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAko
cmV2aXNpb24gNTUwNjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMywyNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIERPTU9iamVjdDsKKwogY2xhc3MgU2NyaXB0V3JhcHBhYmxlIHsKIHB1YmxpYzoK
LSAgICBTY3JpcHRXcmFwcGFibGUoKSB7IH0KKyAgICBTY3JpcHRXcmFwcGFibGUoKSA6IG1fd3Jh
cHBlcigpIHsgfQorICAgIAorICAgIERPTU9iamVjdCogd3JhcHBlcigpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV93cmFwcGVyOworICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFdyYXBw
ZXIoRE9NT2JqZWN0KiB3cmFwcGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHdyYXBwZXIpOwor
ICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOworICAgIH0KKyAgICAKKyAgICB2b2lkIGNsZWFy
V3JhcHBlcigpIHsgbV93cmFwcGVyID0gMDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBET01PYmpl
Y3QqIG1fd3JhcHBlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gNTUwNjEp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBAIG15ICR3cml0ZURlcGVuZGVuY2llcyA9IDA7CiBteSBA
aGVhZGVyQ29udGVudEhlYWRlciA9ICgpOwogbXkgQGhlYWRlckNvbnRlbnQgPSAoKTsKIG15ICVo
ZWFkZXJJbmNsdWRlcyA9ICgpOworbXkgJWhlYWRlclRyYWlsaW5nSW5jbHVkZXMgPSAoKTsKIAog
bXkgQGltcGxDb250ZW50SGVhZGVyID0gKCk7CiBteSBAaW1wbENvbnRlbnQgPSAoKTsKQEAgLTU1
MSw3ICs1NTIsOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIFByb3RvdHlwZQogICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3Rv
dHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpIHVubGVzcyAo
JGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9
KTsKIAotICAgICRpbXBsSW5jbHVkZXN7IiR7Y2xhc3NOYW1lfUN1c3RvbS5oIn0gPSAxIGlmICRk
YXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUhlYWRlciJ9IHx8ICRkYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0gfHwgJGRhdGFOb2Rl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRGVsZWdhdGluZ1B1dEZ1bmN0aW9uIn07CisgICAgJGhl
YWRlclRyYWlsaW5nSW5jbHVkZXN7IiR7Y2xhc3NOYW1lfUN1c3RvbS5oIn0gPSAxIGlmICRkYXRh
Tm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUhlYWRlciJ9OworCisgICAgJGltcGxJ
bmNsdWRlc3siJHtjbGFzc05hbWV9Q3VzdG9tLmgifSA9IDEgaWYgISRkYXRhTm9kZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUhlYWRlciJ9ICYmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJDdXN0b21QdXRGdW5jdGlvbiJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkRlbGVnYXRpbmdQdXRGdW5jdGlvbiJ9KTsKIAogICAgIG15ICRoYXNHZXR0ZXIg
PSAkbnVtQXR0cmlidXRlcyA+IDAgCiAgICAgICAgICAgICAgICAgIHx8ICEoJGRhdGFOb2RlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0KQEAgLTIyNDYsMTIgKzIyNDks
MjMgQEAgc3ViIFdyaXRlRGF0YQogICAgICAgICB9CiAKICAgICAgICAgcHJpbnQgJEhFQURFUiBA
aGVhZGVyQ29udGVudDsKKworICAgICAgICBAaW5jbHVkZXMgPSAoKTsKKyAgICAgICAgZm9yZWFj
aCBteSAkaW5jbHVkZSAoa2V5cyAlaGVhZGVyVHJhaWxpbmdJbmNsdWRlcykgeworICAgICAgICAg
ICAgJGluY2x1ZGUgPSAiXCIkaW5jbHVkZVwiIiB1bmxlc3MgJGluY2x1ZGUgPX4gL15bIjxdLzsg
IyAiCisgICAgICAgICAgICBwdXNoIEBpbmNsdWRlcywgJGluY2x1ZGU7CisgICAgICAgIH0KKyAg
ICAgICAgZm9yZWFjaCBteSAkaW5jbHVkZSAoc29ydCBAaW5jbHVkZXMpIHsKKyAgICAgICAgICAg
IHByaW50ICRIRUFERVIgIiNpbmNsdWRlICRpbmNsdWRlXG4iOworICAgICAgICB9CisKICAgICAg
ICAgY2xvc2UoJEhFQURFUik7CiAgICAgICAgIHVuZGVmKCRIRUFERVIpOwogCiAgICAgICAgIEBo
ZWFkZXJDb250ZW50SGVhZGVyID0gKCk7CiAgICAgICAgIEBoZWFkZXJDb250ZW50ID0gKCk7CiAg
ICAgICAgICVoZWFkZXJJbmNsdWRlcyA9ICgpOworICAgICAgICAlaGVhZGVyVHJhaWxpbmdJbmNs
dWRlcyA9ICgpOwogICAgIH0KIAogICAgIGlmIChkZWZpbmVkKCRERVBTKSkgewpJbmRleDogV2Vi
Q29yZS9kb20vTm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZS5pZGwJKHJl
dmlzaW9uIDU1MDYxKQorKysgV2ViQ29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTIxLDYgKzIxLDcgQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCisgICAgICAg
IEN1c3RvbUhlYWRlciwKICAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgICAgICBDdXN0
b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUsCiAgICAgICAgIEN1c3RvbVRvSlMsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>49461</attachid>
            <date>2010-02-24 19:21:42 -0800</date>
            <delta_ts>2010-02-24 19:31:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35226-20100224192141.patch</filename>
            <type>text/plain</type>
            <size>23794</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NTIwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDEgQEAKKzIwMTAtMDItMjQgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
YWNoZSBKYXZhU2NyaXB0IHdyYXBwZXJzIGlubGluZSBpbiBET00gbm9kZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1MjI2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83NjY0MjAyPgorICAgICAgICAKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NT2JqZWN0V3JhcHBlcik6CisgICAgICAgIChXZWJDb3Jl
Ojpmb3JnZXRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NTm9kZVdyYXBwZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6ZG9tT2JqZWN0V3JhcHBlck1hcEZvcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Z2V0V3JhcHBlckNhY2hlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpET01PYmplY3Q6OkRPTU9iamVjdCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVdyYXBwZXJJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlV3JhcHBlcik6CisgICAg
ICAgIChXZWJDb3JlOjp0b0pTTmV3bHlDcmVhdGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVDdXN0b20uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRET01Ob2Rl
V3JhcHBlcik6CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRXcmFwcGFibGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6
U2NyaXB0V3JhcHBhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFdyYXBwYWJsZTo6d3Jh
cHBlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRXcmFwcGFibGU6OnNldFdyYXBwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0V3JhcHBhYmxlOjpjbGVhcldyYXBwZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAqIGRvbS9O
b2RlLmlkbDoKKwogMjAxMC0wMi0yNCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFdlYkNvcmUvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNp
b24gNTUxOTUpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0z
ODAsNiArMzgwLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIFwKKwlX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRG
cmFnbWVudEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9t
LmNwcCBcCkBAIC00MzcsNiArNDM4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDb25kaXRpb24uY3BwIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTTm9kZUZpbHRlckNvbmRpdGlvbi5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDU1MTk1KQorKysgV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUxNCw2ICs1MTQsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9N
V3JhcHBlci5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCcsCkBAIC01NjgsNiArNTY5LDcg
QEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNOb2RlQ3VzdG9tLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRl
ckNvbmRpdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0
b20uY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNTUxOTUpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDE3LDYgKzEwMTcsNyBAQCBIRUFERVJTICs9IFwKICAgICBiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dD
dXN0b20uaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIFwKKyAgICBiaW5k
aW5ncy9qcy9KU0RPTVdyYXBwZXIuaCBcCiAgICAgYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmggXAogICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRTb3VyY2VDb25zdHJ1Y3Rvci5oIFwKICAgICBi
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmggXApAQCAtMTAzMCw2ICsxMDMxLDcgQEAgSEVBREVS
UyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oIFwKICAgICBiaW5k
aW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTTWVzc2FnZUNo
YW5uZWxDb25zdHJ1Y3Rvci5oIFwKKyAgICBiaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaCBcCiAg
ICAgYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ29uZGl0aW9uLmggXAogICAgIGJpbmRpbmdzL2pz
L0pTT3B0aW9uQ29uc3RydWN0b3IuaCBcCiAgICAgYmluZGluZ3MvanMvSlNQbHVnaW5FbGVtZW50
RnVuY3Rpb25zLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShy
ZXZpc2lvbiA1NTE5NSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTM1OTYwLDYgKzM1OTYwLDEwIEBACiAJCQkJCT4NCiAJCQkJPC9G
aWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RP
TVdyYXBwZXIuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVdpbmRvd1NoZWxsLmNwcCINCiAJCQkJCT4N
CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTM4MDg4LDYgKzM4MDkyLDEwIEBACiAJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNOb2RlQ3VzdG9tLmgiDQorCQkJCQk+DQorCQkJ
CTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcCINCiAJCQkJCT4NCiAJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiA1NTE5NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjM4LDYgKzEyMzgsNyBAQAogCQk2NURGMzIzQjA5RDFE
RTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1REYzMjM1MDlEMURFNjUwMDBCRTMyNSAvKiBKU0Nh
bnZhc1BhdHRlcm4uY3BwICovOyB9OwogCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlND
YW52YXNQYXR0ZXJuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NURGMzIzNjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggKi87IH07
CiAJCTY1REYzMjYxMDlEMUUxOTkwMDBCRTMyNSAvKiBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgx
QUYwOUQxNEVFNjAwMEU2MUQ3IC8qIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgKi87IH07
CisJCTY1RTBFOTQ0MTEzM0M4OUYwMEI0Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1RTBFOTQzMTEzM0M4OUYwMEI0
Q0IxMCAvKiBKU0RPTVdyYXBwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk2NUZFQTg2OTA5ODMzQURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUZFQTg2ODA5ODMz
QURFMDBCRUQ0QUIgLyogUGFnZS5jcHAgKi87IH07CiAJCTZFMjFDNkMwMTEyNjMzODUwMEE3QkUw
MiAvKiBHcmFwaGljc0NvbnRleHQzRC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2RTIxQzZCRjExMjYzMzg1MDBBN0JFMDIgLyogR3JhcGhpY3NDb250
ZXh0M0QuY3BwICovOyB9OwogCQk2RTIxQzZDMjExMjYzMzk5MDBBN0JFMDIgLyogR3JhcGhpY3ND
b250ZXh0M0RDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2RTIxQzZDMTExMjYzMzk5MDBBN0JFMDIgLyogR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAg
Ki87IH07CkBAIC02NjU0LDYgKzY2NTUsNyBAQAogCQk2NURGMzIzNDA5RDFERTY1MDAwQkUzMjUg
LyogSlNDYW52YXNHcmFkaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDYW52YXNHcmFkaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NURGMzIz
NTA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk2NURGMzIzNjA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0
ZXJuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NhbnZhc1BhdHRlcm4u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVFMEU5NDMxMTMzQzg5RjAwQjRDQjEw
IC8qIEpTRE9NV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RP
TVdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjVGODA2OTcwNTREOUY4
NjAwOEJGNzc2IC8qIEJsb2NrRXhjZXB0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJsb2NrRXhjZXB0aW9ucy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1
RkVBODY4MDk4MzNBREUwMEJFRDRBQiAvKiBQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkUyMUM2QkYxMTI2MzM4NTAwQTdCRTAyIC8qIEdyYXBoaWNzQ29udGV4dDNELmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNzQ29udGV4dDNELmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NjA1LDYgKzE0NjA3LDcgQEAKIAkJQkMxQTM3
OTMwOTdDNkZCMTAwMTlGM0Q4IC8qIGpzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk2NUUwRTk0MzExMzNDODlGMDBCNENCMTAgLyogSlNET01XcmFwcGVy
LmggKi8sCiAJCQkJQkNDRTU4QTcxMDYxRTgyRjAwOEZCMzVBIC8qIENhbGxiYWNrIE9iamVjdHMg
Ki8sCiAJCQkJQkNDRTU4QjQxMDYxRTkyNTAwOEZCMzVBIC8qIENvbnN0cnVjdG9ycyAqLywKIAkJ
CQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovLApAQCAtMTg1NDMsNiArMTg1
NDYsNyBAQAogCQkJCTlGMkEzMjJFMTEyNUEwQTIwMDNDMzA1NiAvKiBKYXZhU2NyaXB0UHJvZmls
ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBT
Y3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QUZENEZGNDExMzI3N0I2MDAz
NUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjVFMEU5
NDQxMTMzQzg5RjAwQjRDQjEwIC8qIEpTRE9NV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTk2MjI5N0ExMTMzRUZFMjAwREM0Q0JCIC8qIEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiA1
NTE5NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODAsMTcgKzgwLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHR5cGVk
ZWYgRG9jdW1lbnQ6OkpTV3JhcHBlckNhY2hlIEpTV3JhcHBlckNhY2hlOwogdHlwZWRlZiBEb2N1
bWVudDo6SlNXcmFwcGVyQ2FjaGVNYXAgSlNXcmFwcGVyQ2FjaGVNYXA7CiAKLWlubGluZSBKU1dy
YXBwZXJDYWNoZSogRG9jdW1lbnQ6OmdldFdyYXBwZXJDYWNoZShET01XcmFwcGVyV29ybGQqIHdv
cmxkKQotewotICAgIGlmICh3b3JsZC0+aXNOb3JtYWwoKSkgewotICAgICAgICBpZiAoSlNXcmFw
cGVyQ2FjaGUqIHdyYXBwZXJDYWNoZSA9IG1fbm9ybWFsV29ybGRXcmFwcGVyQ2FjaGUpCi0gICAg
ICAgICAgICByZXR1cm4gd3JhcHBlckNhY2hlOwotICAgICAgICBBU1NFUlQoIW1fd3JhcHBlckNh
Y2hlTWFwLmNvbnRhaW5zKHdvcmxkKSk7Ci0gICAgfSBlbHNlIGlmIChKU1dyYXBwZXJDYWNoZSog
d3JhcHBlckNhY2hlID0gbV93cmFwcGVyQ2FjaGVNYXAuZ2V0KHdvcmxkKSkKLSAgICAgICAgcmV0
dXJuIHdyYXBwZXJDYWNoZTsKLSAgICByZXR1cm4gY3JlYXRlV3JhcHBlckNhY2hlKHdvcmxkKTsK
LX0KLQogLy8gRm9yIGRlYnVnZ2luZywga2VlcCBhIHNldCBvZiB3cmFwcGVycyBjdXJyZW50bHkg
Y2FjaGVkLCBhbmQgY2hlY2sgdGhhdAogLy8gYWxsIGFyZSB1bmNhY2hlZCBiZWZvcmUgdGhleSBh
cmUgZGVzdHJveWVkLiBUaGlzIGhlbHBzIHVzIGNhdGNoIGJ1Z3MgbGlrZToKIC8vICAgICAtIHdy
YXBwZXJzIGJlaW5nIGRlbGV0ZWQgd2l0aG91dCBiZWluZyByZW1vdmVkIGZyb20gdGhlIGNhY2hl
CkBAIC0yMjEsMTEgKzIxMCw2IEBAIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRIYXNoVGFibGVG
b3JHbG8KICAgICByZXR1cm4gRE9NT2JqZWN0SGFzaFRhYmxlTWFwOjptYXBGb3IoZ2xvYmFsRGF0
YSkuZ2V0KHN0YXRpY1RhYmxlKTsKIH0KIAotc3RhdGljIGlubGluZSBET01PYmplY3RXcmFwcGVy
TWFwJiBET01PYmplY3RXcmFwcGVyTWFwRm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAg
IHJldHVybiBjdXJyZW50V29ybGQoZXhlYyktPm1fd3JhcHBlcnM7Ci19Ci0KIGJvb2wgaGFzQ2Fj
aGVkRE9NT2JqZWN0V3JhcHBlclVuY2hlY2tlZChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZv
aWQqIG9iamVjdEhhbmRsZSkKIHsKICAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxkSXRlcmF0b3Ig
d29ybGRJdGVyKGdsb2JhbERhdGEpOyB3b3JsZEl0ZXI7ICsrd29ybGRJdGVyKSB7CkBAIC0yNDYs
MTMgKzIzMCwxMyBAQCBib29sIGhhc0NhY2hlZERPTU9iamVjdFdyYXBwZXIoSlNHbG9iYWxECiAK
IERPTU9iamVjdCogZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhl
Yywgdm9pZCogb2JqZWN0SGFuZGxlKSAKIHsKLSAgICByZXR1cm4gRE9NT2JqZWN0V3JhcHBlck1h
cEZvcihleGVjKS5nZXQob2JqZWN0SGFuZGxlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0V3JhcHBl
ck1hcEZvcihleGVjKS5nZXQob2JqZWN0SGFuZGxlKTsKIH0KIAogdm9pZCBjYWNoZURPTU9iamVj
dFdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIG9iamVjdEhhbmRsZSwgRE9NT2Jq
ZWN0KiB3cmFwcGVyKSAKIHsKICAgICB3aWxsQ2FjaGVXcmFwcGVyKHdyYXBwZXIpOwotICAgIERP
TU9iamVjdFdyYXBwZXJNYXBGb3IoZXhlYykuc2V0KG9iamVjdEhhbmRsZSwgd3JhcHBlcik7Cisg
ICAgZG9tT2JqZWN0V3JhcHBlck1hcEZvcihleGVjKS5zZXQob2JqZWN0SGFuZGxlLCB3cmFwcGVy
KTsKIH0KIAogYm9vbCBoYXNDYWNoZWRET01Ob2RlV3JhcHBlclVuY2hlY2tlZChEb2N1bWVudCog
ZG9jdW1lbnQsIE5vZGUqIG5vZGUpCkBAIC0yNjgsMTMgKzI1Miw2IEBAIGJvb2wgaGFzQ2FjaGVk
RE9NTm9kZVdyYXBwZXJVbmNoZWNrZWQoRG8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUpTTm9k
ZSogZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50
KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybiBkb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRXb3JsZChleGVjKSktPmdldChu
b2RlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oRE9NT2JqZWN0V3JhcHBlck1h
cEZvcihleGVjKS5nZXQobm9kZSkpOwotfQotCiB2b2lkIGZvcmdldERPTU9iamVjdChET01PYmpl
Y3QqIHdyYXBwZXIsIHZvaWQqIG9iamVjdEhhbmRsZSkKIHsKICAgICBKU0M6OkpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9IEhlYXA6OmhlYXAod3JhcHBlciktPmdsb2JhbERhdGEoKTsKQEAgLTI5
OSwxMCArMjc2LDEyIEBAIHZvaWQgZm9yZ2V0RE9NT2JqZWN0KERPTU9iamVjdCogd3JhcHBlciwK
IAogdm9pZCBmb3JnZXRET01Ob2RlKEpTTm9kZSogd3JhcHBlciwgTm9kZSogbm9kZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogeworICAgIG5vZGUtPmNsZWFyV3JhcHBlcih3cmFwcGVyKTsKKwogICAg
IGlmICghZG9jdW1lbnQpIHsKICAgICAgICAgZm9yZ2V0RE9NT2JqZWN0KHdyYXBwZXIsIG5vZGUp
OwogICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIH0gICAgCiAKICAgICAvLyBXZSBjYW4ndCBn
dWFyYW50ZWUgdGhhdCBhIHdyYXBwZXIgaXMgaW4gdGhlIGNhY2hlIHdoZW4gaXQgdW5jYWNoZXMg
aXRzZWxmLAogICAgIC8vIHNpbmNlIGEgbmV3IHdyYXBwZXIgbWF5IGJlIGNhY2hlZCBiZWZvcmUg
dGhlIG9sZCB3cmFwcGVyJ3MgZGVzdHJ1Y3RvciBydW5zLgpAQCAtMzE2LDEzICsyOTUsMTUgQEAg
dm9pZCBmb3JnZXRET01Ob2RlKEpTTm9kZSogd3JhcHBlciwgTm9kZQogCiB2b2lkIGNhY2hlRE9N
Tm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgTm9k
ZSogbm9kZSwgSlNOb2RlKiB3cmFwcGVyKQogewotICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAg
ICAgd2lsbENhY2hlV3JhcHBlcih3cmFwcGVyKTsKLSAgICAgICAgRE9NT2JqZWN0V3JhcHBlck1h
cEZvcihleGVjKS5zZXQobm9kZSwgd3JhcHBlcik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAg
ICAgd2lsbENhY2hlV3JhcHBlcih3cmFwcGVyKTsKLSAgICBkb2N1bWVudC0+Z2V0V3JhcHBlckNh
Y2hlKGN1cnJlbnRXb3JsZChleGVjKSktPnNldChub2RlLCB3cmFwcGVyKTsKKworICAgIGlmICgh
ZG9jdW1lbnQpCisgICAgICAgIGRvbU9iamVjdFdyYXBwZXJNYXBGb3IoZXhlYykuc2V0KG5vZGUs
IHdyYXBwZXIpOworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnQtPmdldFdyYXBwZXJDYWNoZShj
dXJyZW50V29ybGQoZXhlYykpLT5zZXQobm9kZSwgd3JhcHBlcik7CisKKyAgICBpZiAoY3VycmVu
dFdvcmxkKGV4ZWMpLT5pc05vcm1hbCgpKQorICAgICAgICBub2RlLT5zZXRXcmFwcGVyKHdyYXBw
ZXIpOwogfQogCiB2b2lkIGZvcmdldEFsbERPTU5vZGVzRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50KQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiA1NTE5
NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgSlNET01CaW5kaW5nX2gKIAogI2luY2x1ZGUgIkpT
RE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAi
SlNTVkdDb250ZXh0Q2FjaGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvQ29tcGxldGlvbi5oPgpAQCAtNTIsMjEgKzUzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIGNsYXNzIFNWR0VsZW1lbnQ7CiAjZW5kaWYKIAotICAgIC8vIEJhc2UgY2xhc3MgZm9y
IGFsbCBvYmplY3RzIGluIHRoaXMgYmluZGluZyBleGNlcHQgV2luZG93LgotICAgIGNsYXNzIERP
TU9iamVjdCA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IGV4cGxpY2l0IERPTU9iamVjdChOb25OdWxsUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZT4gc3Ry
dWN0dXJlKSAKLSAgICAgICAgICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQotICAgICAgICB7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRv
ciYsIGJvb2wpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICB2aXJ0dWFsIH5ET01PYmplY3Qo
KTsKLSNlbmRpZgotICAgIH07Ci0KICAgICAvLyBGSVhNRTogVGhpcyBjbGFzcyBzaG91bGQgY29s
bGFwc2UgaW50byBET01PYmplY3Qgb25jZSBhbGwgRE9NT2JqZWN0cyBhcmUKICAgICAvLyB1cGRh
dGVkIHRvIHN0b3JlIGEgZ2xvYmFsT2JqZWN0IHBvaW50ZXIuCiAgICAgY2xhc3MgRE9NT2JqZWN0
V2l0aEdsb2JhbFBvaW50ZXIgOiBwdWJsaWMgRE9NT2JqZWN0IHsKQEAgLTQ0Niw2ICs0MzIsMjQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICByZXR1cm4ganNTdHJpbmdTbG93Q2FzZShl
eGVjLCBzdHJpbmdDYWNoZSwgc3RyaW5nSW1wbCk7CiAgICAgfQogCisgICAgaW5saW5lIERPTU9i
amVjdFdyYXBwZXJNYXAmIGRvbU9iamVjdFdyYXBwZXJNYXBGb3IoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCisgICAgeworICAgICAgICByZXR1cm4gY3VycmVudFdvcmxkKGV4ZWMpLT5tX3dyYXBwZXJz
OworICAgIH0KKworCisKKyAgICBpbmxpbmUgRG9jdW1lbnQ6OkpTV3JhcHBlckNhY2hlKiBEb2N1
bWVudDo6Z2V0V3JhcHBlckNhY2hlKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCisgICAgeworICAg
ICAgICBpZiAod29ybGQtPmlzTm9ybWFsKCkpIHsKKyAgICAgICAgICAgIGlmIChEb2N1bWVudDo6
SlNXcmFwcGVyQ2FjaGUqIHdyYXBwZXJDYWNoZSA9IG1fbm9ybWFsV29ybGRXcmFwcGVyQ2FjaGUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXJDYWNoZTsKKyAgICAgICAgICAgIEFTU0VS
VCghbV93cmFwcGVyQ2FjaGVNYXAuY29udGFpbnMod29ybGQpKTsKKyAgICAgICAgfSBlbHNlIGlm
IChEb2N1bWVudDo6SlNXcmFwcGVyQ2FjaGUqIHdyYXBwZXJDYWNoZSA9IG1fd3JhcHBlckNhY2hl
TWFwLmdldCh3b3JsZCkpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlckNhY2hlOworICAgICAg
ICByZXR1cm4gY3JlYXRlV3JhcHBlckNhY2hlKHdvcmxkKTsKKyAgICB9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEpTRE9NQmluZGluZ19oCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV3JhcHBlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogIENvcHly
aWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVs
IFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CisgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdy
aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8K
KworI2lmbmRlZiBKU0RPTVdyYXBwZXJfaAorI2RlZmluZSBKU0RPTVdyYXBwZXJfaAorCisjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CisvLyBCYXNlIGNsYXNzIGZvciBhbGwgb2JqZWN0cyBpbiB0aGlzIGJpbmRpbmcgZXhjZXB0IFdp
bmRvdy4KK2NsYXNzIERPTU9iamVjdCA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsKK3Byb3RlY3Rl
ZDoKKyAgICBleHBsaWNpdCBET01PYmplY3QoTm9uTnVsbFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1
cmU+IHN0cnVjdHVyZSkgCisgICAgICAgIDogSlNPYmplY3Qoc3RydWN0dXJlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wp
OworCisjaWZuZGVmIE5ERUJVRworICAgIHZpcnR1YWwgfkRPTU9iamVjdCgpOworI2VuZGlmCit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU0RPTVdyYXBwZXJfaApJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkocmV2aXNpb24gNTUxOTUpCisr
KyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE3Miw3ICsxNzIsNyBAQCB2b2lkIEpTTm9kZTo6bWFya0NoaWxkcmVuKE1hcmtT
dGFjayYgbWFyCiAgICAgICAgIG1hcmtET01Ob2RlV3JhcHBlcihtYXJrU3RhY2ssIG1faW1wbC0+
ZG9jdW1lbnQoKSwgbm9kZVRvTWFyayk7CiB9CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgY3JlYXRlV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIE5vZGUqIG5vZGUpCitzdGF0aWMgQUxXQVlTX0lOTElORSBKU1ZhbHVlIGNyZWF0
ZVdyYXBwZXJJbmxpbmUoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVChub2RlKTsKICAgICBBU1NFUlQoIWdl
dENhY2hlZERPTU5vZGVXcmFwcGVyKGV4ZWMsIG5vZGUtPmRvY3VtZW50KCksIG5vZGUpKTsKQEAg
LTIyOCwyNSArMjI4LDE4IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY3JlYXRlV3Jh
cHAKIAogICAgIHJldHVybiB3cmFwcGVyOyAgICAKIH0KLSAgICAKLUpTVmFsdWUgdG9KU05ld2x5
Q3JlYXRlZChFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vZGUqIG5vZGUpCisKK0pTVmFsdWUgY3JlYXRlV3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKCFu
b2RlKQotICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0gICAgCi0gICAgcmV0dXJuIGNyZWF0ZVdy
YXBwZXIoZXhlYywgZ2xvYmFsT2JqZWN0LCBub2RlKTsKKyAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cklubGluZShleGVjLCBnbG9iYWxPYmplY3QsIG5vZGUpOwogfQogICAgIAotSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZSog
bm9kZSkKK0pTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4ganNOdWxsKCk7Ci0KLSAgICBKU05vZGUqIHdyYXBwZXIgPSBnZXRDYWNo
ZWRET01Ob2RlV3JhcHBlcihleGVjLCBub2RlLT5kb2N1bWVudCgpLCBub2RlKTsKLSAgICBpZiAo
d3JhcHBlcikKLSAgICAgICAgcmV0dXJuIHdyYXBwZXI7Ci0KLSAgICByZXR1cm4gY3JlYXRlV3Jh
cHBlcihleGVjLCBnbG9iYWxPYmplY3QsIG5vZGUpOworICAgIAorICAgIHJldHVybiBjcmVhdGVX
cmFwcGVySW5saW5lKGV4ZWMsIGdsb2JhbE9iamVjdCwgbm9kZSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uaAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDksIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTTm9kZUN1c3Rv
bV9oCisjZGVmaW5lIEpTTm9kZUN1c3RvbV9oCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIK
KyNpbmNsdWRlIDx3dGYvQWx3YXlzSW5saW5lLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
aW5saW5lIEpTTm9kZSogZ2V0Q2FjaGVkRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoY3VycmVudFdv
cmxkKGV4ZWMpLT5pc05vcm1hbCgpKSB7CisgICAgICAgIEFTU0VSVChub2RlLT53cmFwcGVyKCkg
PT0gKGRvY3VtZW50ID8gZG9jdW1lbnQtPmdldFdyYXBwZXJDYWNoZShjdXJyZW50V29ybGQoZXhl
YykpLT5nZXQobm9kZSkgOiBkb21PYmplY3RXcmFwcGVyTWFwRm9yKGV4ZWMpLmdldChub2RlKSkp
OworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4obm9kZS0+d3JhcHBlcigpKTsK
KyAgICB9CisKKyAgICBpZiAoZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBkb2N1bWVudC0+Z2V0
V3JhcHBlckNhY2hlKGN1cnJlbnRXb3JsZChleGVjKSktPmdldChub2RlKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SlNOb2RlKj4oZG9tT2JqZWN0V3JhcHBlck1hcEZvcihleGVjKS5nZXQobm9k
ZSkpOworfQorCitKU0M6OkpTVmFsdWUgY3JlYXRlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NR2xvYmFsT2JqZWN0KiwgTm9kZSopOworCitpbmxpbmUgSlNDOjpKU1ZhbHVlIHRvSlMoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUq
IG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4gSlNDOjpqc051bGwoKTsK
KworICAgIEpTTm9kZSogd3JhcHBlciA9IGdldENhY2hlZERPTU5vZGVXcmFwcGVyKGV4ZWMsIG5v
ZGUtPmRvY3VtZW50KCksIG5vZGUpOworICAgIGlmICh3cmFwcGVyKQorICAgICAgICByZXR1cm4g
d3JhcHBlcjsKKworICAgIHJldHVybiBjcmVhdGVXcmFwcGVyKGV4ZWMsIGdsb2JhbE9iamVjdCwg
bm9kZSk7Cit9CisKK30KKworI2VuZGlmIC8vIEpTRE9NTm9kZUN1c3RvbV9oCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgJKHJldmlzaW9uIDU1MTk1KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTEg
KzMxLDMzIEBACiAjaWZuZGVmIFNjcmlwdFdyYXBwYWJsZV9oCiAjZGVmaW5lIFNjcmlwdFdyYXBw
YWJsZV9oCiAKKyNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9XZWFrR0NQdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JpcHRX
cmFwcGFibGUgewogcHVibGljOgotICAgIFNjcmlwdFdyYXBwYWJsZSgpIHsgfQorICAgIFNjcmlw
dFdyYXBwYWJsZSgpIDogbV93cmFwcGVyKDApIHsgfQorICAgIAorICAgIERPTU9iamVjdCogd3Jh
cHBlcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV93cmFwcGVyLmdldCgpOworICAg
IH0KKyAgICAKKyAgICB2b2lkIHNldFdyYXBwZXIoRE9NT2JqZWN0KiB3cmFwcGVyKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKHdyYXBwZXIpOworICAgICAgICBtX3dyYXBwZXIgPSB3cmFwcGVyOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGNsZWFyV3JhcHBlcihET01PYmplY3QqIHdyYXBwZXIpIAor
ICAgIHsgCisgICAgICAgIG1fd3JhcHBlci5jbGVhcih3cmFwcGVyKTsgCisgICAgfQorICAgIAor
cHJpdmF0ZToKKyAgICBKU0M6OldlYWtHQ1B0cjxET01PYmplY3Q+IG1fd3JhcHBlcjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gNTUxOTUpCisrKyBXZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBAIG15ICR3cml0ZURlcGVuZGVuY2llcyA9IDA7CiBteSBAaGVhZGVyQ29udGVudEhlYWRlciA9
ICgpOwogbXkgQGhlYWRlckNvbnRlbnQgPSAoKTsKIG15ICVoZWFkZXJJbmNsdWRlcyA9ICgpOwor
bXkgJWhlYWRlclRyYWlsaW5nSW5jbHVkZXMgPSAoKTsKIAogbXkgQGltcGxDb250ZW50SGVhZGVy
ID0gKCk7CiBteSBAaW1wbENvbnRlbnQgPSAoKTsKQEAgLTU1MSw3ICs1NTIsOSBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICAjIFByb3RvdHlwZQogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNTdGF0ZSos
IEpTQzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpIHVubGVzcyAoJGRhdGFOb2RlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRXh0ZW5kc0RPTUdsb2JhbE9iamVjdCJ9KTsKIAotICAgICRpbXBsSW5jbHVk
ZXN7IiR7Y2xhc3NOYW1lfUN1c3RvbS5oIn0gPSAxIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUhlYWRlciJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkN1c3RvbVB1dEZ1bmN0aW9uIn0gfHwgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRGVsZWdhdGluZ1B1dEZ1bmN0aW9uIn07CisgICAgJGhlYWRlclRyYWlsaW5nSW5jbHVkZXN7
IiR7Y2xhc3NOYW1lfUN1c3RvbS5oIn0gPSAxIGlmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkN1c3RvbUhlYWRlciJ9OworCisgICAgJGltcGxJbmNsdWRlc3siJHtjbGFzc05hbWV9
Q3VzdG9tLmgifSA9IDEgaWYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3Rv
bUhlYWRlciJ9ICYmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21QdXRG
dW5jdGlvbiJ9IHx8ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRlbGVnYXRpbmdQ
dXRGdW5jdGlvbiJ9KTsKIAogICAgIG15ICRoYXNHZXR0ZXIgPSAkbnVtQXR0cmlidXRlcyA+IDAg
CiAgICAgICAgICAgICAgICAgIHx8ICEoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
T21pdENvbnN0cnVjdG9yIn0KQEAgLTIyNDYsMTIgKzIyNDksMjMgQEAgc3ViIFdyaXRlRGF0YQog
ICAgICAgICB9CiAKICAgICAgICAgcHJpbnQgJEhFQURFUiBAaGVhZGVyQ29udGVudDsKKworICAg
ICAgICBAaW5jbHVkZXMgPSAoKTsKKyAgICAgICAgZm9yZWFjaCBteSAkaW5jbHVkZSAoa2V5cyAl
aGVhZGVyVHJhaWxpbmdJbmNsdWRlcykgeworICAgICAgICAgICAgJGluY2x1ZGUgPSAiXCIkaW5j
bHVkZVwiIiB1bmxlc3MgJGluY2x1ZGUgPX4gL15bIjxdLzsgIyAiCisgICAgICAgICAgICBwdXNo
IEBpbmNsdWRlcywgJGluY2x1ZGU7CisgICAgICAgIH0KKyAgICAgICAgZm9yZWFjaCBteSAkaW5j
bHVkZSAoc29ydCBAaW5jbHVkZXMpIHsKKyAgICAgICAgICAgIHByaW50ICRIRUFERVIgIiNpbmNs
dWRlICRpbmNsdWRlXG4iOworICAgICAgICB9CisKICAgICAgICAgY2xvc2UoJEhFQURFUik7CiAg
ICAgICAgIHVuZGVmKCRIRUFERVIpOwogCiAgICAgICAgIEBoZWFkZXJDb250ZW50SGVhZGVyID0g
KCk7CiAgICAgICAgIEBoZWFkZXJDb250ZW50ID0gKCk7CiAgICAgICAgICVoZWFkZXJJbmNsdWRl
cyA9ICgpOworICAgICAgICAlaGVhZGVyVHJhaWxpbmdJbmNsdWRlcyA9ICgpOwogICAgIH0KIAog
ICAgIGlmIChkZWZpbmVkKCRERVBTKSkgewpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vTm9kZS5pZGwJKHJldmlzaW9uIDU1MTk1KQorKysgV2Vi
Q29yZS9kb20vTm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIxLDcgQEAKIG1vZHVs
ZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCisgICAgICAgIEN1c3RvbUhlYWRlciwKICAgICAg
ICAgQ3VzdG9tTWFya0Z1bmN0aW9uLAogICAgICAgICBDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2Nv
cGUsCiAgICAgICAgIEN1c3RvbVRvSlMsCg==
</data>
<flag name="review"
          id="32334"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>