<?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>89087</bug_id>
          
          <creation_ts>2012-06-14 03:00:33 -0700</creation_ts>
          <short_desc>Web Inspector: Remove devtoolsInjectedScript hidden property</short_desc>
          <delta_ts>2012-06-18 03:23:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>88973</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrey Adaikin">aandrey</reporter>
          <assigned_to name="Andrey Adaikin">aandrey</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>caseq</cc>
    
    <cc>eustas.bug</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>649022</commentid>
    <comment_count>0</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 03:00:33 -0700</bug_when>
    <thetext>We use this hidden property to reference a InjectedScript object for a given ScriptState, but we also have the same reference in the InjectedScriptManager&apos;s hash maps. Just use the hash maps and remove the hidden property from the global object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649024</commentid>
    <comment_count>1</comment_count>
      <attachid>147539</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 03:04:51 -0700</bug_when>
    <thetext>Created attachment 147539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649041</commentid>
    <comment_count>2</comment_count>
      <attachid>147544</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 03:26:50 -0700</bug_when>
    <thetext>Created attachment 147544
Patch

Fix broken mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649088</commentid>
    <comment_count>3</comment_count>
      <attachid>147544</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-06-14 05:30:28 -0700</bug_when>
    <thetext>Comment on attachment 147544
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=147544&amp;action=review

General approach looks good, but I&apos;m a bit concerned with consistency between two maps (m_idToInjectedScript and  m_scriptStateToId) being not obvious.
Also a nit -- Google copyright line should only include last year.

&gt; Source/WebCore/inspector/InjectedScriptManager.cpp:180
&gt; +        if (it1 != m_idToInjectedScript.end())

When are we supposed to hit this check?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649101</commentid>
    <comment_count>4</comment_count>
      <attachid>147544</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-06-14 05:48:40 -0700</bug_when>
    <thetext>Comment on attachment 147544
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=147544&amp;action=review

&gt;&gt; Source/WebCore/inspector/InjectedScriptManager.cpp:180
&gt;&gt; +        if (it1 != m_idToInjectedScript.end())
&gt; 
&gt; When are we supposed to hit this check?

Ok, looks like it&apos;s normal for us to hit this. LGTM then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649109</commentid>
    <comment_count>5</comment_count>
      <attachid>147567</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 06:09:09 -0700</bug_when>
    <thetext>Created attachment 147567
Patch to land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649196</commentid>
    <comment_count>6</comment_count>
      <attachid>147567</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-14 08:32:32 -0700</bug_when>
    <thetext>Comment on attachment 147567
Patch to land

View in context: https://bugs.webkit.org/attachment.cgi?id=147567&amp;action=review

&gt; Source/WebCore/inspector/InjectedScriptManager.cpp:194
&gt; +ScriptObject InjectedScriptManager::wrapWebGLRenderingContextForInstrumentation(const ScriptObject&amp;)

InjectedScriptManager should not be aware of &quot;WebGL&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649210</commentid>
    <comment_count>7</comment_count>
      <attachid>147567</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-14 08:58:24 -0700</bug_when>
    <thetext>Comment on attachment 147567
Patch to land

View in context: https://bugs.webkit.org/attachment.cgi?id=147567&amp;action=review

&gt;&gt; Source/WebCore/inspector/InjectedScriptManager.cpp:194
&gt;&gt; +ScriptObject InjectedScriptManager::wrapWebGLRenderingContextForInstrumentation(const ScriptObject&amp;)
&gt; 
&gt; InjectedScriptManager should not be aware of &quot;WebGL&quot;.

Then it also should not be aware of the InjectedScript class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649370</commentid>
    <comment_count>8</comment_count>
      <attachid>147567</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 12:24:50 -0700</bug_when>
    <thetext>Comment on attachment 147567
Patch to land

Clearing flags on attachment: 147567

Committed r120347: &lt;http://trac.webkit.org/changeset/120347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649371</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-14 12:24:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651287</commentid>
    <comment_count>10</comment_count>
      <attachid>147567</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-18 03:19:19 -0700</bug_when>
    <thetext>Comment on attachment 147567
Patch to land

View in context: https://bugs.webkit.org/attachment.cgi?id=147567&amp;action=review

&gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:-98
&gt; -        visitor.append(&amp;thisObject-&gt;m_injectedScript);

Now that this is removed how can we make sure that the injected script is not garbage collected?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651288</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-18 03:23:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 147567 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147567&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSDOMGlobalObject.cpp:-98
&gt; &gt; -        visitor.append(&amp;thisObject-&gt;m_injectedScript);
&gt; 
&gt; Now that this is removed how can we make sure that the injected script is not garbage collected?

Nevermind. I missed that it is kept as a strong ref in ScriptObject.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147539</attachid>
            <date>2012-06-14 03:04:51 -0700</date>
            <delta_ts>2012-06-14 03:26:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89087-20120614140449.patch</filename>
            <type>text/plain</type>
            <size>17796</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyNzU4NTg2MTkxMTBl
Yjc1ZGE0NGUyODUxYWI0YjM3YmQzNGY4Zi4uYzU2MmVjN2RkYzViMzRhMTdhNGJkZjlkMGE3ODUx
NDEyNDU0NmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlbW92ZSBkZXZ0b29sc0luamVjdGVkU2NyaXB0IGhpZGRlbiBwcm9wZXJ0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwODcKKworICAgICAg
ICBXZSB1c2UgdGhlIGRldnRvb2xzSW5qZWN0ZWRTY3JpcHQgaGlkZGVuIHByb3BlcnR5IHRvIHJl
ZmVyZW5jZSBhIEluamVjdGVkU2NyaXB0IG9iamVjdAorICAgICAgICBmb3IgYSBnaXZlbiBTY3Jp
cHRTdGF0ZSwgYnV0IHdlIGFsc28gaGF2ZSB0aGUgc2FtZSByZWZlcmVuY2UgaW4gdGhlIEluamVj
dGVkU2NyaXB0TWFuYWdlcidzCisgICAgICAgIGhhc2ggbWFwcy4gSnVzdCB1c2UgdGhlIGhhc2gg
bWFwcyBhbmQgcmVtb3ZlIHRoZSBoaWRkZW4gcHJvcGVydHkgZnJvbSB0aGUgZ2xvYmFsIG9iamVj
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3Jp
cHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZElu
amVjdGVkU2NyaXB0c0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9y
SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg6CisgICAgICAgIChJbmplY3RlZFNjcmlwdE1hbmFnZXIpOgorCiAyMDEyLTA2LTE0ICBF
ZGFlbmEgU2FsaW5hcyBKYXNzbyAgPGVkYWVuYUBhcHBsZS5jb20+CiAKICAgICAgICAgZWwuZ2V0
QXR0cmlidXRlKCd0eXBlJykgcmV0dXJucyAnbnVsbCcgd2hlbiBzZXR0aW5nIGVsLnR5cGUgdG8g
bnVsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGRiYzI3NGQyMzEwNmUxN2NmNTFlMjM1MTJiNDM3Y2ZiOWM1MDVmMmIuLjM2MTA0
ODA4YmI2MDllNTdiMDQ4MTE4NTJlODk1ZGFkNzEzMGE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTIwLDcgKzIwLDcgQEAK
ICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKgogICovCiAKQEAgLTkzLDkgKzkzLDYgQEAgdm9pZCBKU0RPTUds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVuZDIgPSB0aGlzT2JqZWN0
LT5jb25zdHJ1Y3RvcnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0
ZXJhdG9yIGl0MiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBl
bmQyOyArK2l0MikKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0Mi0+c2Vjb25kKTsKLQotICAg
IGlmICh0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0KQotICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9pbmplY3RlZFNjcmlwdCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnNldEN1cnJlbnRFdmVudChFdmVudCogY3VycmVudEV2ZW50KQpAQCAtMTA4LDE2ICsx
MDUsNiBAQCBFdmVudCogSlNET01HbG9iYWxPYmplY3Q6OmN1cnJlbnRFdmVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY3VycmVudEV2ZW50OwogfQogCi12b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojpz
ZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQpCi17Ci0gICAgbV9pbmpl
Y3RlZFNjcmlwdC5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSgpLCB0aGlzLCBpbmplY3RlZFNjcmlw
dCk7Ci19Ci0KLUpTT2JqZWN0KiBKU0RPTUdsb2JhbE9iamVjdDo6aW5qZWN0ZWRTY3JpcHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luamVjdGVkU2NyaXB0LmdldCgpOwotfQotCiBKU0RPTUds
b2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChEb2N1bWVudCogZG9jdW1lbnQsIEpTQzo6
RXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5m
cmFtZSgpLCBjdXJyZW50V29ybGQoZXhlYykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYmQyNzczYWU0MTM2MzE5NTU0YTc0MDJlYjE2
NTA5ZjhmZjZiNGRjMi4uM2NlMTJkMTBmY2RkODgzY2MxODIwYzI2ZGUzZjkxODc0Zjk1N2Y3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBA
IC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCkBAIC02OCw5ICs2OCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRDdXJyZW50RXZlbnQoRXZl
bnQqKTsKICAgICAgICAgRXZlbnQqIGN1cnJlbnRFdmVudCgpIGNvbnN0OwogCi0gICAgICAgIHZv
aWQgc2V0SW5qZWN0ZWRTY3JpcHQoSlNPYmplY3QqKTsKLSAgICAgICAgSlNPYmplY3QqIGluamVj
dGVkU2NyaXB0KCkgY29uc3Q7Ci0KICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQpAQCAtODgsNyArODUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRXZlbnQqIG1fY3VycmVudEV2ZW50OwogICAg
ICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwotICAgICAgICBKU0M6OldyaXRl
QmFycmllcjxKU09iamVjdD4gbV9pbmplY3RlZFNjcmlwdDsKICAgICB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgQ29uc3RydWN0b3JDbGFzcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBkOGFmYTcxZjRmZWQ4
MTY5NTE2ODNiYmIzNmE4NDQyZTJhY2MzMGQwLi4zNjNlYWYxNzE3NDk5ZmMwNDk1NjY1OTcyZTRk
NzViMzgzMzVhODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM3LDExICszNywxMSBA
QAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgotI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisj
aW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNjcmlwdE9iamVj
dCBpbmplY3RBbmRFeGVjdXRlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MpCitTY3Jp
cHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25z
dCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCiB7CiAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIApAQCAtNjgsNTkgKzY4LDE1
IEBAIHN0YXRpYyBTY3JpcHRPYmplY3QgaW5qZWN0QW5kRXhlY3V0ZUZ1bmN0aW9uKGNvbnN0IFN0
cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSoKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKQogICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CiAKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IEpTQzo6Y2FsbChzY3JpcHRTdGF0ZSwgZnVuY3Rpb25WYWx1ZSwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0LmdldE9iamVj
dCgpKTsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7Ci19Ci0KLVNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291
cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGludCBpZCkKLXsKLSAgICBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0
U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFs
dWUgPSBzY3JpcHRTdGF0ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7Ci0KICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9i
amVjdCwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpKTsKICAgICBhcmdzLmFwcGVuZChnbG9i
YWxUaGlzVmFsdWUpOwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGlkKSk7CiAKLSAgICByZXR1
cm4gaW5qZWN0QW5kRXhlY3V0ZUZ1bmN0aW9uKHNvdXJjZSwgc2NyaXB0U3RhdGUsIGFyZ3MpOwot
fQotCi0jaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6aW5qZWN0V2ViR0xTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNjcmlwdE9i
amVjdCYgZ2xDb250ZXh0KQotewotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IGdsQ29u
dGV4dC5zY3JpcHRTdGF0ZSgpOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICBhcmdzLmFwcGVuZChnbENvbnRleHQuanNWYWx1ZSgpKTsKLQotICAgIHJldHVybiBpbmplY3RB
bmRFeGVjdXRlRnVuY3Rpb24oc291cmNlLCBzY3JpcHRTdGF0ZSwgYXJncyk7Ci19Ci0jZW5kaWYK
LQotdm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdChTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwotICAgIGdsb2JhbE9iamVjdC0+c2V0SW5qZWN0ZWRTY3JpcHQoMCk7Ci19
Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRG
b3IoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIEpTT2JqZWN0KiBpbmplY3RlZFNjcmlwdCA9IGdsb2JhbE9iamVjdC0+aW5qZWN0
ZWRTY3JpcHQoKTsKLSAgICBpZiAoaW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdChTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIGluamVjdGVkU2NyaXB0KSwgbV9p
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKLQotICAgIGlmICghbV9pbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKHNjcmlwdFN0YXRlKSkKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7
Ci0KLSAgICBwYWlyPGludCwgU2NyaXB0T2JqZWN0PiBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGlu
amVjdFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBzY3JpcHRTdGF0ZSk7Ci0gICAgZ2xv
YmFsT2JqZWN0LT5zZXRJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdE9iamVjdC5zZWNvbmQu
anNPYmplY3QoKSk7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0T2Jq
ZWN0LnNlY29uZCwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKLSAgICBtX2lkVG9Jbmpl
Y3RlZFNjcmlwdC5zZXQoaW5qZWN0ZWRTY3JpcHRPYmplY3QuZmlyc3QsIHJlc3VsdCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChzY3JpcHRTdGF0
ZSwgZnVuY3Rpb25WYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFy
Z3MpOworICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9i
amVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0LmdldE9iamVjdCgpKTsKKyAgICByZXR1cm4gU2NyaXB0
T2JqZWN0KCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggMzM4ZjFlNGQxNmQw
MjkwY2M2YTUzNDI0MTliOTQwNGVhNjU3MTRiOC4uMjFjODVlYjc2OTMxMmVlYmFmODcyOTMyNGI4
OTUwNTE0YjdmMjUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhp
ZGRlblByb3BlcnR5TmFtZS5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYobGlzdGVuZXIp
IFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAotICAg
IFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXAogICAg
IFYodG9TdHJpbmdTdHJpbmcpIFwKICAgICBWKGV2ZW50KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAppbmRleCAxMDljMjVlYTEzZjhiMDVjODIzZDcwNGQxNWE2ZDBmZTg4ZWIyMjY2Li5iMDY5
ZTQ5N2I4NzMwZWFiNjgxZmEwZTIxYTc4MjNkZTA3ZGNjNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zMywxNiArMzMsMTMgQEAKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
U2FmZUFsbG9jYXRpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Z1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKLSNpbmNsdWRlICJWOEhpZGRlblBy
b3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVk
ZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKQEAgLTExMyw3MiArMTEwLDYgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVk
U2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRT
b3UKICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KGluc3BlY3RlZFNjcmlwdFN0YXRlLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGluamVjdGVkU2NyaXB0VmFsdWUpKTsKIH0KIAotI2lmIEVO
QUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdFdl
YkdMU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBTY3JpcHRPYmplY3Qm
IGdsQ29udGV4dCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0KLSAgICBTY3JpcHRT
dGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUgPSBnbENvbnRleHQuc2NyaXB0U3RhdGUoKTsKLSAg
ICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGluc3BlY3RlZENvbnRleHQgPSBpbnNwZWN0ZWRTY3Jp
cHRTdGF0ZS0+Y29udGV4dCgpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
aW5zcGVjdGVkQ29udGV4dCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93R2xv
YmFsID0gaW5zcGVjdGVkQ29udGV4dC0+R2xvYmFsKCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6OlNj
cmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRTb3VyY2Up
KTsKLSAgICBWOFJlY3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiByZWN1cnNpb25T
Y29wZTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2ID0gc2NyaXB0LT5SdW4oKTsKLSAgICBB
U1NFUlQoIXYuSXNFbXB0eSgpKTsKLSAgICBBU1NFUlQodi0+SXNGdW5jdGlvbigpKTsKLQotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10gPSB7Ci0gICAgICAgIGdsQ29udGV4dC52OFZh
bHVlKCksCi0gICAgfTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbmplY3RlZFNjcmlwdFZh
bHVlID0gdjg6OkZ1bmN0aW9uOjpDYXN0KCp2KS0+Q2FsbCh3aW5kb3dHbG9iYWwsIDEsIGFyZ3Mp
OwotICAgIHJldHVybiBTY3JpcHRPYmplY3QoaW5zcGVjdGVkU2NyaXB0U3RhdGUsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoaW5qZWN0ZWRTY3JpcHRWYWx1ZSkpOwotfQotI2VuZGlmCi0K
LXZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0
U3RhdGUqIGluc3BlY3RlZFNjcmlwdFN0YXRlKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpbnNwZWN0ZWRT
Y3JpcHRTdGF0ZS0+Y29udGV4dCgpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2Nv
cGUoY29udGV4dCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4
dC0+R2xvYmFsKCk7Ci0gICAgLy8gU2tpcCBwcm94eSBvYmplY3QuIFRoZSBwcm94eSBvYmplY3Qg
d2lsbCBzdXJ2aXZlIHBhZ2UgbmF2aWdhdGlvbiB3aGlsZSB3ZSBuZWVkCi0gICAgLy8gYW4gb2Jq
ZWN0IHdob3NlIGxpZmV0aW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgb2YgdGhlIGluc3BlY3RlZCBj
b250ZXh0LgotICAgIGdsb2JhbCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChnbG9iYWwt
PkdldFByb3RvdHlwZSgpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4ga2V5ID0gVjhI
aWRkZW5Qcm9wZXJ0eU5hbWU6OmRldnRvb2xzSW5qZWN0ZWRTY3JpcHQoKTsKLSAgICBnbG9iYWwt
PkRlbGV0ZUhpZGRlblZhbHVlKGtleSk7Ci19Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqIGluc3BlY3RlZFNjcmlw
dFN0YXRlKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpbnNwZWN0ZWRTY3JpcHRTdGF0ZS0+Y29udGV4dCgp
OwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0KLSAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7Ci0gICAgLy8g
U2tpcCBwcm94eSBvYmplY3QuIFRoZSBwcm94eSBvYmplY3Qgd2lsbCBzdXJ2aXZlIHBhZ2UgbmF2
aWdhdGlvbiB3aGlsZSB3ZSBuZWVkCi0gICAgLy8gYW4gb2JqZWN0IHdob3NlIGxpZmV0aW1lIGNv
aW5jaWRlcyB3aXRoIHRoYXQgb2YgdGhlIGluc3BlY3RlZCBjb250ZXh0LgotICAgIGdsb2JhbCA9
IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChnbG9iYWwtPkdldFByb3RvdHlwZSgpKTsKLQot
ICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4ga2V5ID0gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmRl
dnRvb2xzSW5qZWN0ZWRTY3JpcHQoKTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWwgPSBn
bG9iYWwtPkdldEhpZGRlblZhbHVlKGtleSk7Ci0gICAgaWYgKCF2YWwuSXNFbXB0eSgpICYmIHZh
bC0+SXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVj
dChpbnNwZWN0ZWRTY3JpcHRTdGF0ZSwgdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbCkp
LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwotCi0gICAgaWYgKCFtX2luc3BlY3RlZFN0
YXRlQWNjZXNzQ2hlY2soaW5zcGVjdGVkU2NyaXB0U3RhdGUpKQotICAgICAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHQoKTsKLQotICAgIHBhaXI8aW50LCBTY3JpcHRPYmplY3Q+IGluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0U2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZFNjcmlw
dFN0YXRlKTsKLSAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRTY3JpcHQuc2Vjb25k
LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwotICAgIG1faWRUb0luamVjdGVkU2NyaXB0
LnNldChpbmplY3RlZFNjcmlwdC5maXJzdCwgcmVzdWx0KTsKLSAgICBnbG9iYWwtPlNldEhpZGRl
blZhbHVlKGtleSwgaW5qZWN0ZWRTY3JpcHQuc2Vjb25kLnY4T2JqZWN0KCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOTMzY2Q2OWQxMmU3Y2YwMDY1NDBlNDdiZmUzZjQ4
ZGFhZmJjZTRmMy4uMTY4OTRkZDUxYmE4YjJmZTYxYTZjY2RmNzNiOGQxYzZhNGQzOTBiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKQEAgLTExNyw5ICsxMTcsNiBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYgogCiB2b2lkIElu
amVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpCiB7Ci0gICAgSWRU
b0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5l
bmQoKTsKLSAgICBmb3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lk
VG9JbmplY3RlZFNjcmlwdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGRpc2Nh
cmRJbmplY3RlZFNjcmlwdChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOwogICAgIG1faWRUb0lu
amVjdGVkU2NyaXB0LmNsZWFyKCk7CiAgICAgbV9zY3JpcHRTdGF0ZVRvSWQuY2xlYXIoKTsKIH0K
QEAgLTEzNSw3ICsxMzIsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZElu
amVjdGVkU2NyaXB0c0ZvcihET01XaW5kb3cqIHdpbmRvdykKICAgICAgICAgU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlID0gaXQtPnNlY29uZC5zY3JpcHRTdGF0ZSgpOwogICAgICAgICBpZiAod2lu
ZG93ICE9IGRvbVdpbmRvd0Zyb21TY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgZGlzY2FyZEluamVjdGVkU2NyaXB0KHNjcmlwdFN0YXRlKTsK
ICAgICAgICAgbV9zY3JpcHRTdGF0ZVRvSWQucmVtb3ZlKHNjcmlwdFN0YXRlKTsKICAgICAgICAg
aWRzVG9SZW1vdmUuYXBwZW5kKGl0LT5maXJzdCk7CiAgICAgfQpAQCAtMTc2LDEwICsxNzIsMjkg
QEAgcGFpcjxpbnQsIFNjcmlwdE9iamVjdD4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoaWQs
IGNyZWF0ZUluamVjdGVkU2NyaXB0KHNvdXJjZSwgc2NyaXB0U3RhdGUsIGlkKSk7CiB9CiAKK0lu
amVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2Ny
aXB0U3RhdGUqIGluc3BlY3RlZFNjcmlwdFN0YXRlKQoreworICAgIFNjcmlwdFN0YXRlVG9JZDo6
aXRlcmF0b3IgaXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5maW5kKGluc3BlY3RlZFNjcmlwdFN0YXRl
KTsKKyAgICBpZiAoaXQgIT0gbV9zY3JpcHRTdGF0ZVRvSWQuZW5kKCkpIHsKKyAgICAgICAgSWRU
b0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBpdDEgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5m
aW5kKGl0LT5zZWNvbmQpOworICAgICAgICBpZiAoaXQxICE9IG1faWRUb0luamVjdGVkU2NyaXB0
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0MS0+c2Vjb25kOworICAgIH0KKworICAgIGlm
ICghbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGluc3BlY3RlZFNjcmlwdFN0YXRlKSkKKyAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CisKKyAgICBwYWlyPGludCwgU2NyaXB0T2Jq
ZWN0PiBpbmplY3RlZFNjcmlwdCA9IGluamVjdFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgp
LCBpbnNwZWN0ZWRTY3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVj
dGVkU2NyaXB0LnNlY29uZCwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICBtX2lk
VG9JbmplY3RlZFNjcmlwdC5zZXQoaW5qZWN0ZWRTY3JpcHQuZmlyc3QsIHJlc3VsdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogI2lmIEVOQUJMRShXRUJHTCkKIFNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50
YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIGluamVj
dFdlYkdMU2NyaXB0KGluamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UoKSwgZ2xDb250ZXh0KTsKKyAg
ICAvLyBGSVhNRSg4ODk3Myk6IEluamVjdCB2aWEgdGhpcy5pbmplY3RTY3JpcHQoKQorICAgIHJl
dHVybiBTY3JpcHRPYmplY3QoKTsKIH0KIAogU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6
aW5qZWN0ZWRXZWJHTFNjcmlwdFNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgKaW5kZXggNWMwZThjZTIwODk3OTM1NWFjNjNmNWM3
ODQ0MDFkMzU4MTZjODc2My4uOTRiOWUzOGI4ZjM4M2JhY2JkZGM1NDE2OTdiZjNlNjkwNWMzOGQ4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaApAQCAtNzQsMTEgKzc0LDkgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBpbmplY3RlZFNj
cmlwdFNvdXJjZSgpOwogICAgIFNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25z
dCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqLCBpbnQgaWQpOwotICAgIHZvaWQgZGlzY2Fy
ZEluamVjdGVkU2NyaXB0KFNjcmlwdFN0YXRlKik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAg
U3RyaW5nIGluamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UoKTsKLSAgICBTY3JpcHRPYmplY3QgaW5q
ZWN0V2ViR0xTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNjcmlwdE9iamVjdCYp
OwogI2VuZGlmCiAKICAgICBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2Ny
aXB0U3RhdGUqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147544</attachid>
            <date>2012-06-14 03:26:50 -0700</date>
            <delta_ts>2012-06-14 06:09:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89087-20120614142648.patch</filename>
            <type>text/plain</type>
            <size>17898</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyNzU4NTg2MTkxMTBl
Yjc1ZGE0NGUyODUxYWI0YjM3YmQzNGY4Zi4uYzU2MmVjN2RkYzViMzRhMTdhNGJkZjlkMGE3ODUx
NDEyNDU0NmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlbW92ZSBkZXZ0b29sc0luamVjdGVkU2NyaXB0IGhpZGRlbiBwcm9wZXJ0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwODcKKworICAgICAg
ICBXZSB1c2UgdGhlIGRldnRvb2xzSW5qZWN0ZWRTY3JpcHQgaGlkZGVuIHByb3BlcnR5IHRvIHJl
ZmVyZW5jZSBhIEluamVjdGVkU2NyaXB0IG9iamVjdAorICAgICAgICBmb3IgYSBnaXZlbiBTY3Jp
cHRTdGF0ZSwgYnV0IHdlIGFsc28gaGF2ZSB0aGUgc2FtZSByZWZlcmVuY2UgaW4gdGhlIEluamVj
dGVkU2NyaXB0TWFuYWdlcidzCisgICAgICAgIGhhc2ggbWFwcy4gSnVzdCB1c2UgdGhlIGhhc2gg
bWFwcyBhbmQgcmVtb3ZlIHRoZSBoaWRkZW4gcHJvcGVydHkgZnJvbSB0aGUgZ2xvYmFsIG9iamVj
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3Jp
cHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZElu
amVjdGVkU2NyaXB0c0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9y
SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg6CisgICAgICAgIChJbmplY3RlZFNjcmlwdE1hbmFnZXIpOgorCiAyMDEyLTA2LTE0ICBF
ZGFlbmEgU2FsaW5hcyBKYXNzbyAgPGVkYWVuYUBhcHBsZS5jb20+CiAKICAgICAgICAgZWwuZ2V0
QXR0cmlidXRlKCd0eXBlJykgcmV0dXJucyAnbnVsbCcgd2hlbiBzZXR0aW5nIGVsLnR5cGUgdG8g
bnVsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGRiYzI3NGQyMzEwNmUxN2NmNTFlMjM1MTJiNDM3Y2ZiOWM1MDVmMmIuLjM2MTA0
ODA4YmI2MDllNTdiMDQ4MTE4NTJlODk1ZGFkNzEzMGE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTIwLDcgKzIwLDcgQEAK
ICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKgogICovCiAKQEAgLTkzLDkgKzkzLDYgQEAgdm9pZCBKU0RPTUds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVuZDIgPSB0aGlzT2JqZWN0
LT5jb25zdHJ1Y3RvcnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0
ZXJhdG9yIGl0MiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBl
bmQyOyArK2l0MikKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0Mi0+c2Vjb25kKTsKLQotICAg
IGlmICh0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0KQotICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9pbmplY3RlZFNjcmlwdCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnNldEN1cnJlbnRFdmVudChFdmVudCogY3VycmVudEV2ZW50KQpAQCAtMTA4LDE2ICsx
MDUsNiBAQCBFdmVudCogSlNET01HbG9iYWxPYmplY3Q6OmN1cnJlbnRFdmVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY3VycmVudEV2ZW50OwogfQogCi12b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojpz
ZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQpCi17Ci0gICAgbV9pbmpl
Y3RlZFNjcmlwdC5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSgpLCB0aGlzLCBpbmplY3RlZFNjcmlw
dCk7Ci19Ci0KLUpTT2JqZWN0KiBKU0RPTUdsb2JhbE9iamVjdDo6aW5qZWN0ZWRTY3JpcHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luamVjdGVkU2NyaXB0LmdldCgpOwotfQotCiBKU0RPTUds
b2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChEb2N1bWVudCogZG9jdW1lbnQsIEpTQzo6
RXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5m
cmFtZSgpLCBjdXJyZW50V29ybGQoZXhlYykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYmQyNzczYWU0MTM2MzE5NTU0YTc0MDJlYjE2
NTA5ZjhmZjZiNGRjMi4uM2NlMTJkMTBmY2RkODgzY2MxODIwYzI2ZGUzZjkxODc0Zjk1N2Y3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBA
IC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCkBAIC02OCw5ICs2OCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRDdXJyZW50RXZlbnQoRXZl
bnQqKTsKICAgICAgICAgRXZlbnQqIGN1cnJlbnRFdmVudCgpIGNvbnN0OwogCi0gICAgICAgIHZv
aWQgc2V0SW5qZWN0ZWRTY3JpcHQoSlNPYmplY3QqKTsKLSAgICAgICAgSlNPYmplY3QqIGluamVj
dGVkU2NyaXB0KCkgY29uc3Q7Ci0KICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQpAQCAtODgsNyArODUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRXZlbnQqIG1fY3VycmVudEV2ZW50OwogICAg
ICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwotICAgICAgICBKU0M6OldyaXRl
QmFycmllcjxKU09iamVjdD4gbV9pbmplY3RlZFNjcmlwdDsKICAgICB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgQ29uc3RydWN0b3JDbGFzcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBkOGFmYTcxZjRmZWQ4
MTY5NTE2ODNiYmIzNmE4NDQyZTJhY2MzMGQwLi4zNjNlYWYxNzE3NDk5ZmMwNDk1NjY1OTcyZTRk
NzViMzgzMzVhODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM3LDExICszNywxMSBA
QAogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgotI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkpTSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisj
aW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTTG9jay5oPgogCkBAIC00OSw3ICs0OSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNjcmlwdE9iamVj
dCBpbmplY3RBbmRFeGVjdXRlRnVuY3Rpb24oY29uc3QgU3RyaW5nJiBzb3VyY2UsIFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgY29uc3QgTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MpCitTY3Jp
cHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25z
dCBTdHJpbmcmIHNvdXJjZSwgU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCiB7CiAg
ICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIApAQCAtNjgsNTkgKzY4LDE1
IEBAIHN0YXRpYyBTY3JpcHRPYmplY3QgaW5qZWN0QW5kRXhlY3V0ZUZ1bmN0aW9uKGNvbnN0IFN0
cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSoKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKQogICAgICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7CiAKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IEpTQzo6Y2FsbChzY3JpcHRTdGF0ZSwgZnVuY3Rpb25WYWx1ZSwgY2FsbFR5cGUsIGNhbGxE
YXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFyZ3MpOwotICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0LmdldE9iamVj
dCgpKTsKLSAgICByZXR1cm4gU2NyaXB0T2JqZWN0KCk7Ci19Ci0KLVNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291
cmNlLCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGludCBpZCkKLXsKLSAgICBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc2NyaXB0
U3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgSlNWYWx1ZSBnbG9iYWxUaGlzVmFs
dWUgPSBzY3JpcHRTdGF0ZS0+Z2xvYmFsVGhpc1ZhbHVlKCk7Ci0KICAgICBNYXJrZWRBcmd1bWVu
dEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKHRvSlMoc2NyaXB0U3RhdGUsIGdsb2JhbE9i
amVjdCwgbV9pbmplY3RlZFNjcmlwdEhvc3QuZ2V0KCkpKTsKICAgICBhcmdzLmFwcGVuZChnbG9i
YWxUaGlzVmFsdWUpOwogICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGlkKSk7CiAKLSAgICByZXR1
cm4gaW5qZWN0QW5kRXhlY3V0ZUZ1bmN0aW9uKHNvdXJjZSwgc2NyaXB0U3RhdGUsIGFyZ3MpOwot
fQotCi0jaWYgRU5BQkxFKFdFQkdMKQotU2NyaXB0T2JqZWN0IEluamVjdGVkU2NyaXB0TWFuYWdl
cjo6aW5qZWN0V2ViR0xTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNjcmlwdE9i
amVjdCYgZ2xDb250ZXh0KQotewotICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IGdsQ29u
dGV4dC5zY3JpcHRTdGF0ZSgpOwotCi0gICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKLSAg
ICBhcmdzLmFwcGVuZChnbENvbnRleHQuanNWYWx1ZSgpKTsKLQotICAgIHJldHVybiBpbmplY3RB
bmRFeGVjdXRlRnVuY3Rpb24oc291cmNlLCBzY3JpcHRTdGF0ZSwgYXJncyk7Ci19Ci0jZW5kaWYK
LQotdm9pZCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmRpc2NhcmRJbmplY3RlZFNjcmlwdChTY3Jp
cHRTdGF0ZSogc2NyaXB0U3RhdGUpCi17Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpOwotICAgIGdsb2JhbE9iamVjdC0+c2V0SW5qZWN0ZWRTY3JpcHQoMCk7Ci19
Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRG
b3IoU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQotewotICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7Ci0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpOwotICAgIEpTT2JqZWN0KiBpbmplY3RlZFNjcmlwdCA9IGdsb2JhbE9iamVjdC0+aW5qZWN0
ZWRTY3JpcHQoKTsKLSAgICBpZiAoaW5qZWN0ZWRTY3JpcHQpCi0gICAgICAgIHJldHVybiBJbmpl
Y3RlZFNjcmlwdChTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIGluamVjdGVkU2NyaXB0KSwgbV9p
bnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKLQotICAgIGlmICghbV9pbnNwZWN0ZWRTdGF0ZUFj
Y2Vzc0NoZWNrKHNjcmlwdFN0YXRlKSkKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7
Ci0KLSAgICBwYWlyPGludCwgU2NyaXB0T2JqZWN0PiBpbmplY3RlZFNjcmlwdE9iamVjdCA9IGlu
amVjdFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBzY3JpcHRTdGF0ZSk7Ci0gICAgZ2xv
YmFsT2JqZWN0LT5zZXRJbmplY3RlZFNjcmlwdChpbmplY3RlZFNjcmlwdE9iamVjdC5zZWNvbmQu
anNPYmplY3QoKSk7Ci0gICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0T2Jq
ZWN0LnNlY29uZCwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKLSAgICBtX2lkVG9Jbmpl
Y3RlZFNjcmlwdC5zZXQoaW5qZWN0ZWRTY3JpcHRPYmplY3QuZmlyc3QsIHJlc3VsdCk7Ci0gICAg
cmV0dXJuIHJlc3VsdDsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTQzo6Y2FsbChzY3JpcHRTdGF0
ZSwgZnVuY3Rpb25WYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxUaGlzVmFsdWUsIGFy
Z3MpOworICAgIGlmIChyZXN1bHQuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdE9i
amVjdChzY3JpcHRTdGF0ZSwgcmVzdWx0LmdldE9iamVjdCgpKTsKKyAgICByZXR1cm4gU2NyaXB0
T2JqZWN0KCk7CiB9CiAKIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKaW5kZXggMzM4ZjFlNGQxNmQw
MjkwY2M2YTUzNDI0MTliOTQwNGVhNjU3MTRiOC4uMjFjODVlYjc2OTMxMmVlYmFmODcyOTMyNGI4
OTUwNTE0YjdmMjUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhp
ZGRlblByb3BlcnR5TmFtZS5oCkBAIC0xLDEwICsxLDEwIEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKKyAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CiAgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQogICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKQEAgLTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYobGlzdGVuZXIp
IFwKICAgICBWKGF0dHJpYnV0ZUxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAotICAg
IFYoZGV2dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXAogICAg
IFYodG9TdHJpbmdTdHJpbmcpIFwKICAgICBWKGV2ZW50KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNwcAppbmRleCAxMDljMjVlYTEzZjhiMDVjODIzZDcwNGQxNWE2ZDBmZTg4ZWIyMjY2Li5iMDY5
ZTQ5N2I4NzMwZWFiNjgxZmEwZTIxYTc4MjNkZTA3ZGNjNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNy0y
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCkBAIC0zMywxNiArMzMsMTMgQEAKICNpbmNsdWRlICJJbmplY3RlZFNj
cmlwdE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkluamVj
dGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAi
U2FmZUFsbG9jYXRpb24uaCIKLSNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlNj
cmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Z1N0YXRlLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKLSNpbmNsdWRlICJWOEhpZGRlblBy
b3BlcnR5TmFtZS5oIgogI2luY2x1ZGUgIlY4SW5qZWN0ZWRTY3JpcHRIb3N0LmgiCi0jaW5jbHVk
ZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIlY4UmVjdXJzaW9uU2NvcGUuaCIKICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAKQEAgLTExMyw3MiArMTEwLDYgQEAgU2NyaXB0T2JqZWN0IEluamVjdGVk
U2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHRT
b3UKICAgICByZXR1cm4gU2NyaXB0T2JqZWN0KGluc3BlY3RlZFNjcmlwdFN0YXRlLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGluamVjdGVkU2NyaXB0VmFsdWUpKTsKIH0KIAotI2lmIEVO
QUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdFdl
YkdMU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0U291cmNlLCBjb25zdCBTY3JpcHRPYmplY3Qm
IGdsQ29udGV4dCkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0KLSAgICBTY3JpcHRT
dGF0ZSogaW5zcGVjdGVkU2NyaXB0U3RhdGUgPSBnbENvbnRleHQuc2NyaXB0U3RhdGUoKTsKLSAg
ICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGluc3BlY3RlZENvbnRleHQgPSBpbnNwZWN0ZWRTY3Jp
cHRTdGF0ZS0+Y29udGV4dCgpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
aW5zcGVjdGVkQ29udGV4dCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd2luZG93R2xv
YmFsID0gaW5zcGVjdGVkQ29udGV4dC0+R2xvYmFsKCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6OlNj
cmlwdD4gc2NyaXB0ID0gdjg6OlNjcmlwdDo6Q29tcGlsZSh2OFN0cmluZyhzY3JpcHRTb3VyY2Up
KTsKLSAgICBWOFJlY3Vyc2lvblNjb3BlOjpNaWNyb3Rhc2tTdXBwcmVzc2lvbiByZWN1cnNpb25T
Y29wZTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2ID0gc2NyaXB0LT5SdW4oKTsKLSAgICBB
U1NFUlQoIXYuSXNFbXB0eSgpKTsKLSAgICBBU1NFUlQodi0+SXNGdW5jdGlvbigpKTsKLQotICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmdzW10gPSB7Ci0gICAgICAgIGdsQ29udGV4dC52OFZh
bHVlKCksCi0gICAgfTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpbmplY3RlZFNjcmlwdFZh
bHVlID0gdjg6OkZ1bmN0aW9uOjpDYXN0KCp2KS0+Q2FsbCh3aW5kb3dHbG9iYWwsIDEsIGFyZ3Mp
OwotICAgIHJldHVybiBTY3JpcHRPYmplY3QoaW5zcGVjdGVkU2NyaXB0U3RhdGUsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoaW5qZWN0ZWRTY3JpcHRWYWx1ZSkpOwotfQotI2VuZGlmCi0K
LXZvaWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0
U3RhdGUqIGluc3BlY3RlZFNjcmlwdFN0YXRlKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpbnNwZWN0ZWRT
Y3JpcHRTdGF0ZS0+Y29udGV4dCgpOwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2Nv
cGUoY29udGV4dCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4
dC0+R2xvYmFsKCk7Ci0gICAgLy8gU2tpcCBwcm94eSBvYmplY3QuIFRoZSBwcm94eSBvYmplY3Qg
d2lsbCBzdXJ2aXZlIHBhZ2UgbmF2aWdhdGlvbiB3aGlsZSB3ZSBuZWVkCi0gICAgLy8gYW4gb2Jq
ZWN0IHdob3NlIGxpZmV0aW1lIGNvaW5jaWRlcyB3aXRoIHRoYXQgb2YgdGhlIGluc3BlY3RlZCBj
b250ZXh0LgotICAgIGdsb2JhbCA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChnbG9iYWwt
PkdldFByb3RvdHlwZSgpKTsKLQotICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4ga2V5ID0gVjhI
aWRkZW5Qcm9wZXJ0eU5hbWU6OmRldnRvb2xzSW5qZWN0ZWRTY3JpcHQoKTsKLSAgICBnbG9iYWwt
PkRlbGV0ZUhpZGRlblZhbHVlKGtleSk7Ci19Ci0KLUluamVjdGVkU2NyaXB0IEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUqIGluc3BlY3RlZFNjcmlw
dFN0YXRlKQotewotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6TG9j
YWw8djg6OkNvbnRleHQ+IGNvbnRleHQgPSBpbnNwZWN0ZWRTY3JpcHRTdGF0ZS0+Y29udGV4dCgp
OwotICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUoY29udGV4dCk7Ci0KLSAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gZ2xvYmFsID0gY29udGV4dC0+R2xvYmFsKCk7Ci0gICAgLy8g
U2tpcCBwcm94eSBvYmplY3QuIFRoZSBwcm94eSBvYmplY3Qgd2lsbCBzdXJ2aXZlIHBhZ2UgbmF2
aWdhdGlvbiB3aGlsZSB3ZSBuZWVkCi0gICAgLy8gYW4gb2JqZWN0IHdob3NlIGxpZmV0aW1lIGNv
aW5jaWRlcyB3aXRoIHRoYXQgb2YgdGhlIGluc3BlY3RlZCBjb250ZXh0LgotICAgIGdsb2JhbCA9
IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChnbG9iYWwtPkdldFByb3RvdHlwZSgpKTsKLQot
ICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4ga2V5ID0gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmRl
dnRvb2xzSW5qZWN0ZWRTY3JpcHQoKTsKLSAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWwgPSBn
bG9iYWwtPkdldEhpZGRlblZhbHVlKGtleSk7Ci0gICAgaWYgKCF2YWwuSXNFbXB0eSgpICYmIHZh
bC0+SXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KFNjcmlwdE9iamVj
dChpbnNwZWN0ZWRTY3JpcHRTdGF0ZSwgdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KHZhbCkp
LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwotCi0gICAgaWYgKCFtX2luc3BlY3RlZFN0
YXRlQWNjZXNzQ2hlY2soaW5zcGVjdGVkU2NyaXB0U3RhdGUpKQotICAgICAgICByZXR1cm4gSW5q
ZWN0ZWRTY3JpcHQoKTsKLQotICAgIHBhaXI8aW50LCBTY3JpcHRPYmplY3Q+IGluamVjdGVkU2Ny
aXB0ID0gaW5qZWN0U2NyaXB0KGluamVjdGVkU2NyaXB0U291cmNlKCksIGluc3BlY3RlZFNjcmlw
dFN0YXRlKTsKLSAgICBJbmplY3RlZFNjcmlwdCByZXN1bHQoaW5qZWN0ZWRTY3JpcHQuc2Vjb25k
LCBtX2luc3BlY3RlZFN0YXRlQWNjZXNzQ2hlY2spOwotICAgIG1faWRUb0luamVjdGVkU2NyaXB0
LnNldChpbmplY3RlZFNjcmlwdC5maXJzdCwgcmVzdWx0KTsKLSAgICBnbG9iYWwtPlNldEhpZGRl
blZhbHVlKGtleSwgaW5qZWN0ZWRTY3JpcHQuc2Vjb25kLnY4T2JqZWN0KCkpOwotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KIGJvb2wgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpjYW5BY2Nlc3NJbnNw
ZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogewogICAgIHY4OjpIYW5kbGVT
Y29wZSBoYW5kbGVTY29wZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVj
dGVkU2NyaXB0TWFuYWdlci5jcHAKaW5kZXggOTMzY2Q2OWQxMmU3Y2YwMDY1NDBlNDdiZmUzZjQ4
ZGFhZmJjZTRmMy4uOGQxNjllOWMwNDA3YjAxYThhNmJjZmQyN2YyNWEyODcxMWY0NTY1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKQEAgLTExNyw5ICsxMTcsNiBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYgogCiB2b2lkIElu
amVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpCiB7Ci0gICAgSWRU
b0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5l
bmQoKTsKLSAgICBmb3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lk
VG9JbmplY3RlZFNjcmlwdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGRpc2Nh
cmRJbmplY3RlZFNjcmlwdChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOwogICAgIG1faWRUb0lu
amVjdGVkU2NyaXB0LmNsZWFyKCk7CiAgICAgbV9zY3JpcHRTdGF0ZVRvSWQuY2xlYXIoKTsKIH0K
QEAgLTEzNSw3ICsxMzIsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZElu
amVjdGVkU2NyaXB0c0ZvcihET01XaW5kb3cqIHdpbmRvdykKICAgICAgICAgU2NyaXB0U3RhdGUq
IHNjcmlwdFN0YXRlID0gaXQtPnNlY29uZC5zY3JpcHRTdGF0ZSgpOwogICAgICAgICBpZiAod2lu
ZG93ICE9IGRvbVdpbmRvd0Zyb21TY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgZGlzY2FyZEluamVjdGVkU2NyaXB0KHNjcmlwdFN0YXRlKTsK
ICAgICAgICAgbV9zY3JpcHRTdGF0ZVRvSWQucmVtb3ZlKHNjcmlwdFN0YXRlKTsKICAgICAgICAg
aWRzVG9SZW1vdmUuYXBwZW5kKGl0LT5maXJzdCk7CiAgICAgfQpAQCAtMTc2LDEwICsxNzIsMjkg
QEAgcGFpcjxpbnQsIFNjcmlwdE9iamVjdD4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RT
Y3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2UKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoaWQs
IGNyZWF0ZUluamVjdGVkU2NyaXB0KHNvdXJjZSwgc2NyaXB0U3RhdGUsIGlkKSk7CiB9CiAKK0lu
amVjdGVkU2NyaXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2Ny
aXB0U3RhdGUqIGluc3BlY3RlZFNjcmlwdFN0YXRlKQoreworICAgIFNjcmlwdFN0YXRlVG9JZDo6
aXRlcmF0b3IgaXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5maW5kKGluc3BlY3RlZFNjcmlwdFN0YXRl
KTsKKyAgICBpZiAoaXQgIT0gbV9zY3JpcHRTdGF0ZVRvSWQuZW5kKCkpIHsKKyAgICAgICAgSWRU
b0luamVjdGVkU2NyaXB0TWFwOjppdGVyYXRvciBpdDEgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5m
aW5kKGl0LT5zZWNvbmQpOworICAgICAgICBpZiAoaXQxICE9IG1faWRUb0luamVjdGVkU2NyaXB0
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0MS0+c2Vjb25kOworICAgIH0KKworICAgIGlm
ICghbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGluc3BlY3RlZFNjcmlwdFN0YXRlKSkKKyAg
ICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CisKKyAgICBwYWlyPGludCwgU2NyaXB0T2Jq
ZWN0PiBpbmplY3RlZFNjcmlwdCA9IGluamVjdFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgp
LCBpbnNwZWN0ZWRTY3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVj
dGVkU2NyaXB0LnNlY29uZCwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICBtX2lk
VG9JbmplY3RlZFNjcmlwdC5zZXQoaW5qZWN0ZWRTY3JpcHQuZmlyc3QsIHJlc3VsdCk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmpl
Y3RlZFNjcmlwdE1hbmFnZXI6OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50
YXRpb24oY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCitTY3JpcHRPYmplY3QgSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0
aW9uKGNvbnN0IFNjcmlwdE9iamVjdCYpCiB7Ci0gICAgcmV0dXJuIGluamVjdFdlYkdMU2NyaXB0
KGluamVjdGVkV2ViR0xTY3JpcHRTb3VyY2UoKSwgZ2xDb250ZXh0KTsKKyAgICAvLyBGSVhNRSg4
ODk3Myk6IEluamVjdCB2aWEgdGhpcy5pbmplY3RTY3JpcHQoKQorICAgIHJldHVybiBTY3JpcHRP
YmplY3QoKTsKIH0KIAogU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRXZWJH
TFNjcmlwdFNvdXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmgKaW5kZXggNWMwZThjZTIwODk3OTM1NWFjNjNmNWM3ODQ0MDFkMzU4MTZj
ODc2My4uOTRiOWUzOGI4ZjM4M2JhY2JkZGM1NDE2OTdiZjNlNjkwNWMzOGQ4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtNzQs
MTEgKzc0LDkgQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBpbmplY3RlZFNjcmlwdFNvdXJjZSgp
OwogICAgIFNjcmlwdE9iamVjdCBjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNv
dXJjZSwgU2NyaXB0U3RhdGUqLCBpbnQgaWQpOwotICAgIHZvaWQgZGlzY2FyZEluamVjdGVkU2Ny
aXB0KFNjcmlwdFN0YXRlKik7CiAKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgU3RyaW5nIGluamVj
dGVkV2ViR0xTY3JpcHRTb3VyY2UoKTsKLSAgICBTY3JpcHRPYmplY3QgaW5qZWN0V2ViR0xTY3Jp
cHQoY29uc3QgU3RyaW5nJiBzb3VyY2UsIGNvbnN0IFNjcmlwdE9iamVjdCYpOwogI2VuZGlmCiAK
ICAgICBzdGF0aWMgYm9vbCBjYW5BY2Nlc3NJbnNwZWN0ZWRXaW5kb3coU2NyaXB0U3RhdGUqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147567</attachid>
            <date>2012-06-14 06:09:09 -0700</date>
            <delta_ts>2012-06-18 03:19:19 -0700</delta_ts>
            <desc>Patch to land</desc>
            <filename>bug-89087-20120614170908.patch</filename>
            <type>text/plain</type>
            <size>18683</size>
            <attacher name="Andrey Adaikin">aandrey</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwMjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyNzU4NTg2MTkxMTBl
Yjc1ZGE0NGUyODUxYWI0YjM3YmQzNGY4Zi4uYzU2MmVjN2RkYzViMzRhMTdhNGJkZjlkMGE3ODUx
NDEyNDU0NmFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTE0ICBBbmRy
ZXkgQWRhaWtpbiAgPGFhbmRyZXlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFJlbW92ZSBkZXZ0b29sc0luamVjdGVkU2NyaXB0IGhpZGRlbiBwcm9wZXJ0eQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwODcKKworICAgICAg
ICBXZSB1c2UgdGhlIGRldnRvb2xzSW5qZWN0ZWRTY3JpcHQgaGlkZGVuIHByb3BlcnR5IHRvIHJl
ZmVyZW5jZSBhIEluamVjdGVkU2NyaXB0IG9iamVjdAorICAgICAgICBmb3IgYSBnaXZlbiBTY3Jp
cHRTdGF0ZSwgYnV0IHdlIGFsc28gaGF2ZSB0aGUgc2FtZSByZWZlcmVuY2UgaW4gdGhlIEluamVj
dGVkU2NyaXB0TWFuYWdlcidzCisgICAgICAgIGhhc2ggbWFwcy4gSnVzdCB1c2UgdGhlIGhhc2gg
bWFwcyBhbmQgcmVtb3ZlIHRoZSBoaWRkZW4gcHJvcGVydHkgZnJvbSB0aGUgZ2xvYmFsIG9iamVj
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TUdsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNET01HbG9iYWxPYmplY3QpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3Jp
cHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZElu
amVjdGVkU2NyaXB0c0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmluamVjdGVkU2NyaXB0Rm9yKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9y
SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmg6CisgICAgICAgIChJbmplY3RlZFNjcmlwdE1hbmFnZXIpOgorCiAyMDEyLTA2LTE0ICBF
ZGFlbmEgU2FsaW5hcyBKYXNzbyAgPGVkYWVuYUBhcHBsZS5jb20+CiAKICAgICAgICAgZWwuZ2V0
QXR0cmlidXRlKCd0eXBlJykgcmV0dXJucyAnbnVsbCcgd2hlbiBzZXR0aW5nIGVsLnR5cGUgdG8g
bnVsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCmluZGV4IGRiYzI3NGQyMzEwNmUxN2NmNTFlMjM1MTJiNDM3Y2ZiOWM1MDVmMmIuLjM2MTA0
ODA4YmI2MDllNTdiMDQ4MTE4NTJlODk1ZGFkNzEzMGE0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTIwLDcgKzIwLDcgQEAK
ICAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKICAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKgogICovCiAKQEAgLTkzLDkgKzkzLDYgQEAgdm9pZCBKU0RPTUds
b2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogICAgIEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0ZXJhdG9yIGVuZDIgPSB0aGlzT2JqZWN0
LT5jb25zdHJ1Y3RvcnMoKS5lbmQoKTsKICAgICBmb3IgKEpTRE9NQ29uc3RydWN0b3JNYXA6Oml0
ZXJhdG9yIGl0MiA9IHRoaXNPYmplY3QtPmNvbnN0cnVjdG9ycygpLmJlZ2luKCk7IGl0MiAhPSBl
bmQyOyArK2l0MikKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJml0Mi0+c2Vjb25kKTsKLQotICAg
IGlmICh0aGlzT2JqZWN0LT5tX2luamVjdGVkU2NyaXB0KQotICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9pbmplY3RlZFNjcmlwdCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxP
YmplY3Q6OnNldEN1cnJlbnRFdmVudChFdmVudCogY3VycmVudEV2ZW50KQpAQCAtMTA4LDE2ICsx
MDUsNiBAQCBFdmVudCogSlNET01HbG9iYWxPYmplY3Q6OmN1cnJlbnRFdmVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fY3VycmVudEV2ZW50OwogfQogCi12b2lkIEpTRE9NR2xvYmFsT2JqZWN0Ojpz
ZXRJbmplY3RlZFNjcmlwdChKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQpCi17Ci0gICAgbV9pbmpl
Y3RlZFNjcmlwdC5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSgpLCB0aGlzLCBpbmplY3RlZFNjcmlw
dCk7Ci19Ci0KLUpTT2JqZWN0KiBKU0RPTUdsb2JhbE9iamVjdDo6aW5qZWN0ZWRTY3JpcHQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2luamVjdGVkU2NyaXB0LmdldCgpOwotfQotCiBKU0RPTUds
b2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChEb2N1bWVudCogZG9jdW1lbnQsIEpTQzo6
RXhlY1N0YXRlKiBleGVjKQogewogICAgIHJldHVybiB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5m
cmFtZSgpLCBjdXJyZW50V29ybGQoZXhlYykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggYmQyNzczYWU0MTM2MzE5NTU0YTc0MDJlYjE2
NTA5ZjhmZjZiNGRjMi4uM2NlMTJkMTBmY2RkODgzY2MxODIwYzI2ZGUzZjkxODc0Zjk1N2Y3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBA
IC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICoKICAqLwogCkBAIC02OCw5ICs2OCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRDdXJyZW50RXZlbnQoRXZl
bnQqKTsKICAgICAgICAgRXZlbnQqIGN1cnJlbnRFdmVudCgpIGNvbnN0OwogCi0gICAgICAgIHZv
aWQgc2V0SW5qZWN0ZWRTY3JpcHQoSlNPYmplY3QqKTsKLSAgICAgICAgSlNPYmplY3QqIGluamVj
dGVkU2NyaXB0KCkgY29uc3Q7Ci0KICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0M6OkpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBET01XcmFwcGVyV29y
bGQqIHdvcmxkKCkgeyByZXR1cm4gbV93b3JsZC5nZXQoKTsgfQpAQCAtODgsNyArODUsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRXZlbnQqIG1fY3VycmVudEV2ZW50OwogICAg
ICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwotICAgICAgICBKU0M6OldyaXRl
QmFycmllcjxKU09iamVjdD4gbV9pbmplY3RlZFNjcmlwdDsKICAgICB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgQ29uc3RydWN0b3JDbGFzcz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBkOGFmYTcxZjRmZWQ4
MTY5NTE2ODNiYmIzNmE4NDQyZTJhY2MzMGQwLi4xMzgxOTNiYmEwYjdhNWVkNzk1YjM5N2EyMjkz
NDUxYTc3ZmI0NDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lu
amVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+Ci0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNywxMSArMzcsMTEgQEAKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93
LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uaCIKICNpbmNsdWRlICJKU0luamVjdGVk
U2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1
ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VDb2RlLmg+CiAjaW5j
bHVkZSA8cnVudGltZS9KU0xvY2suaD4KIApAQCAtNDksNyArNDksNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTY3JpcHRPYmplY3QgaW5q
ZWN0QW5kRXhlY3V0ZUZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRTdGF0ZSog
c2NyaXB0U3RhdGUsIGNvbnN0IE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzKQorU2NyaXB0T2Jq
ZWN0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y3JlYXRlSW5qZWN0ZWRTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwgaW50IGlkKQogewogICAgIEpT
TG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAKQEAgLTY4LDU5ICs2OCwxNSBAQCBz
dGF0aWMgU2NyaXB0T2JqZWN0IGluamVjdEFuZEV4ZWN1dGVGdW5jdGlvbihjb25zdCBTdHJpbmcm
IHNvdXJjZSwgU2NyaXB0U3RhdGUqCiAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkK
ICAgICAgICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOwogCi0gICAgSlNWYWx1ZSByZXN1bHQgPSBK
U0M6OmNhbGwoc2NyaXB0U3RhdGUsIGZ1bmN0aW9uVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Z2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsKLSAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiBTY3JpcHRPYmplY3Qoc2NyaXB0U3RhdGUsIHJlc3VsdC5nZXRPYmplY3QoKSk7
Ci0gICAgcmV0dXJuIFNjcmlwdE9iamVjdCgpOwotfQotCi1TY3JpcHRPYmplY3QgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOjpjcmVhdGVJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZSwg
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgaWQpCi17Ci0gICAgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHNjcmlwdFN0YXRl
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwotICAgIEpTVmFsdWUgZ2xvYmFsVGhpc1ZhbHVlID0g
c2NyaXB0U3RhdGUtPmdsb2JhbFRoaXNWYWx1ZSgpOwotCiAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZCh0b0pTKHNjcmlwdFN0YXRlLCBnbG9iYWxPYmplY3Qs
IG1faW5qZWN0ZWRTY3JpcHRIb3N0LmdldCgpKSk7CiAgICAgYXJncy5hcHBlbmQoZ2xvYmFsVGhp
c1ZhbHVlKTsKICAgICBhcmdzLmFwcGVuZChqc051bWJlcihpZCkpOwogCi0gICAgcmV0dXJuIGlu
amVjdEFuZEV4ZWN1dGVGdW5jdGlvbihzb3VyY2UsIHNjcmlwdFN0YXRlLCBhcmdzKTsKLX0KLQot
I2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6Omlu
amVjdFdlYkdMU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBjb25zdCBTY3JpcHRPYmplY3Qm
IGdsQ29udGV4dCkKLXsKLSAgICBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUgPSBnbENvbnRleHQu
c2NyaXB0U3RhdGUoKTsKLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJn
cy5hcHBlbmQoZ2xDb250ZXh0LmpzVmFsdWUoKSk7Ci0KLSAgICByZXR1cm4gaW5qZWN0QW5kRXhl
Y3V0ZUZ1bmN0aW9uKHNvdXJjZSwgc2NyaXB0U3RhdGUsIGFyZ3MpOwotfQotI2VuZGlmCi0KLXZv
aWQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjpkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlKQotewotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKTsKLSAgICBnbG9iYWxPYmplY3QtPnNldEluamVjdGVkU2NyaXB0KDApOwotfQotCi1J
bmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yKFNj
cmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKLXsKLSAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0
aW9uc09ubHkpOwotICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzY3JpcHRTdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsK
LSAgICBKU09iamVjdCogaW5qZWN0ZWRTY3JpcHQgPSBnbG9iYWxPYmplY3QtPmluamVjdGVkU2Ny
aXB0KCk7Ci0gICAgaWYgKGluamVjdGVkU2NyaXB0KQotICAgICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQoU2NyaXB0T2JqZWN0KHNjcmlwdFN0YXRlLCBpbmplY3RlZFNjcmlwdCksIG1faW5zcGVj
dGVkU3RhdGVBY2Nlc3NDaGVjayk7Ci0KLSAgICBpZiAoIW1faW5zcGVjdGVkU3RhdGVBY2Nlc3ND
aGVjayhzY3JpcHRTdGF0ZSkpCi0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdCgpOwotCi0g
ICAgcGFpcjxpbnQsIFNjcmlwdE9iamVjdD4gaW5qZWN0ZWRTY3JpcHRPYmplY3QgPSBpbmplY3RT
Y3JpcHQoaW5qZWN0ZWRTY3JpcHRTb3VyY2UoKSwgc2NyaXB0U3RhdGUpOwotICAgIGdsb2JhbE9i
amVjdC0+c2V0SW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHRPYmplY3Quc2Vjb25kLmpzT2Jq
ZWN0KCkpOwotICAgIEluamVjdGVkU2NyaXB0IHJlc3VsdChpbmplY3RlZFNjcmlwdE9iamVjdC5z
ZWNvbmQsIG1faW5zcGVjdGVkU3RhdGVBY2Nlc3NDaGVjayk7Ci0gICAgbV9pZFRvSW5qZWN0ZWRT
Y3JpcHQuc2V0KGluamVjdGVkU2NyaXB0T2JqZWN0LmZpcnN0LCByZXN1bHQpOwotICAgIHJldHVy
biByZXN1bHQ7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoc2NyaXB0U3RhdGUsIGZ1
bmN0aW9uVmFsdWUsIGNhbGxUeXBlLCBjYWxsRGF0YSwgZ2xvYmFsVGhpc1ZhbHVlLCBhcmdzKTsK
KyAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiBTY3JpcHRPYmplY3Qo
c2NyaXB0U3RhdGUsIHJlc3VsdC5nZXRPYmplY3QoKSk7CisgICAgcmV0dXJuIFNjcmlwdE9iamVj
dCgpOwogfQogCiBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVk
V2luZG93KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCmluZGV4IDMzOGYxZTRkMTZkMDI5MGNj
NmE1MzQyNDE5Yjk0MDRlYTY1NzE0YjguLjRiZDJjNDFkZTI4NWQyNWIxYjFjY2M2MmMwNzY4NzJl
ZGQzY2JiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVu
UHJvcGVydHlOYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaApAQCAtMSwxMCArMSwxMCBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKICAqIG1ldDoKLSAqIAorICoKICAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCkBAIC0xNCw3ICsxNCw3IEBACiAgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCiAgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqIAorICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKICAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCiAgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKQEAg
LTM5LDcgKzM5LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYobGlzdGVuZXIpIFwKICAg
ICBWKGF0dHJpYnV0ZUxpc3RlbmVyKSBcCiAgICAgVihzY3JpcHRTdGF0ZSkgXAotICAgIFYoZGV2
dG9vbHNJbmplY3RlZFNjcmlwdCkgXAogICAgIFYoc2xlZXBGdW5jdGlvbikgXAogICAgIFYodG9T
dHJpbmdTdHJpbmcpIFwKICAgICBWKGV2ZW50KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcApp
bmRleCAxMDljMjVlYTEzZjhiMDVjODIzZDcwNGQxNWE2ZDBmZTg4ZWIyMjY2Li40YzEwM2QyMGRl
NDExYjM4MjdiOTc5ZTE5NjY3OWRiNDJjOTEyYjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0TWFuYWdlci5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzMsMTYgKzMzLDEzIEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5o
IgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIlNhZmVBbGxvY2F0
aW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJTY3JpcHRPYmplY3Qu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdTdGF0ZS5oIgog
I2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
aCIKICNpbmNsdWRlICJWOEluamVjdGVkU2NyaXB0SG9zdC5oIgotI2luY2x1ZGUgIlY4UHJveHku
aCIKICNpbmNsdWRlICJWOFJlY3Vyc2lvblNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCkBAIC0xMTMsNzIgKzExMCw2IEBAIFNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXI6OmNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0U291CiAgICAgcmV0
dXJuIFNjcmlwdE9iamVjdChpbnNwZWN0ZWRTY3JpcHRTdGF0ZSwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChpbmplY3RlZFNjcmlwdFZhbHVlKSk7CiB9CiAKLSNpZiBFTkFCTEUoV0VCR0wp
Ci1TY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RXZWJHTFNjcmlwdChj
b25zdCBTdHJpbmcmIHNjcmlwdFNvdXJjZSwgY29uc3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQp
Ci17Ci0gICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwotCi0gICAgU2NyaXB0U3RhdGUqIGluc3Bl
Y3RlZFNjcmlwdFN0YXRlID0gZ2xDb250ZXh0LnNjcmlwdFN0YXRlKCk7Ci0gICAgdjg6OkxvY2Fs
PHY4OjpDb250ZXh0PiBpbnNwZWN0ZWRDb250ZXh0ID0gaW5zcGVjdGVkU2NyaXB0U3RhdGUtPmNv
bnRleHQoKTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGluc3BlY3RlZENv
bnRleHQpOwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IHdpbmRvd0dsb2JhbCA9IGluc3Bl
Y3RlZENvbnRleHQtPkdsb2JhbCgpOwotCi0gICAgdjg6OkxvY2FsPHY4OjpTY3JpcHQ+IHNjcmlw
dCA9IHY4OjpTY3JpcHQ6OkNvbXBpbGUodjhTdHJpbmcoc2NyaXB0U291cmNlKSk7Ci0gICAgVjhS
ZWN1cnNpb25TY29wZTo6TWljcm90YXNrU3VwcHJlc3Npb24gcmVjdXJzaW9uU2NvcGU7Ci0gICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdiA9IHNjcmlwdC0+UnVuKCk7Ci0gICAgQVNTRVJUKCF2Lklz
RW1wdHkoKSk7Ci0gICAgQVNTRVJUKHYtPklzRnVuY3Rpb24oKSk7Ci0KLSAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJnc1tdID0gewotICAgICAgICBnbENvbnRleHQudjhWYWx1ZSgpLAotICAg
IH07Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaW5qZWN0ZWRTY3JpcHRWYWx1ZSA9IHY4OjpG
dW5jdGlvbjo6Q2FzdCgqdiktPkNhbGwod2luZG93R2xvYmFsLCAxLCBhcmdzKTsKLSAgICByZXR1
cm4gU2NyaXB0T2JqZWN0KGluc3BlY3RlZFNjcmlwdFN0YXRlLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGluamVjdGVkU2NyaXB0VmFsdWUpKTsKLX0KLSNlbmRpZgotCi12b2lkIEluamVj
dGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0KFNjcmlwdFN0YXRlKiBpbnNw
ZWN0ZWRTY3JpcHRTdGF0ZSkKLXsKLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0g
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0ID0gaW5zcGVjdGVkU2NyaXB0U3RhdGUt
PmNvbnRleHQoKTsKLSAgICB2ODo6Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQp
OwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgp
OwotICAgIC8vIFNraXAgcHJveHkgb2JqZWN0LiBUaGUgcHJveHkgb2JqZWN0IHdpbGwgc3Vydml2
ZSBwYWdlIG5hdmlnYXRpb24gd2hpbGUgd2UgbmVlZAotICAgIC8vIGFuIG9iamVjdCB3aG9zZSBs
aWZldGltZSBjb2luY2lkZXMgd2l0aCB0aGF0IG9mIHRoZSBpbnNwZWN0ZWQgY29udGV4dC4KLSAg
ICBnbG9iYWwgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoZ2xvYmFsLT5HZXRQcm90b3R5
cGUoKSk7Ci0KLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGtleSA9IFY4SGlkZGVuUHJvcGVy
dHlOYW1lOjpkZXZ0b29sc0luamVjdGVkU2NyaXB0KCk7Ci0gICAgZ2xvYmFsLT5EZWxldGVIaWRk
ZW5WYWx1ZShrZXkpOwotfQotCi1JbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6
OmluamVjdGVkU2NyaXB0Rm9yKFNjcmlwdFN0YXRlKiBpbnNwZWN0ZWRTY3JpcHRTdGF0ZSkKLXsK
LSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OkxvY2FsPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gaW5zcGVjdGVkU2NyaXB0U3RhdGUtPmNvbnRleHQoKTsKLSAgICB2ODo6
Q29udGV4dDo6U2NvcGUgY29udGV4dFNjb3BlKGNvbnRleHQpOwotCi0gICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIC8vIFNraXAgcHJveHkg
b2JqZWN0LiBUaGUgcHJveHkgb2JqZWN0IHdpbGwgc3Vydml2ZSBwYWdlIG5hdmlnYXRpb24gd2hp
bGUgd2UgbmVlZAotICAgIC8vIGFuIG9iamVjdCB3aG9zZSBsaWZldGltZSBjb2luY2lkZXMgd2l0
aCB0aGF0IG9mIHRoZSBpbnNwZWN0ZWQgY29udGV4dC4KLSAgICBnbG9iYWwgPSB2ODo6TG9jYWw8
djg6Ok9iamVjdD46OkNhc3QoZ2xvYmFsLT5HZXRQcm90b3R5cGUoKSk7Ci0KLSAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IGtleSA9IFY4SGlkZGVuUHJvcGVydHlOYW1lOjpkZXZ0b29sc0luamVj
dGVkU2NyaXB0KCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsID0gZ2xvYmFsLT5HZXRI
aWRkZW5WYWx1ZShrZXkpOwotICAgIGlmICghdmFsLklzRW1wdHkoKSAmJiB2YWwtPklzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBJbmplY3RlZFNjcmlwdChTY3JpcHRPYmplY3QoaW5zcGVjdGVk
U2NyaXB0U3RhdGUsIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWwpKSwgbV9pbnNwZWN0
ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKLQotICAgIGlmICghbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0No
ZWNrKGluc3BlY3RlZFNjcmlwdFN0YXRlKSkKLSAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0
KCk7Ci0KLSAgICBwYWlyPGludCwgU2NyaXB0T2JqZWN0PiBpbmplY3RlZFNjcmlwdCA9IGluamVj
dFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0ZWRTY3JpcHRTdGF0ZSk7Ci0g
ICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0LnNlY29uZCwgbV9pbnNwZWN0
ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKLSAgICBtX2lkVG9JbmplY3RlZFNjcmlwdC5zZXQoaW5qZWN0
ZWRTY3JpcHQuZmlyc3QsIHJlc3VsdCk7Ci0gICAgZ2xvYmFsLT5TZXRIaWRkZW5WYWx1ZShrZXks
IGluamVjdGVkU2NyaXB0LnNlY29uZC52OE9iamVjdCgpKTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCiBib29sIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6Y2FuQWNjZXNzSW5zcGVjdGVkV2luZG93
KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSkKIHsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwCmluZGV4IDkzM2NkNjlkMTJlN2NmMDA2NTQwZTQ3YmZlM2Y0OGRhYWZiY2U0ZjMu
LmU4YzY0ZmI4ZDBhN2Y0NjBhM2RlNjA3ODRjY2U2NTcwNDc4ODdlYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xLDcg
KzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0
QG1hdHRsaWxlay5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEx
Nyw5ICsxMTcsNiBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlwdE1hbmFnZXI6OmluamVj
dGVkU2NyaXB0Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYgogCiB2b2lkIEluamVjdGVkU2Ny
aXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2NyaXB0cygpCiB7Ci0gICAgSWRUb0luamVjdGVk
U2NyaXB0TWFwOjppdGVyYXRvciBlbmQgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5lbmQoKTsKLSAg
ICBmb3IgKElkVG9JbmplY3RlZFNjcmlwdE1hcDo6aXRlcmF0b3IgaXQgPSBtX2lkVG9JbmplY3Rl
ZFNjcmlwdC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGRpc2NhcmRJbmplY3Rl
ZFNjcmlwdChpdC0+c2Vjb25kLnNjcmlwdFN0YXRlKCkpOwogICAgIG1faWRUb0luamVjdGVkU2Ny
aXB0LmNsZWFyKCk7CiAgICAgbV9zY3JpcHRTdGF0ZVRvSWQuY2xlYXIoKTsKIH0KQEAgLTEzNSw3
ICsxMzIsNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6ZGlzY2FyZEluamVjdGVkU2Ny
aXB0c0ZvcihET01XaW5kb3cqIHdpbmRvdykKICAgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdFN0
YXRlID0gaXQtPnNlY29uZC5zY3JpcHRTdGF0ZSgpOwogICAgICAgICBpZiAod2luZG93ICE9IGRv
bVdpbmRvd0Zyb21TY3JpcHRTdGF0ZShzY3JpcHRTdGF0ZSkpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgZGlzY2FyZEluamVjdGVkU2NyaXB0KHNjcmlwdFN0YXRlKTsKICAgICAgICAg
bV9zY3JpcHRTdGF0ZVRvSWQucmVtb3ZlKHNjcmlwdFN0YXRlKTsKICAgICAgICAgaWRzVG9SZW1v
dmUuYXBwZW5kKGl0LT5maXJzdCk7CiAgICAgfQpAQCAtMTc2LDEwICsxNzIsMjkgQEAgcGFpcjxp
bnQsIFNjcmlwdE9iamVjdD4gSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RTY3JpcHQoY29u
c3QgU3RyaW5nJiBzb3VyY2UKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoaWQsIGNyZWF0ZUlu
amVjdGVkU2NyaXB0KHNvdXJjZSwgc2NyaXB0U3RhdGUsIGlkKSk7CiB9CiAKK0luamVjdGVkU2Ny
aXB0IEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRTY3JpcHRGb3IoU2NyaXB0U3RhdGUq
IGluc3BlY3RlZFNjcmlwdFN0YXRlKQoreworICAgIFNjcmlwdFN0YXRlVG9JZDo6aXRlcmF0b3Ig
aXQgPSBtX3NjcmlwdFN0YXRlVG9JZC5maW5kKGluc3BlY3RlZFNjcmlwdFN0YXRlKTsKKyAgICBp
ZiAoaXQgIT0gbV9zY3JpcHRTdGF0ZVRvSWQuZW5kKCkpIHsKKyAgICAgICAgSWRUb0luamVjdGVk
U2NyaXB0TWFwOjppdGVyYXRvciBpdDEgPSBtX2lkVG9JbmplY3RlZFNjcmlwdC5maW5kKGl0LT5z
ZWNvbmQpOworICAgICAgICBpZiAoaXQxICE9IG1faWRUb0luamVjdGVkU2NyaXB0LmVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGl0MS0+c2Vjb25kOworICAgIH0KKworICAgIGlmICghbV9pbnNw
ZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKGluc3BlY3RlZFNjcmlwdFN0YXRlKSkKKyAgICAgICAgcmV0
dXJuIEluamVjdGVkU2NyaXB0KCk7CisKKyAgICBwYWlyPGludCwgU2NyaXB0T2JqZWN0PiBpbmpl
Y3RlZFNjcmlwdCA9IGluamVjdFNjcmlwdChpbmplY3RlZFNjcmlwdFNvdXJjZSgpLCBpbnNwZWN0
ZWRTY3JpcHRTdGF0ZSk7CisgICAgSW5qZWN0ZWRTY3JpcHQgcmVzdWx0KGluamVjdGVkU2NyaXB0
LnNlY29uZCwgbV9pbnNwZWN0ZWRTdGF0ZUFjY2Vzc0NoZWNrKTsKKyAgICBtX2lkVG9JbmplY3Rl
ZFNjcmlwdC5zZXQoaW5qZWN0ZWRTY3JpcHQuZmlyc3QsIHJlc3VsdCk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKwogI2lmIEVOQUJMRShXRUJHTCkKLVNjcmlwdE9iamVjdCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OndyYXBXZWJHTFJlbmRlcmluZ0NvbnRleHRGb3JJbnN0cnVtZW50YXRpb24oY29u
c3QgU2NyaXB0T2JqZWN0JiBnbENvbnRleHQpCitTY3JpcHRPYmplY3QgSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOjp3cmFwV2ViR0xSZW5kZXJpbmdDb250ZXh0Rm9ySW5zdHJ1bWVudGF0aW9uKGNvbnN0
IFNjcmlwdE9iamVjdCYpCiB7Ci0gICAgcmV0dXJuIGluamVjdFdlYkdMU2NyaXB0KGluamVjdGVk
V2ViR0xTY3JpcHRTb3VyY2UoKSwgZ2xDb250ZXh0KTsKKyAgICAvLyBGSVhNRSg4ODk3Myk6IElu
amVjdCB2aWEgdGhpcy5pbmplY3RTY3JpcHQoKQorICAgIHJldHVybiBTY3JpcHRPYmplY3QoKTsK
IH0KIAogU3RyaW5nIEluamVjdGVkU2NyaXB0TWFuYWdlcjo6aW5qZWN0ZWRXZWJHTFNjcmlwdFNv
dXJjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmgKaW5kZXggNWMwZThjZTIwODk3OTM1NWFjNjNmNWM3ODQ0MDFkMzU4MTZjODc2My4uYWNi
OTY2NjU1MWY4OWIxMmE5MDMzMmVjY2QwZTJiOGEyNjJlZGY5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaApAQCAtMSw2ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NCwxMSArNzQsOSBAQCBw
cml2YXRlOgogCiAgICAgU3RyaW5nIGluamVjdGVkU2NyaXB0U291cmNlKCk7CiAgICAgU2NyaXB0
T2JqZWN0IGNyZWF0ZUluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlLCBTY3JpcHRT
dGF0ZSosIGludCBpZCk7Ci0gICAgdm9pZCBkaXNjYXJkSW5qZWN0ZWRTY3JpcHQoU2NyaXB0U3Rh
dGUqKTsKIAogI2lmIEVOQUJMRShXRUJHTCkKICAgICBTdHJpbmcgaW5qZWN0ZWRXZWJHTFNjcmlw
dFNvdXJjZSgpOwotICAgIFNjcmlwdE9iamVjdCBpbmplY3RXZWJHTFNjcmlwdChjb25zdCBTdHJp
bmcmIHNvdXJjZSwgY29uc3QgU2NyaXB0T2JqZWN0Jik7CiAjZW5kaWYKIAogICAgIHN0YXRpYyBi
b29sIGNhbkFjY2Vzc0luc3BlY3RlZFdpbmRvdyhTY3JpcHRTdGF0ZSopOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>