<?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>176654</bug_id>
          
          <creation_ts>2017-09-09 09:17:36 -0700</creation_ts>
          <short_desc>[JSC] Optimize Object.keys by using careful array allocation</short_desc>
          <delta_ts>2017-09-27 12:32:28 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1347106</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-09 09:17:36 -0700</bug_when>
    <thetext>[JSC] Optimize Object.keys by using careful array allocation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347109</commentid>
    <comment_count>1</comment_count>
      <attachid>320344</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-09 09:23:43 -0700</bug_when>
    <thetext>Created attachment 320344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347111</commentid>
    <comment_count>2</comment_count>
      <attachid>320344</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-09 09:31:25 -0700</bug_when>
    <thetext>Comment on attachment 320344
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        but it rarely appears.

Then, ProxyObject case goes to the generic path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347112</commentid>
    <comment_count>3</comment_count>
      <attachid>320345</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-09 09:39:36 -0700</bug_when>
    <thetext>Created attachment 320345
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347113</commentid>
    <comment_count>4</comment_count>
      <attachid>320346</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-09 09:40:46 -0700</bug_when>
    <thetext>Created attachment 320346
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347121</commentid>
    <comment_count>5</comment_count>
      <attachid>320347</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-09 10:09:12 -0700</bug_when>
    <thetext>Created attachment 320347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347292</commentid>
    <comment_count>6</comment_count>
      <attachid>320347</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-10 14:58:54 -0700</bug_when>
    <thetext>Comment on attachment 320347
Patch

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

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.h:125
&gt; -JSArray* ownPropertyKeys(ExecState*, JSObject*, PropertyNameMode, DontEnumPropertiesMode);
&gt; +JSValue ownPropertyKeys(ExecState*, JSObject*, PropertyNameMode, DontEnumPropertiesMode);

Why this change? Nothing in the change log explains it. The function still seems to always return a JSArray*. Is it a performance optimization to move the conversion from JSArray* to JSValue inside the function?

If the change isn’t needed, then it seems useful to follow the general C++ coding style rule of not widening types unnecessarily in case the narrower type can be of use for performance optimization or otherwise useful in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347363</commentid>
    <comment_count>7</comment_count>
      <attachid>320347</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-11 01:04:55 -0700</bug_when>
    <thetext>Comment on attachment 320347
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.h:125
&gt;&gt; +JSValue ownPropertyKeys(ExecState*, JSObject*, PropertyNameMode, DontEnumPropertiesMode);
&gt; 
&gt; Why this change? Nothing in the change log explains it. The function still seems to always return a JSArray*. Is it a performance optimization to move the conversion from JSArray* to JSValue inside the function?
&gt; 
&gt; If the change isn’t needed, then it seems useful to follow the general C++ coding style rule of not widening types unnecessarily in case the narrower type can be of use for performance optimization or otherwise useful in the future.

I thought it is not so good that JSValue::encode(nullptr as JSCell*) happens if the error occurrs. But either is ok to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347365</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-11 01:10:17 -0700</bug_when>
    <thetext>Committed r221853: &lt;http://trac.webkit.org/changeset/221853&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347373</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-11 03:51:40 -0700</bug_when>
    <thetext>https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-speed&amp;subtest=for-of-object-es6
https://arewefastyet.com/#machine=29&amp;view=single&amp;suite=six-speed&amp;subtest=object-assign-es5

Good results. I think we should set up enumeration cache for Object.keys case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347525</commentid>
    <comment_count>10</comment_count>
      <attachid>320347</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-11 11:56:14 -0700</bug_when>
    <thetext>Comment on attachment 320347
Patch

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

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:402
&gt; +        values-&gt;putDirectIndex(exec, index++, value);

Isn&apos;t this an observable change in JS semantics?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347774</commentid>
    <comment_count>11</comment_count>
      <attachid>320347</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-11 19:07:15 -0700</bug_when>
    <thetext>Comment on attachment 320347
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.h:125
&gt;&gt;&gt; +JSValue ownPropertyKeys(ExecState*, JSObject*, PropertyNameMode, DontEnumPropertiesMode);
&gt;&gt; 
&gt;&gt; Why this change? Nothing in the change log explains it. The function still seems to always return a JSArray*. Is it a performance optimization to move the conversion from JSArray* to JSValue inside the function?
&gt;&gt; 
&gt;&gt; If the change isn’t needed, then it seems useful to follow the general C++ coding style rule of not widening types unnecessarily in case the narrower type can be of use for performance optimization or otherwise useful in the future.
&gt; 
&gt; I thought it is not so good that JSValue::encode(nullptr as JSCell*) happens if the error occurrs. But either is ok to me.

Not different from returning &quot;JSValue { }&quot;; the JSValue(JSCell*) constructor handles nullptr in exactly that way. If we wanted to optimize by avoiding the branch, I don’t think returning JSValue accomplishes that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347945</commentid>
    <comment_count>12</comment_count>
      <attachid>320347</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-12 09:53:47 -0700</bug_when>
    <thetext>Comment on attachment 320347
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:402
&gt;&gt; +        values-&gt;putDirectIndex(exec, index++, value);
&gt; 
&gt; Isn&apos;t this an observable change in JS semantics?

I changed these code to align them to the spec (previously, our implementation does not follow the spec.)
I&apos;ll add the test for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347969</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-12 11:41:02 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #12)
&gt; Comment on attachment 320347 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=320347&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:402
&gt; &gt;&gt; +        values-&gt;putDirectIndex(exec, index++, value);
&gt; &gt; 
&gt; &gt; Isn&apos;t this an observable change in JS semantics?
&gt; 
&gt; I changed these code to align them to the spec (previously, our
&gt; implementation does not follow the spec.)
&gt; I&apos;ll add the test for this.

👍🏽</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353457</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:32:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693450&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320344</attachid>
            <date>2017-09-09 09:23:43 -0700</date>
            <delta_ts>2017-09-09 09:39:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176654-20170910012342.patch</filename>
            <type>text/plain</type>
            <size>12685</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2Y4MDE5OTlkOWVhNDlkNDA5Y2VlYjJlYjNmYWE4NmUwY2RiZjNkLi44Y2M5ODlkNzhiMzQyMWY5
NDg5MzE5YThhZDU1YTUzMGQ3NjA0MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNy0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3Qua2V5cyBieSB1c2luZyBjYXJl
ZnVsIGFycmF5IGFsbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpeFNwZWVkIG9iamVjdC1hc3NpZ24uZXM2IHN0cmVzc2VzIE9iamVjdC5r
ZXlzLiBPYmplY3Qua2V5cyBpcyBvbmUgb2YgZnJlcXVlbnRseSB1c2VkCisgICAgICAgIGZ1bmN0
aW9uIGluIEpTIGFwcHMuIEx1Y2tpbHkgT2JqZWN0LmtleXMgaGFzIHNldmVyYWwgZ29vZCBmZWF0
dXJlcy4KKworICAgICAgICAxLiBPbmNlIFByb3BlcnR5TmFtZUFycmF5IGlzIGFsbG9jYXRlZCwg
d2Uga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgYXJyYXkgc2luY2UKKyAgICAgICAgd2Ug
ZG8gbm90IG5lZWQgdG8gZmlsdGVyIG91dCBrZXlzIGxpc3RlZCBpbiBQcm9wZXJ0eU5hbWVBcnJh
eS4gRXhlY3B0aW9uIGlzIFByb3h5T2JqZWN0LAorICAgICAgICBidXQgaXQgcmFyZWx5IGFwcGVh
cnMuCisKKyAgICAgICAgMi4gT2JqZWN0LmtleXMgZG9lcyBub3QgbmVlZCB0byBhY2Nlc3Mgb2Jq
ZWN0IGFmdGVyIGxpc3RpbmcgUHJvcGVydHlOYW1lQXJyYXkuIEl0IG1lYW5zCisgICAgICAgIHRo
YXQgd2UgZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgZW51bWVyYXRpb24gYXR0cmlidXRlIGNo
YW5nZSBieSB0b3VjaGluZyBvYmplY3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgZmFz
dCBwYXRoIGZvciBPYmplY3Qua2V5cydzIGFycmF5IGFsbG9jYXRpb24uIFdlIGNhcmVmdWxseSB1
c2UKKyAgICAgICAgSlNBcnJheTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQgdG8g
YWxsb2NhdGUgdGhlIHJlc3VsdC4KKworICAgICAgICBUaGlzIGZ1cnRoZXIgaW1wcm92ZXMgU2l4
U3BlZWQgb2JqZWN0LWFzc2lnbi5lczUgYnkgMTclLgorCisgICAgICAgIEJUVywgdGhlIGZ1cnRo
ZXIgb3B0aW1pemF0aW9uIG9mIE9iamVjdC5rZXlzIGNhbiBiZSBjb25zaWRlcmVkOiBpbnRyb2R1
Y2luZyBvd24gcHJvcGVydHkga2V5cworICAgICAgICBjYWNoZSB3aGljaCBpcyBzaW1pbGFyIHRv
IHRoZSBjdXJyZW50IGVudW1lcmF0aW9uIGNhY2hlLiBCdXQgdGhpcyBwYXRjaCBpcyBvcnRob2dv
bmFsIHRvCisgICAgICAgIHRoaXMgb3B0aW1pemF0aW9uIQorCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBhdGNoZWQKKworICAg
ICAgICBvYmplY3QtYXNzaWduLmVzNSAgICAgIDM4NC44NDE5Ky0xNi4wMDQ4ICAgIF4gICAgMzI4
LjY1NDYrLTE0LjM1NDMgICAgICAgXiBkZWZpbml0ZWx5IDEuMTcxMHggZmFzdGVyCisKKworICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoK
KyAgICAgICAgKEpTQzo6SlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIpOgorICAgICAgICAo
SlNDOjpqc093bmVkU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMpOgorICAgICAgICAo
SlNDOjpvd25Qcm9wZXJ0eUtleXMpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuaDoKKwogMjAxNy0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4KIAogICAgICAgICBbREZHXSBOZXdBcnJheVdpdGhTaXplKHNpemUpJ3Mgc2l6ZSBkb2VzIG5v
dCBjYXJlIG5lZ2F0aXZlIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAppbmRleCBlMTgwY2QwMzk1MGM3NDc2NGRlNDkzZTcyYzYxZmNiMDY3N2FhNTUyLi5hNGUxOWQw
NjE1Y2RjODk4NDA0MmJiZWJmNzkyN2Y0MWZmMGYzMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBcnJheS5oCkBAIC02Nyw4ICs2Nyw4IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgLy8gQ2xpZW50cyBvZiB0aGlzIGludGVyZmFjZSBt
dXN0OgogICAgIC8vICAgLSBudWxsLWNoZWNrIHRoZSByZXN1bHQgKGluZGljYXRpbmcgb3V0IG9m
IG1lbW9yeSwgb3Igb3RoZXJ3aXNlIHVuYWJsZSB0byBhbGxvY2F0ZSB2ZWN0b3IpLgogICAgIC8v
ICAgLSBjYWxsICdpbml0aWFsaXplSW5kZXgnIGZvciBhbGwgcHJvcGVydGllcyBpbiBzZXF1ZW5j
ZSwgZm9yIDAgPD0gaSA8IGluaXRpYWxMZW5ndGguCi0gICAgLy8gICAtIFByb3ZpZGUgYSB2YWxp
ZCBHQ0RlZmZlcmFsQ29udGV4dCogaWYgdGhleSBtaWdodCBnYXJiYWdlIGNvbGxlY3Qgd2hlbiBp
bml0aWFsaXppbmcgcHJvcGVydGllcywKLSAgICAvLyAgICAgb3RoZXJ3aXNlIHRoZSBjYWxsZXIg
Y2FuIHByb3ZpZGUgYSBudWxsIEdDRGVmZmVyYWxDb250ZXh0Ki4KKyAgICAvLyAgIC0gUHJvdmlk
ZSBhIHZhbGlkIEdDRGVmZXJyYWxDb250ZXh0KiBpZiB0aGV5IG1pZ2h0IGdhcmJhZ2UgY29sbGVj
dCB3aGVuIGluaXRpYWxpemluZyBwcm9wZXJ0aWVzLAorICAgIC8vICAgICBvdGhlcndpc2UgdGhl
IGNhbGxlciBjYW4gcHJvdmlkZSBhIG51bGwgR0NEZWZlcnJhbENvbnRleHQqLgogICAgIC8vICAg
LSBQcm92aWRlIGEgbG9jYWwgc3RhY2sgaW5zdGFuY2Ugb2YgT2JqZWN0SW5pdGlhbGl6YXRpb25T
Y29wZSBhdCB0aGUgY2FsbCBzaXRlLgogICAgIC8vCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3Rh
dGljIEpTQXJyYXkqIHRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKE9iamVjdEluaXRp
YWxpemF0aW9uU2NvcGUmLCBHQ0RlZmVycmFsQ29udGV4dCosIFN0cnVjdHVyZSosIHVuc2lnbmVk
IGluaXRpYWxMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
aW5kZXggZTYwNDE4NGViNzk0YjU2ZTA5NjllM2U0NTk5NDk2NzJiNjBhZDNiNC4uNjIyNTU4MzEx
OTljMGE0MDEzMGY2NTA0NDA5MTkxMWFjNjYzMjBkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCkBAIC0xNTQsNiArMTU0LDE0IEBAIGNsYXNzIEpTU3RyaW5nIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0sIGxl
bmd0aCk7CiAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQorICAgIHN0YXRpYyBKU1N0
cmluZyogY3JlYXRlSGFzT3RoZXJPd25lcihWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZl
cnJhbENvbnRleHQsIFJlZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFs
dWUtPmFzc2VydENhZ2VkKCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2YWx1ZS0+bGVuZ3Ro
KCk7CisgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKU1N0cmluZz4odm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0KSkgSlNTdHJpbmcodm0sIFdU
Rk1vdmUodmFsdWUpKTsKKyAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSwgbGVu
Z3RoKTsKKyAgICAgICAgcmV0dXJuIG5ld1N0cmluZzsKKyAgICB9CiAKICAgICBJZGVudGlmaWVy
IHRvSWRlbnRpZmllcihFeGVjU3RhdGUqKSBjb25zdDsKICAgICBBdG9taWNTdHJpbmcgdG9BdG9t
aWNTdHJpbmcoRXhlY1N0YXRlKikgY29uc3Q7CkBAIC02MzMsNiArNjQxLDE5IEBAIGlubGluZSBK
U1N0cmluZyoganNPd25lZFN0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcykKICAgICByZXR1
cm4gSlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCAqcy5pbXBsKCkpOwogfQogCitp
bmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoVk0qIHZtLCBHQ0RlZmVycmFsQ29udGV4dCog
ZGVmZXJyYWxDb250ZXh0LCBjb25zdCBTdHJpbmcmIHMpCit7CisgICAgaW50IHNpemUgPSBzLmxl
bmd0aCgpOworICAgIGlmICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0cmluZ3Mu
ZW1wdHlTdHJpbmcoKTsKKyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFVDaGFyIGMgPSBz
LmNoYXJhY3RlckF0KDApOworICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJp
bmcpCisgICAgICAgICAgICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJT
dHJpbmcoYyk7CisgICAgfQorICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25l
cigqdm0sIGRlZmVycmFsQ29udGV4dCwgKnMuaW1wbCgpKTsKK30KKwogaW5saW5lIEpTUm9wZVN0
cmluZyoganNTdHJpbmdCdWlsZGVyKFZNKiB2bSkKIHsKICAgICByZXR1cm4gSlNSb3BlU3RyaW5n
OjpjcmVhdGVOdWxsKCp2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMzNiN2Y0MzEyMzc3YmMxOTNiMmY5OTEyY2I3
ZTQ0OGIzMTAwM2MwZi4uMTBiOTk0OWZkMTZiYmM0NTU0NDgwNTkzODk4NmZlOTIwY2EzODM2NSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIK
ICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNs
dWRlICJHQ0RlZmVycmFsQ29udGV4dElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM3Nywx
MyArMzc4LDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0
b3JWYWx1ZXMoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRW
YWx1ZS50b09iamVjdChleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogCi0gICAgSlNBcnJheSogdmFsdWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsK
KyAgICBKU0FycmF5KiB2YWx1ZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwogICAg
IHRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgZXhl
YywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6Oklu
Y2x1ZGUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCisgICAgdW5z
aWduZWQgaW5kZXggPSAwOwogICAgIGF1dG8gYWRkVmFsdWUgPSBbJl0gKFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGFyZ2V0LCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwogICAgICAgICBpZiAo
IXRhcmdldC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBleGVj
LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQpAQCAtMzk4LDcgKzQwMCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICAgICAgdmFsdWUgPSB0YXJnZXQtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIHZhbHVl
cy0+cHVzaChleGVjLCB2YWx1ZSk7CisgICAgICAgIHZhbHVlcy0+cHV0RGlyZWN0SW5kZXgoZXhl
YywgaW5kZXgrKywgdmFsdWUpOwogICAgIH07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKysp
IHsKQEAgLTgyNywxNiArODI5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2Jq
ZWN0Q29uc3RydWN0b3JJcyhFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhl
IGVudW1lcmF0aW9uIGNhY2hlLgotSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2Rl
LCBEb250RW51bVByb3BlcnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUpCitKU1ZhbHVl
IG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3Bl
cnR5TmFtZU1vZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250
RW51bVByb3BlcnRpZXNNb2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFByb3BlcnR5TmFtZUFycmF5
IHByb3BlcnRpZXMoZXhlYywgcHJvcGVydHlOYW1lTW9kZSk7CiAgICAgb2JqZWN0LT5tZXRob2RU
YWJsZSh2bSktPmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBF
bnVtZXJhdGlvbk1vZGUoZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkpOwotICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwotCi0gICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgMCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVs
bHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWVudW1lcmFibGVvd25wcm9wZXJ0aWVz
CiAgICAgLy8gSWYge29iamVjdH0gaXMgYSBQcm94eSwgYW4gZXhwbGljaXQgYW5kIG9ic2VydmFi
bGUgW1tHZXRPd25Qcm9wZXJ0eV1dIG9wIGlzIHJlcXVpcmVkIHRvIGZpbHRlciBvdXQgbm9uLWVu
dW1lcmFibGUgcHJvcGVydGllcy4KQEAgLTg1MCw2ICs4NDksMzMgQEAgSlNBcnJheSogb3duUHJv
cGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1l
TW9kZSBwcm8KICAgICAgICAgcmV0dXJuIG9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGV4ZWMsIG5hbWUsIGRlc2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOwogICAg
IH07CiAKKyAgICAvLyBJZiAhbXVzdEZpbHRlclByb3BlcnR5IGFuZCBQcm9wZXJ0eU5hbWVNb2Rl
OjpTdHJpbmdzIG1vZGUsIHdlIGRvIG5vdCBuZWVkIHRvIGZpbHRlciBvdXQgYW55IGVudHJpZXMg
aW4gUHJvcGVydHlOYW1lQXJyYXkuCisgICAgLy8gV2UgY2FuIHVzZSBmYXN0IGFsbG9jYXRpb24g
YW5kIGluaXRpYWxpemF0aW9uLgorICAgIGlmICghbXVzdEZpbHRlclByb3BlcnR5ICYmIHByb3Bl
cnR5TmFtZU1vZGUgPT0gUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyAmJiBwcm9wZXJ0aWVzLnNp
emUoKSA8IE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpIHsKKyAgICAgICAgR0NEZWZlcnJhbENvbnRl
eHQgZGVmZXJyYWxDb250ZXh0KHZtLmhlYXApOworICAgICAgICBzaXplX3QgbnVtUHJvcGVydGll
cyA9IHByb3BlcnRpZXMuc2l6ZSgpOworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3Bl
IGluaXRpYWxpemF0aW9uU2NvcGUodm0pOworICAgICAgICBKU0FycmF5KiBrZXlzID0gSlNBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlc3RyaWN0ZWQoaW5pdGlhbGl6YXRpb25TY29wZSwg
JmRlZmVycmFsQ29udGV4dCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyks
IG51bVByb3BlcnRpZXMpOworICAgICAgICBpZiAoVU5MSUtFTFkoIWtleXMpKSB7CisgICAgICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVBy
b3BlcnRpZXM7IGkrKykgeworICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHBy
b3BlcnRpZXNbaV07CisgICAgICAgICAgICBBU1NFUlQoIWlkZW50aWZpZXIuaXNTeW1ib2woKSk7
CisgICAgICAgICAgICBrZXlzLT5pbml0aWFsaXplSW5kZXgoaW5pdGlhbGl6YXRpb25TY29wZSwg
aSwganNPd25lZFN0cmluZygmdm0sICZkZWZlcnJhbENvbnRleHQsIGlkZW50aWZpZXIuc3RyaW5n
KCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4ga2V5czsKKyAgICB9CisKKyAgICBKU0Fy
cmF5KiBrZXlzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOwor
ICAgIGF1dG8gcHVzaERpcmVjdCA9IFsmXSAoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJh
eSwgSlNWYWx1ZSB2YWx1ZSkgeworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywg
aW5kZXgrKywgdmFsdWUpOworICAgIH07CisKICAgICBzd2l0Y2ggKHByb3BlcnR5TmFtZU1vZGUp
IHsKICAgICBjYXNlIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3M6IHsKICAgICAgICAgc2l6ZV90
IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKQEAgLTg1Nyw4ICs4ODMsOCBAQCBK
U0FycmF5KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0
LCBQcm9wZXJ0eU5hbWVNb2RlIHBybwogICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmll
ciA9IHByb3BlcnRpZXNbaV07CiAgICAgICAgICAgICBBU1NFUlQoIWlkZW50aWZpZXIuaXNTeW1i
b2woKSk7CiAgICAgICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVy
KSkKLSAgICAgICAgICAgICAgICBrZXlzLT5wdXNoKGV4ZWMsIGpzT3duZWRTdHJpbmcoZXhlYywg
aWRlbnRpZmllci5zdHJpbmcoKSkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcHVzaERpcmVjdChleGVjLCBrZXlzLCBq
c093bmVkU3RyaW5nKGV4ZWMsIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtODcwLDggKzg5Niw4IEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvCiAgICAg
ICAgICAgICBBU1NFUlQoaWRlbnRpZmllci5pc1N5bWJvbCgpKTsKICAgICAgICAgICAgIGlmICgh
aWRlbnRpZmllci5pc1ByaXZhdGVOYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsdGVy
UHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICAgICAga2V5cy0+
cHVzaChleGVjLCBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCpp
ZGVudGlmaWVyLmltcGwoKSkpKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBudWxscHRyKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaERpcmVjdChleGVjLCBr
ZXlzLCBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlm
aWVyLmltcGwoKSkpKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODg2
LDE2ICs5MTIsMTYgQEAgSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICAgICAgICAgICAgICBw
cm9wZXJ0eVN5bWJvbHMuYXBwZW5kKGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgaWYgKGZpbHRlclByb3BlcnR5SWZOZWVkZWQoaWRlbnRpZmllcikpCi0g
ICAgICAgICAgICAgICAgICAgIGtleXMtPnB1c2goZXhlYywganNPd25lZFN0cmluZyhleGVjLCBp
ZGVudGlmaWVyLnN0cmluZygpKSk7Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgICAgIHB1c2hEaXJlY3QoZXhlYywg
a2V5cywganNPd25lZFN0cmluZyhleGVjLCBpZGVudGlmaWVyLnN0cmluZygpKSk7CisgICAgICAg
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIC8vIFRvIGVuc3VyZSB0aGUgb3JkZXIgZGVmaW5lZCBpbiB0
aGUgc3BlYyAoOS4xLjEyKSwgd2UgYXBwZW5kIHN5bWJvbHMgYXQgdGhlIGxhc3QgZWxlbWVudHMg
b2Yga2V5cy4KICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBpZGVudGlmaWVyIDogcHJvcGVydHlT
eW1ib2xzKSB7CiAgICAgICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlm
aWVyKSkKLSAgICAgICAgICAgICAgICBrZXlzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKHZt
LCBzdGF0aWNfY2FzdDxTeW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSkpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAg
ICAgcHVzaERpcmVjdChleGVjLCBrZXlzLCBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8
U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwoKSkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBicmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmlu
ZGV4IDlmMzliMzhjMmFlYzRhYjdjZDJiZmNiZDI5ZmIxYWJjMjU2ODM0NDkuLmJhY2YzYmM2MDc2
ZDUwNWYxOThiMTNkMTYzOTBjM2ZmOWY2Njg5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaApAQCAtMTIyLDcgKzEyMiw3IEBAIGlu
bGluZSBKU09iamVjdCogY29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5RGVzY3JpcHRvcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFByCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogb2JqZWN0
Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIEpTVmFsdWUgb2JqZWN0
Q29uc3RydWN0b3JHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
LCBjb25zdCBJZGVudGlmaWVyJik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJv
cGVydHlEZXNjcmlwdG9ycyhFeGVjU3RhdGUqLCBKU09iamVjdCopOwotSlNBcnJheSogb3duUHJv
cGVydHlLZXlzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lTW9kZSwgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZSk7CitKU1ZhbHVlIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqLCBK
U09iamVjdCosIFByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwogYm9v
bCB0b1Byb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320345</attachid>
            <date>2017-09-09 09:39:36 -0700</date>
            <delta_ts>2017-09-09 09:40:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176654-20170910013935.patch</filename>
            <type>text/plain</type>
            <size>14136</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2Y4MDE5OTlkOWVhNDlkNDA5Y2VlYjJlYjNmYWE4NmUwY2RiZjNkLi4yOTdkNjUzZmUyMDRmZjk3
YTIwODMyNjAwYmY5N2I3YWNjYjMyNjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNy0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3Qua2V5cyBieSB1c2luZyBjYXJl
ZnVsIGFycmF5IGFsbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpeFNwZWVkIG9iamVjdC1hc3NpZ24uZXM2IHN0cmVzc2VzIE9iamVjdC5r
ZXlzLiBPYmplY3Qua2V5cyBpcyBvbmUgb2YgZnJlcXVlbnRseSB1c2VkCisgICAgICAgIGZ1bmN0
aW9uIGluIEpTIGFwcHMuIEx1Y2tpbHkgT2JqZWN0LmtleXMgaGFzIHNldmVyYWwgZ29vZCBmZWF0
dXJlcy4KKworICAgICAgICAxLiBPbmNlIFByb3BlcnR5TmFtZUFycmF5IGlzIGFsbG9jYXRlZCwg
d2Uga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgYXJyYXkgc2luY2UKKyAgICAgICAgd2Ug
ZG8gbm90IG5lZWQgdG8gZmlsdGVyIG91dCBrZXlzIGxpc3RlZCBpbiBQcm9wZXJ0eU5hbWVBcnJh
eS4gVGhlIGV4ZWNwdGlvbiBpcyBQcm94eU9iamVjdCwKKyAgICAgICAgYnV0IGl0IHJhcmVseSBh
cHBlYXJzLiBQcm94eU9iamVjdCBjYXNlIGdvZXMgdG8gdGhlIGdlbmVyaWMgcGF0aC4KKworICAg
ICAgICAyLiBPYmplY3Qua2V5cyBkb2VzIG5vdCBuZWVkIHRvIGFjY2VzcyBvYmplY3QgYWZ0ZXIg
bGlzdGluZyBQcm9wZXJ0eU5hbWVBcnJheS4gSXQgbWVhbnMKKyAgICAgICAgdGhhdCB3ZSBkbyBu
b3QgbmVlZCB0byB3b3JyeSBhYm91dCBlbnVtZXJhdGlvbiBhdHRyaWJ1dGUgY2hhbmdlIGJ5IHRv
dWNoaW5nIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmYXN0IHBhdGggZm9y
IE9iamVjdC5rZXlzJ3MgYXJyYXkgYWxsb2NhdGlvbi4gV2UgY2FyZWZ1bGx5IHVzZQorICAgICAg
ICBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZCB0byBhbGxvY2F0ZSB0
aGUgcmVzdWx0LgorCisgICAgICAgIFRoaXMgZnVydGhlciBpbXByb3ZlcyBTaXhTcGVlZCBvYmpl
Y3QtYXNzaWduLmVzNSBieSAxMyUuCisKKwkJCQkJCQkJCQkJYmFzZWxpbmUgICAgICAgICAgICAg
ICAgICBwYXRjaGVkCisJCU1pY3JvYmVuY2htYXJrczoKKwkJICAgb2JqZWN0LWtleXMtbWFwLXZh
bHVlcyAgICAgICA3My43Nzg1Ky0yLjg3NTIgICAgIF4gICAgIDYwLjM2MzcrLTIuMjE2OSAgICAg
ICAgXiBkZWZpbml0ZWx5IDEuMjIyMnggZmFzdGVyCisJCSAgIG9iamVjdC1rZXlzICAgICAgICAg
ICAgICAgICAgMzkuOTIzNSstMS44NTk2ICAgICBeICAgICAyOC40Nzk0Ky0xLjIxNDUgICAgICAg
IF4gZGVmaW5pdGVseSAxLjQwMTh4IGZhc3RlcgorCisJCQkJCQkJCQkJCWJhc2VsaW5lICAgICAg
ICAgICAgICAgICAgcGF0Y2hlZAorCQlTaXhTcGVlZDoKKwkJICAgb2JqZWN0LWFzc2lnbi5lczUg
ICAgICAgICAgIDM4MC4wNjM3Ky0xMi4xMTE0ICAgIF4gICAgMzM1LjkwMzUrLTkuODA1MiAgICAg
ICAgXiBkZWZpbml0ZWx5IDEuMTMxNXggZmFzdGVyCisKKyAgICAgICAgQlRXLCB0aGUgZnVydGhl
ciBvcHRpbWl6YXRpb24gb2YgT2JqZWN0LmtleXMgY2FuIGJlIGNvbnNpZGVyZWQ6IGludHJvZHVj
aW5nIG93biBwcm9wZXJ0eSBrZXlzCisgICAgICAgIGNhY2hlIHdoaWNoIGlzIHNpbWlsYXIgdG8g
dGhlIGN1cnJlbnQgZW51bWVyYXRpb24gY2FjaGUuIEJ1dCB0aGlzIHBhdGNoIGlzIG9ydGhvZ29u
YWwgdG8KKyAgICAgICAgdGhpcyBvcHRpbWl6YXRpb24hCisKKworICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKEpTQzo6
SlNTdHJpbmc6OmNyZWF0ZUhhc090aGVyT3duZXIpOgorICAgICAgICAoSlNDOjpqc093bmVkU3Ry
aW5nKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6b2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMpOgorICAgICAgICAoSlNDOjpvd25Qcm9wZXJ0
eUtleXMpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKwogMjAxNy0w
OS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBb
REZHXSBOZXdBcnJheVdpdGhTaXplKHNpemUpJ3Mgc2l6ZSBkb2VzIG5vdCBjYXJlIG5lZ2F0aXZl
IHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAppbmRleCBlMTgwY2Qw
Mzk1MGM3NDc2NGRlNDkzZTcyYzYxZmNiMDY3N2FhNTUyLi5hNGUxOWQwNjE1Y2RjODk4NDA0MmJi
ZWJmNzkyN2Y0MWZmMGYzMjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCkBAIC02Nyw4ICs2Nyw4IEBAIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgLy8gQ2xpZW50cyBvZiB0aGlzIGludGVyZmFjZSBtdXN0OgogICAgIC8vICAg
LSBudWxsLWNoZWNrIHRoZSByZXN1bHQgKGluZGljYXRpbmcgb3V0IG9mIG1lbW9yeSwgb3Igb3Ro
ZXJ3aXNlIHVuYWJsZSB0byBhbGxvY2F0ZSB2ZWN0b3IpLgogICAgIC8vICAgLSBjYWxsICdpbml0
aWFsaXplSW5kZXgnIGZvciBhbGwgcHJvcGVydGllcyBpbiBzZXF1ZW5jZSwgZm9yIDAgPD0gaSA8
IGluaXRpYWxMZW5ndGguCi0gICAgLy8gICAtIFByb3ZpZGUgYSB2YWxpZCBHQ0RlZmZlcmFsQ29u
dGV4dCogaWYgdGhleSBtaWdodCBnYXJiYWdlIGNvbGxlY3Qgd2hlbiBpbml0aWFsaXppbmcgcHJv
cGVydGllcywKLSAgICAvLyAgICAgb3RoZXJ3aXNlIHRoZSBjYWxsZXIgY2FuIHByb3ZpZGUgYSBu
dWxsIEdDRGVmZmVyYWxDb250ZXh0Ki4KKyAgICAvLyAgIC0gUHJvdmlkZSBhIHZhbGlkIEdDRGVm
ZXJyYWxDb250ZXh0KiBpZiB0aGV5IG1pZ2h0IGdhcmJhZ2UgY29sbGVjdCB3aGVuIGluaXRpYWxp
emluZyBwcm9wZXJ0aWVzLAorICAgIC8vICAgICBvdGhlcndpc2UgdGhlIGNhbGxlciBjYW4gcHJv
dmlkZSBhIG51bGwgR0NEZWZlcnJhbENvbnRleHQqLgogICAgIC8vICAgLSBQcm92aWRlIGEgbG9j
YWwgc3RhY2sgaW5zdGFuY2Ugb2YgT2JqZWN0SW5pdGlhbGl6YXRpb25TY29wZSBhdCB0aGUgY2Fs
bCBzaXRlLgogICAgIC8vCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTQXJyYXkqIHRy
eUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVkKE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUm
LCBHQ0RlZmVycmFsQ29udGV4dCosIFN0cnVjdHVyZSosIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXggZTYwNDE4NGVi
Nzk0YjU2ZTA5NjllM2U0NTk5NDk2NzJiNjBhZDNiNC4uNjIyNTU4MzExOTljMGE0MDEzMGY2NTA0
NDA5MTkxMWFjNjYzMjBkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCkBAIC0xNTQsNiArMTU0LDE0IEBAIGNsYXNzIEpTU3RyaW5nIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24odm0sIGxlbmd0aCk7CiAgICAgICAg
IHJldHVybiBuZXdTdHJpbmc7CiAgICAgfQorICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlSGFz
T3RoZXJPd25lcihWTSYgdm0sIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIFJl
ZjxTdHJpbmdJbXBsPiYmIHZhbHVlKQorICAgIHsKKyAgICAgICAgdmFsdWUtPmFzc2VydENhZ2Vk
KCk7CisgICAgICAgIHNpemVfdCBsZW5ndGggPSB2YWx1ZS0+bGVuZ3RoKCk7CisgICAgICAgIEpT
U3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4o
dm0uaGVhcCwgZGVmZXJyYWxDb250ZXh0KSkgSlNTdHJpbmcodm0sIFdURk1vdmUodmFsdWUpKTsK
KyAgICAgICAgbmV3U3RyaW5nLT5maW5pc2hDcmVhdGlvbih2bSwgbGVuZ3RoKTsKKyAgICAgICAg
cmV0dXJuIG5ld1N0cmluZzsKKyAgICB9CiAKICAgICBJZGVudGlmaWVyIHRvSWRlbnRpZmllcihF
eGVjU3RhdGUqKSBjb25zdDsKICAgICBBdG9taWNTdHJpbmcgdG9BdG9taWNTdHJpbmcoRXhlY1N0
YXRlKikgY29uc3Q7CkBAIC02MzMsNiArNjQxLDE5IEBAIGlubGluZSBKU1N0cmluZyoganNPd25l
ZFN0cmluZyhWTSogdm0sIGNvbnN0IFN0cmluZyYgcykKICAgICByZXR1cm4gSlNTdHJpbmc6OmNy
ZWF0ZUhhc090aGVyT3duZXIoKnZtLCAqcy5pbXBsKCkpOwogfQogCitpbmxpbmUgSlNTdHJpbmcq
IGpzT3duZWRTdHJpbmcoVk0qIHZtLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0
LCBjb25zdCBTdHJpbmcmIHMpCit7CisgICAgaW50IHNpemUgPSBzLmxlbmd0aCgpOworICAgIGlm
ICghc2l6ZSkKKyAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0cmluZ3MuZW1wdHlTdHJpbmcoKTsK
KyAgICBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIFVDaGFyIGMgPSBzLmNoYXJhY3RlckF0KDAp
OworICAgICAgICBpZiAoYyA8PSBtYXhTaW5nbGVDaGFyYWN0ZXJTdHJpbmcpCisgICAgICAgICAg
ICByZXR1cm4gdm0tPnNtYWxsU3RyaW5ncy5zaW5nbGVDaGFyYWN0ZXJTdHJpbmcoYyk7CisgICAg
fQorICAgIHJldHVybiBKU1N0cmluZzo6Y3JlYXRlSGFzT3RoZXJPd25lcigqdm0sIGRlZmVycmFs
Q29udGV4dCwgKnMuaW1wbCgpKTsKK30KKwogaW5saW5lIEpTUm9wZVN0cmluZyoganNTdHJpbmdC
dWlsZGVyKFZNKiB2bSkKIHsKICAgICByZXR1cm4gSlNSb3BlU3RyaW5nOjpjcmVhdGVOdWxsKCp2
bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggMzNiN2Y0MzEyMzc3YmMxOTNiMmY5OTEyY2I3ZTQ0OGIzMTAwM2MwZi4u
MTBiOTk0OWZkMTZiYmM0NTU0NDgwNTkzODk4NmZlOTIwY2EzODM2NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMjUs
NiArMjUsNyBAQAogI2luY2x1ZGUgIkJ1dHRlcmZseUlubGluZXMuaCIKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNpbmNsdWRlICJHQ0RlZmVycmFs
Q29udGV4dElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTM3NywxMyArMzc4LDE0IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1ZS50b09iamVjdChl
eGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCi0gICAgSlNBcnJh
eSogdmFsdWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBKU0FycmF5KiB2
YWx1ZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0
aWVzKGV4ZWMsIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MpOwogICAgIHRhcmdldC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCwgZXhlYywgcHJvcGVydGllcywg
RW51bWVyYXRpb25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCisgICAgdW5zaWduZWQgaW5kZXggPSAw
OwogICAgIGF1dG8gYWRkVmFsdWUgPSBbJl0gKFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIHsK
ICAgICAgICAgUHJvcGVydHlTbG90IHNsb3QodGFyZ2V0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwogICAgICAgICBpZiAoIXRhcmdldC0+bWV0aG9k
VGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eVNsb3QodGFyZ2V0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpKQpAQCAtMzk4LDcgKzQwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgdmFs
dWUgPSB0YXJnZXQtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogCi0gICAgICAgIHZhbHVlcy0+cHVzaChleGVjLCB2
YWx1ZSk7CisgICAgICAgIHZhbHVlcy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywgdmFs
dWUpOwogICAgIH07CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBudW1Qcm9wZXJ0aWVzID0g
cHJvcGVydGllcy5zaXplKCk7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKQEAgLTgyNywxNiAr
ODI5LDEzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
cyhFeGVjU3RhdGUqIGV4ZWMpCiB9CiAKIC8vIEZJWE1FOiBVc2UgdGhlIGVudW1lcmF0aW9uIGNh
Y2hlLgotSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51bVByb3Bl
cnRpZXNNb2RlIGRvbnRFbnVtUHJvcGVydGllc01vZGUpCitKU1ZhbHVlIG93blByb3BlcnR5S2V5
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJv
cGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNN
b2RlKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhl
YywgcHJvcGVydHlOYW1lTW9kZSk7CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93
blByb3BlcnR5TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUo
ZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IG51bGxwdHIpOwotCi0gICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhl
YywgMCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTI2Mi8jc2VjLWVudW1lcmFibGVvd25wcm9wZXJ0aWVzCiAgICAgLy8gSWYge29i
amVjdH0gaXMgYSBQcm94eSwgYW4gZXhwbGljaXQgYW5kIG9ic2VydmFibGUgW1tHZXRPd25Qcm9w
ZXJ0eV1dIG9wIGlzIHJlcXVpcmVkIHRvIGZpbHRlciBvdXQgbm9uLWVudW1lcmFibGUgcHJvcGVy
dGllcy4KQEAgLTg1MCw2ICs4NDksMzMgQEAgSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICAg
ICAgcmV0dXJuIG9iamVjdC0+Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGV4ZWMsIG5hbWUsIGRl
c2NyaXB0b3IpICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZSgpOwogICAgIH07CiAKKyAgICAvLyBJ
ZiAhbXVzdEZpbHRlclByb3BlcnR5IGFuZCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzIG1vZGUs
IHdlIGRvIG5vdCBuZWVkIHRvIGZpbHRlciBvdXQgYW55IGVudHJpZXMgaW4gUHJvcGVydHlOYW1l
QXJyYXkuCisgICAgLy8gV2UgY2FuIHVzZSBmYXN0IGFsbG9jYXRpb24gYW5kIGluaXRpYWxpemF0
aW9uLgorICAgIGlmICghbXVzdEZpbHRlclByb3BlcnR5ICYmIHByb3BlcnR5TmFtZU1vZGUgPT0g
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyAmJiBwcm9wZXJ0aWVzLnNpemUoKSA8IE1JTl9TUEFS
U0VfQVJSQVlfSU5ERVgpIHsKKyAgICAgICAgR0NEZWZlcnJhbENvbnRleHQgZGVmZXJyYWxDb250
ZXh0KHZtLmhlYXApOworICAgICAgICBzaXplX3QgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMu
c2l6ZSgpOworICAgICAgICBPYmplY3RJbml0aWFsaXphdGlvblNjb3BlIGluaXRpYWxpemF0aW9u
U2NvcGUodm0pOworICAgICAgICBKU0FycmF5KiBrZXlzID0gSlNBcnJheTo6dHJ5Q3JlYXRlVW5p
bml0aWFsaXplZFJlc3RyaWN0ZWQoaW5pdGlhbGl6YXRpb25TY29wZSwgJmRlZmVycmFsQ29udGV4
dCwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
VHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIG51bVByb3BlcnRpZXMp
OworICAgICAgICBpZiAoVU5MSUtFTFkoIWtleXMpKSB7CisgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZXhlYywgc2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVByb3BlcnRpZXM7IGkrKykg
eworICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNbaV07Cisg
ICAgICAgICAgICBBU1NFUlQoIWlkZW50aWZpZXIuaXNTeW1ib2woKSk7CisgICAgICAgICAgICBr
ZXlzLT5pbml0aWFsaXplSW5kZXgoaW5pdGlhbGl6YXRpb25TY29wZSwgaSwganNPd25lZFN0cmlu
Zygmdm0sICZkZWZlcnJhbENvbnRleHQsIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4ga2V5czsKKyAgICB9CisKKyAgICBKU0FycmF5KiBrZXlzID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGF1dG8gcHVzaERp
cmVjdCA9IFsmXSAoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgSlNWYWx1ZSB2YWx1
ZSkgeworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywgdmFsdWUp
OworICAgIH07CisKICAgICBzd2l0Y2ggKHByb3BlcnR5TmFtZU1vZGUpIHsKICAgICBjYXNlIFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3M6IHsKICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKQEAgLTg1Nyw4ICs4ODMsOCBAQCBKU0FycmF5KiBvd25Qcm9w
ZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVN
b2RlIHBybwogICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNb
aV07CiAgICAgICAgICAgICBBU1NFUlQoIWlkZW50aWZpZXIuaXNTeW1ib2woKSk7CiAgICAgICAg
ICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVyKSkKLSAgICAgICAgICAg
ICAgICBrZXlzLT5wdXNoKGV4ZWMsIGpzT3duZWRTdHJpbmcoZXhlYywgaWRlbnRpZmllci5zdHJp
bmcoKSkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgICAgICAgICAgICAgcHVzaERpcmVjdChleGVjLCBrZXlzLCBqc093bmVkU3RyaW5nKGV4
ZWMsIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODcw
LDggKzg5Niw4IEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvCiAgICAgICAgICAgICBBU1NFUlQo
aWRlbnRpZmllci5pc1N5bWJvbCgpKTsKICAgICAgICAgICAgIGlmICghaWRlbnRpZmllci5pc1By
aXZhdGVOYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRl
ZChpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICAgICAga2V5cy0+cHVzaChleGVjLCBTeW1i
b2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwo
KSkpKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaERpcmVjdChleGVjLCBrZXlzLCBTeW1ib2w6OmNy
ZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwoKSkpKTsK
KyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODg2LDE2ICs5MTIsMTYgQEAg
SlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN5bWJvbHMu
YXBwZW5kKGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
aWYgKGZpbHRlclByb3BlcnR5SWZOZWVkZWQoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAg
ICAgIGtleXMtPnB1c2goZXhlYywganNPd25lZFN0cmluZyhleGVjLCBpZGVudGlmaWVyLnN0cmlu
ZygpKSk7Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisgICAgICAgICAgICAgICAgICAgIHB1c2hEaXJlY3QoZXhlYywga2V5cywganNPd25lZFN0
cmluZyhleGVjLCBpZGVudGlmaWVyLnN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFRvIGVuc3VyZSB0aGUgb3JkZXIgZGVmaW5lZCBpbiB0aGUgc3BlYyAoOS4xLjEy
KSwgd2UgYXBwZW5kIHN5bWJvbHMgYXQgdGhlIGxhc3QgZWxlbWVudHMgb2Yga2V5cy4KICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBpZGVudGlmaWVyIDogcHJvcGVydHlTeW1ib2xzKSB7CiAgICAg
ICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVyKSkKLSAgICAgICAg
ICAgICAgICBrZXlzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSkpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcHVzaERpcmVjdChl
eGVjLCBrZXlzLCBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCpp
ZGVudGlmaWVyLmltcGwoKSkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmluZGV4IDlmMzliMzhjMmFl
YzRhYjdjZDJiZmNiZDI5ZmIxYWJjMjU2ODM0NDkuLmJhY2YzYmM2MDc2ZDUwNWYxOThiMTNkMTYz
OTBjM2ZmOWY2Njg5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaApAQCAtMTIyLDcgKzEyMiw3IEBAIGlubGluZSBKU09iamVjdCog
Y29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFByCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVl
emUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlm
aWVyJik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
cyhFeGVjU3RhdGUqLCBKU09iamVjdCopOwotSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZSk7CitKU1ZhbHVlIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqLCBKU09iamVjdCosIFByb3Bl
cnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwogYm9vbCB0b1Byb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDRhZTFkNWI3ZjI0YTBlNWQ3NDUwNTRmNzg0MTAzZDRjNmY4NDY1OTIu
LjMxODhiYTIxMGQ1N2JhMmYyZmEyNTRhMjUwYzQyZDY5ZmViYjkwZDkgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTctMDktMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ10gT3B0aW1pemUgT2JqZWN0LmtleXMgYnkgdXNpbmcgY2FyZWZ1bCBhcnJheSBh
bGxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzY2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9vYmplY3Qta2V5cy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0
KToKKwogMjAxNy0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBbREZHXSBOZXdBcnJheVdpdGhTaXplKHNpemUpJ3Mgc2l6ZSBkb2VzIG5vdCBj
YXJlIG5lZ2F0aXZlIHplcm8KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29i
amVjdC1rZXlzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWtleXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGI0MTEyOGIzNzVjY2JiYjRmY2FkMDFmMDBiYmRlNzkwMjFkNmQwNQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1rZXlzLmpzCkBAIC0w
LDAgKzEsMTMgQEAKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpIHsKKyAgICBvYmplY3RbaSArICdwcm9wJ10gPSBpOworfQorCitmdW5jdGlvbiB0ZXN0KG9i
amVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRl
c3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgIHRlc3Qob2JqZWN0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320346</attachid>
            <date>2017-09-09 09:40:46 -0700</date>
            <delta_ts>2017-09-09 10:09:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176654-20170910014044.patch</filename>
            <type>text/plain</type>
            <size>14230</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2Y4MDE5OTlkOWVhNDlkNDA5Y2VlYjJlYjNmYWE4NmUwY2RiZjNkLi42NzQwNWVlNjYwYTI4NWUz
Y2M5NWM5ZTBjMmQwOTY4MjZlOWNjM2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNy0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3Qua2V5cyBieSB1c2luZyBjYXJl
ZnVsIGFycmF5IGFsbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpeFNwZWVkIG9iamVjdC1hc3NpZ24uZXM2IHN0cmVzc2VzIE9iamVjdC5r
ZXlzLiBPYmplY3Qua2V5cyBpcyBvbmUgb2YgZnJlcXVlbnRseSB1c2VkCisgICAgICAgIGZ1bmN0
aW9uIGluIEpTIGFwcHMuIEx1Y2tpbHkgT2JqZWN0LmtleXMgaGFzIHNldmVyYWwgZ29vZCBmZWF0
dXJlcy4KKworICAgICAgICAxLiBPbmNlIFByb3BlcnR5TmFtZUFycmF5IGlzIGFsbG9jYXRlZCwg
d2Uga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgYXJyYXkgc2luY2UKKyAgICAgICAgd2Ug
ZG8gbm90IG5lZWQgdG8gZmlsdGVyIG91dCBrZXlzIGxpc3RlZCBpbiBQcm9wZXJ0eU5hbWVBcnJh
eS4gVGhlIGV4ZWNwdGlvbiBpcyBQcm94eU9iamVjdCwKKyAgICAgICAgYnV0IGl0IHJhcmVseSBh
cHBlYXJzLiBQcm94eU9iamVjdCBjYXNlIGdvZXMgdG8gdGhlIGdlbmVyaWMgcGF0aC4KKworICAg
ICAgICAyLiBPYmplY3Qua2V5cyBkb2VzIG5vdCBuZWVkIHRvIGFjY2VzcyBvYmplY3QgYWZ0ZXIg
bGlzdGluZyBQcm9wZXJ0eU5hbWVBcnJheS4gSXQgbWVhbnMKKyAgICAgICAgdGhhdCB3ZSBkbyBu
b3QgbmVlZCB0byB3b3JyeSBhYm91dCBlbnVtZXJhdGlvbiBhdHRyaWJ1dGUgY2hhbmdlIGJ5IHRv
dWNoaW5nIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmYXN0IHBhdGggZm9y
IE9iamVjdC5rZXlzJ3MgYXJyYXkgYWxsb2NhdGlvbi4gV2UgY2FyZWZ1bGx5IHVzZQorICAgICAg
ICBKU0FycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkUmVzdHJpY3RlZCB0byBhbGxvY2F0ZSB0
aGUgcmVzdWx0LgorCisgICAgICAgIFRoaXMgZnVydGhlciBpbXByb3ZlcyBTaXhTcGVlZCBvYmpl
Y3QtYXNzaWduLmVzNSBieSAxMyUuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICBwYXRjaGVkCisgICAgICAgIE1p
Y3JvYmVuY2htYXJrczoKKyAgICAgICAgICAgb2JqZWN0LWtleXMtbWFwLXZhbHVlcyAgICAgICA3
My43Nzg1Ky0yLjg3NTIgICAgIF4gICAgIDYwLjM2MzcrLTIuMjE2OSAgICAgICAgXiBkZWZpbml0
ZWx5IDEuMjIyMnggZmFzdGVyCisgICAgICAgICAgIG9iamVjdC1rZXlzICAgICAgICAgICAgICAg
ICAgMzkuOTIzNSstMS44NTk2ICAgICBeICAgICAyOC40Nzk0Ky0xLjIxNDUgICAgICAgIF4gZGVm
aW5pdGVseSAxLjQwMTh4IGZhc3RlcgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgcGF0Y2hlZAorICAgICAgICBT
aXhTcGVlZDoKKyAgICAgICAgICAgb2JqZWN0LWFzc2lnbi5lczUgICAgICAgICAgIDM4MC4wNjM3
Ky0xMi4xMTE0ICAgIF4gICAgMzM1LjkwMzUrLTkuODA1MiAgICAgICAgXiBkZWZpbml0ZWx5IDEu
MTMxNXggZmFzdGVyCisKKyAgICAgICAgQlRXLCB0aGUgZnVydGhlciBvcHRpbWl6YXRpb24gb2Yg
T2JqZWN0LmtleXMgY2FuIGJlIGNvbnNpZGVyZWQ6IGludHJvZHVjaW5nIG93biBwcm9wZXJ0eSBr
ZXlzCisgICAgICAgIGNhY2hlIHdoaWNoIGlzIHNpbWlsYXIgdG8gdGhlIGN1cnJlbnQgZW51bWVy
YXRpb24gY2FjaGUuIEJ1dCB0aGlzIHBhdGNoIGlzIG9ydGhvZ29uYWwgdG8KKyAgICAgICAgdGhp
cyBvcHRpbWl6YXRpb24hCisKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OkpTU3RyaW5nOjpjcmVhdGVIYXNP
dGhlck93bmVyKToKKyAgICAgICAgKEpTQzo6anNPd25lZFN0cmluZyk6CisgICAgICAgICogcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVj
dG9yVmFsdWVzKToKKyAgICAgICAgKEpTQzo6b3duUHJvcGVydHlLZXlzKToKKyAgICAgICAgKiBy
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmg6CisKIDIwMTctMDktMDggIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gTmV3QXJyYXlXaXRoU2l6
ZShzaXplKSdzIHNpemUgZG9lcyBub3QgY2FyZSBuZWdhdGl2ZSB6ZXJvCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggZTE4MGNkMDM5NTBjNzQ3NjRkZTQ5M2U3MmM2
MWZjYjA2NzdhYTU1Mi4uYTRlMTlkMDYxNWNkYzg5ODQwNDJiYmViZjc5MjdmNDFmZjBmMzI2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtNjcsOCArNjcsOCBA
QCBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIC8vIENsaWVu
dHMgb2YgdGhpcyBpbnRlcmZhY2UgbXVzdDoKICAgICAvLyAgIC0gbnVsbC1jaGVjayB0aGUgcmVz
dWx0IChpbmRpY2F0aW5nIG91dCBvZiBtZW1vcnksIG9yIG90aGVyd2lzZSB1bmFibGUgdG8gYWxs
b2NhdGUgdmVjdG9yKS4KICAgICAvLyAgIC0gY2FsbCAnaW5pdGlhbGl6ZUluZGV4JyBmb3IgYWxs
IHByb3BlcnRpZXMgaW4gc2VxdWVuY2UsIGZvciAwIDw9IGkgPCBpbml0aWFsTGVuZ3RoLgotICAg
IC8vICAgLSBQcm92aWRlIGEgdmFsaWQgR0NEZWZmZXJhbENvbnRleHQqIGlmIHRoZXkgbWlnaHQg
Z2FyYmFnZSBjb2xsZWN0IHdoZW4gaW5pdGlhbGl6aW5nIHByb3BlcnRpZXMsCi0gICAgLy8gICAg
IG90aGVyd2lzZSB0aGUgY2FsbGVyIGNhbiBwcm92aWRlIGEgbnVsbCBHQ0RlZmZlcmFsQ29udGV4
dCouCisgICAgLy8gICAtIFByb3ZpZGUgYSB2YWxpZCBHQ0RlZmVycmFsQ29udGV4dCogaWYgdGhl
eSBtaWdodCBnYXJiYWdlIGNvbGxlY3Qgd2hlbiBpbml0aWFsaXppbmcgcHJvcGVydGllcywKKyAg
ICAvLyAgICAgb3RoZXJ3aXNlIHRoZSBjYWxsZXIgY2FuIHByb3ZpZGUgYSBudWxsIEdDRGVmZXJy
YWxDb250ZXh0Ki4KICAgICAvLyAgIC0gUHJvdmlkZSBhIGxvY2FsIHN0YWNrIGluc3RhbmNlIG9m
IE9iamVjdEluaXRpYWxpemF0aW9uU2NvcGUgYXQgdGhlIGNhbGwgc2l0ZS4KICAgICAvLwogICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0FycmF5KiB0cnlDcmVhdGVVbmluaXRpYWxpemVk
UmVzdHJpY3RlZChPYmplY3RJbml0aWFsaXphdGlvblNjb3BlJiwgR0NEZWZlcnJhbENvbnRleHQq
LCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCmluZGV4IGU2MDQxODRlYjc5NGI1NmUwOTY5ZTNlNDU5OTQ5
NjcyYjYwYWQzYjQuLjYyMjU1ODMxMTk5YzBhNDAxMzBmNjUwNDQwOTE5MTFhYzY2MzIwZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaApAQCAtMTU0LDYgKzE1NCwx
NCBAQCBjbGFzcyBKU1N0cmluZyA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBuZXdTdHJpbmct
PmZpbmlzaENyZWF0aW9uKHZtLCBsZW5ndGgpOwogICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwog
ICAgIH0KKyAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZUhhc090aGVyT3duZXIoVk0mIHZtLCBH
Q0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBSZWY8U3RyaW5nSW1wbD4mJiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIHZhbHVlLT5hc3NlcnRDYWdlZCgpOworICAgICAgICBzaXplX3Qg
bGVuZ3RoID0gdmFsdWUtPmxlbmd0aCgpOworICAgICAgICBKU1N0cmluZyogbmV3U3RyaW5nID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KHZtLmhlYXAsIGRlZmVycmFsQ29u
dGV4dCkpIEpTU3RyaW5nKHZtLCBXVEZNb3ZlKHZhbHVlKSk7CisgICAgICAgIG5ld1N0cmluZy0+
ZmluaXNoQ3JlYXRpb24odm0sIGxlbmd0aCk7CisgICAgICAgIHJldHVybiBuZXdTdHJpbmc7Cisg
ICAgfQogCiAgICAgSWRlbnRpZmllciB0b0lkZW50aWZpZXIoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKEV4ZWNTdGF0ZSopIGNvbnN0OwpAQCAtNjMz
LDYgKzY0MSwxOSBAQCBpbmxpbmUgSlNTdHJpbmcqIGpzT3duZWRTdHJpbmcoVk0qIHZtLCBjb25z
dCBTdHJpbmcmIHMpCiAgICAgcmV0dXJuIEpTU3RyaW5nOjpjcmVhdGVIYXNPdGhlck93bmVyKCp2
bSwgKnMuaW1wbCgpKTsKIH0KIAoraW5saW5lIEpTU3RyaW5nKiBqc093bmVkU3RyaW5nKFZNKiB2
bSwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgY29uc3QgU3RyaW5nJiBzKQor
eworICAgIGludCBzaXplID0gcy5sZW5ndGgoKTsKKyAgICBpZiAoIXNpemUpCisgICAgICAgIHJl
dHVybiB2bS0+c21hbGxTdHJpbmdzLmVtcHR5U3RyaW5nKCk7CisgICAgaWYgKHNpemUgPT0gMSkg
eworICAgICAgICBVQ2hhciBjID0gcy5jaGFyYWN0ZXJBdCgwKTsKKyAgICAgICAgaWYgKGMgPD0g
bWF4U2luZ2xlQ2hhcmFjdGVyU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIHZtLT5zbWFsbFN0
cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGMpOworICAgIH0KKyAgICByZXR1cm4gSlNTdHJp
bmc6OmNyZWF0ZUhhc090aGVyT3duZXIoKnZtLCBkZWZlcnJhbENvbnRleHQsICpzLmltcGwoKSk7
Cit9CisKIGlubGluZSBKU1JvcGVTdHJpbmcqIGpzU3RyaW5nQnVpbGRlcihWTSogdm0pCiB7CiAg
ICAgcmV0dXJuIEpTUm9wZVN0cmluZzo6Y3JlYXRlTnVsbCgqdm0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDMzYjdm
NDMxMjM3N2JjMTkzYjJmOTkxMmNiN2U0NDhiMzEwMDNjMGYuLjEwYjk5NDlmZDE2YmJjNDU1NDQ4
MDU5Mzg5ODZmZTkyMGNhMzgzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJCdXR0ZXJmbHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiRXJyb3IuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCisjaW5jbHVkZSAiR0NEZWZlcnJhbENvbnRleHRJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCkBAIC0zNzcsMTMgKzM3OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU09i
amVjdCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIEpTQXJyYXkqIHZhbHVlcyA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgSlNBcnJheSogdmFsdWVzID0gY29uc3RydWN0RW1w
dHlBcnJheShleGVjLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCiAgICAgUHJvcGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5h
bWVNb2RlOjpTdHJpbmdzKTsKICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJv
cGVydHlOYW1lcyh0YXJnZXQsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250
RW51bVByb3BlcnRpZXNNb2RlOjpJbmNsdWRlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAorICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBhdXRvIGFkZFZhbHVl
ID0gWyZdIChQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7CiAgICAgICAgIFByb3BlcnR5U2xv
dCBzbG90KHRhcmdldCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blBy
b3BlcnR5KTsKICAgICAgICAgaWYgKCF0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJv
cGVydHlTbG90KHRhcmdldCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTM5OCw3ICs0
MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yVmFs
dWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHZhbHVlID0gdGFyZ2V0LT5nZXQoZXhl
YywgcHJvcGVydHlOYW1lKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9p
ZCgpKTsKIAotICAgICAgICB2YWx1ZXMtPnB1c2goZXhlYywgdmFsdWUpOworICAgICAgICB2YWx1
ZXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIHZhbHVlKTsKICAgICB9OwogCiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMCwgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOyBp
IDwgbnVtUHJvcGVydGllczsgaSsrKSB7CkBAIC04MjcsMTYgKzgyOSwxMyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRlKiBleGVjKQog
fQogCiAvLyBGSVhNRTogVXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KLUpTQXJyYXkqIG93blBy
b3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFt
ZU1vZGUgcHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVBy
b3BlcnRpZXNNb2RlKQorSlNWYWx1ZSBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRF
bnVtUHJvcGVydGllc01vZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKIHsKICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBQcm9wZXJ0eU5hbWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIHByb3BlcnR5TmFtZU1vZGUp
OwogICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVj
dCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRpb25Nb2RlKGRvbnRFbnVtUHJvcGVydGllc01v
ZGUpKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLQotICAgIEpT
QXJyYXkqIGtleXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1l
bnVtZXJhYmxlb3ducHJvcGVydGllcwogICAgIC8vIElmIHtvYmplY3R9IGlzIGEgUHJveHksIGFu
IGV4cGxpY2l0IGFuZCBvYnNlcnZhYmxlIFtbR2V0T3duUHJvcGVydHldXSBvcCBpcyByZXF1aXJl
ZCB0byBmaWx0ZXIgb3V0IG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuCkBAIC04NTAsNiArODQ5
LDMzIEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvCiAgICAgICAgIHJldHVybiBvYmplY3QtPmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBuYW1lLCBkZXNjcmlwdG9yKSAmJiBkZXNjcmlw
dG9yLmVudW1lcmFibGUoKTsKICAgICB9OwogCisgICAgLy8gSWYgIW11c3RGaWx0ZXJQcm9wZXJ0
eSBhbmQgUHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncyBtb2RlLCB3ZSBkbyBub3QgbmVlZCB0byBm
aWx0ZXIgb3V0IGFueSBlbnRyaWVzIGluIFByb3BlcnR5TmFtZUFycmF5LgorICAgIC8vIFdlIGNh
biB1c2UgZmFzdCBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4KKyAgICBpZiAoIW11c3RG
aWx0ZXJQcm9wZXJ0eSAmJiBwcm9wZXJ0eU5hbWVNb2RlID09IFByb3BlcnR5TmFtZU1vZGU6OlN0
cmluZ3MgJiYgcHJvcGVydGllcy5zaXplKCkgPCBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7Cisg
ICAgICAgIEdDRGVmZXJyYWxDb250ZXh0IGRlZmVycmFsQ29udGV4dCh2bS5oZWFwKTsKKyAgICAg
ICAgc2l6ZV90IG51bVByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLnNpemUoKTsKKyAgICAgICAgT2Jq
ZWN0SW5pdGlhbGl6YXRpb25TY29wZSBpbml0aWFsaXphdGlvblNjb3BlKHZtKTsKKyAgICAgICAg
SlNBcnJheSoga2V5cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWRSZXN0cmljdGVk
KGluaXRpYWxpemF0aW9uU2NvcGUsICZkZWZlcnJhbENvbnRleHQsIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9u
KEFycmF5V2l0aENvbnRpZ3VvdXMpLCBudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgaWYgKFVOTElL
RUxZKCFrZXlzKSkgeworICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHNj
b3BlKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0
IGF1dG8mIGlkZW50aWZpZXIgPSBwcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgQVNTRVJUKCFp
ZGVudGlmaWVyLmlzU3ltYm9sKCkpOworICAgICAgICAgICAga2V5cy0+aW5pdGlhbGl6ZUluZGV4
KGluaXRpYWxpemF0aW9uU2NvcGUsIGksIGpzT3duZWRTdHJpbmcoJnZtLCAmZGVmZXJyYWxDb250
ZXh0LCBpZGVudGlmaWVyLnN0cmluZygpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGtl
eXM7CisgICAgfQorCisgICAgSlNBcnJheSoga2V5cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhl
YywgbnVsbHB0cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBhdXRvIHB1c2hEaXJlY3QgPSBbJl0gKEV4ZWNTdGF0
ZSogZXhlYywgSlNBcnJheSogYXJyYXksIEpTVmFsdWUgdmFsdWUpIHsKKyAgICAgICAgYXJyYXkt
PnB1dERpcmVjdEluZGV4KGV4ZWMsIGluZGV4KyssIHZhbHVlKTsKKyAgICB9OworCiAgICAgc3dp
dGNoIChwcm9wZXJ0eU5hbWVNb2RlKSB7CiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJp
bmdzOiB7CiAgICAgICAgIHNpemVfdCBudW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7
CkBAIC04NTcsOCArODgzLDggQEAgSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iamVjdCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICAgICAgICAg
IGNvbnN0IGF1dG8mIGlkZW50aWZpZXIgPSBwcm9wZXJ0aWVzW2ldOwogICAgICAgICAgICAgQVNT
RVJUKCFpZGVudGlmaWVyLmlzU3ltYm9sKCkpOwogICAgICAgICAgICAgaWYgKGZpbHRlclByb3Bl
cnR5SWZOZWVkZWQoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAga2V5cy0+cHVzaChleGVj
LCBqc093bmVkU3RyaW5nKGV4ZWMsIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKLSAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHB1
c2hEaXJlY3QoZXhlYywga2V5cywganNPd25lZFN0cmluZyhleGVjLCBpZGVudGlmaWVyLnN0cmlu
ZygpKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAg
ICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTg3MCw4ICs4OTYsOCBAQCBKU0FycmF5
KiBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9w
ZXJ0eU5hbWVNb2RlIHBybwogICAgICAgICAgICAgQVNTRVJUKGlkZW50aWZpZXIuaXNTeW1ib2wo
KSk7CiAgICAgICAgICAgICBpZiAoIWlkZW50aWZpZXIuaXNQcml2YXRlTmFtZSgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGZpbHRlclByb3BlcnR5SWZOZWVkZWQoaWRlbnRpZmllcikpCi0gICAg
ICAgICAgICAgICAgICAgIGtleXMtPnB1c2goZXhlYywgU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRp
Y19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKSk7Ci0gICAgICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAg
ICAgIHB1c2hEaXJlY3QoZXhlYywga2V5cywgU3ltYm9sOjpjcmVhdGUodm0sIHN0YXRpY19jYXN0
PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKSk7CisgICAgICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBicmVhazsKQEAgLTg4NiwxNiArOTEyLDE2IEBAIEpTQXJyYXkqIG93blByb3BlcnR5
S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUg
cHJvCiAgICAgICAgICAgICAgICAgcHJvcGVydHlTeW1ib2xzLmFwcGVuZChpZGVudGlmaWVyKTsK
ICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJQcm9wZXJ0eUlm
TmVlZGVkKGlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgICAgICBrZXlzLT5wdXNoKGV4ZWMs
IGpzT3duZWRTdHJpbmcoZXhlYywgaWRlbnRpZmllci5zdHJpbmcoKSkpOwotICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoRGlyZWN0KGV4ZWMsIGtleXMsIGpzT3duZWRTdHJpbmcoZXhlYywgaWRlbnRpZmll
ci5zdHJpbmcoKSkpOworICAgICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBUbyBlbnN1cmUg
dGhlIG9yZGVyIGRlZmluZWQgaW4gdGhlIHNwZWMgKDkuMS4xMiksIHdlIGFwcGVuZCBzeW1ib2xz
IGF0IHRoZSBsYXN0IGVsZW1lbnRzIG9mIGtleXMuCiAgICAgICAgIGZvciAoY29uc3QgYXV0byYg
aWRlbnRpZmllciA6IHByb3BlcnR5U3ltYm9scykgewogICAgICAgICAgICAgaWYgKGZpbHRlclBy
b3BlcnR5SWZOZWVkZWQoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAga2V5cy0+cHVzaChl
eGVjLCBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlm
aWVyLmltcGwoKSkpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOworICAgICAgICAgICAgICAgIHB1c2hEaXJlY3QoZXhlYywga2V5cywgU3ltYm9sOjpj
cmVhdGUodm0sIHN0YXRpY19jYXN0PFN5bWJvbEltcGwmPigqaWRlbnRpZmllci5pbXBsKCkpKSk7
CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICB9
CiAKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaAppbmRleCA5ZjM5YjM4YzJhZWM0YWI3Y2QyYmZjYmQyOWZiMWFi
YzI1NjgzNDQ5Li5iYWNmM2JjNjA3NmQ1MDVmMTk4YjEzZDE2MzkwYzNmZjlmNjY4OTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgK
QEAgLTEyMiw3ICsxMjIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdE9iamVjdEZyb21Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBQcgogSlNfRVhQT1JUX1BS
SVZBVEUgSlNPYmplY3QqIG9iamVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSosIEpTT2Jq
ZWN0Kik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgY29uc3QgSWRlbnRpZmllciYpOwogSlNWYWx1ZSBvYmpl
Y3RDb25zdHJ1Y3RvckdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqKTsKLUpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqLCBKU09iamVjdCosIFBy
b3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOworSlNWYWx1ZSBvd25Qcm9w
ZXJ0eUtleXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBQcm9wZXJ0eU5hbWVNb2RlLCBEb250RW51
bVByb3BlcnRpZXNNb2RlKTsKIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0YWUx
ZDViN2YyNGEwZTVkNzQ1MDU0Zjc4NDEwM2Q0YzZmODQ2NTkyLi4zMTg4YmEyMTBkNTdiYTJmMmZh
MjU0YTI1MGM0MmQ2OWZlYmI5MGQ5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA5LTA5ICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtKU0NdIE9wdGltaXpl
IE9iamVjdC5rZXlzIGJ5IHVzaW5nIGNhcmVmdWwgYXJyYXkgYWxsb2NhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2NjU0CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3Mv
b2JqZWN0LWtleXMuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisKIDIwMTctMDktMDggIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0RGR10gTmV3
QXJyYXlXaXRoU2l6ZShzaXplKSdzIHNpemUgZG9lcyBub3QgY2FyZSBuZWdhdGl2ZSB6ZXJvCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9vYmplY3Qta2V5cy5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1rZXlzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNDExMjhiMzc1
Y2NiYmI0ZmNhZDAxZjAwYmJkZTc5MDIxZDZkMDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9vYmplY3Qta2V5cy5qcwpAQCAtMCwwICsxLDEzIEBACit2YXIgb2Jq
ZWN0ID0ge307Citmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgb2JqZWN0W2kg
KyAncHJvcCddID0gaTsKK30KKworZnVuY3Rpb24gdGVzdChvYmplY3QpCit7CisgICAgcmV0dXJu
IE9iamVjdC5rZXlzKG9iamVjdCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTM7ICsraSkKKyAgICB0ZXN0KG9iamVjdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320347</attachid>
            <date>2017-09-09 10:09:12 -0700</date>
            <delta_ts>2017-09-10 14:59:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176654-20170910020911.patch</filename>
            <type>text/plain</type>
            <size>10830</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
M2Y4MDE5OTlkOWVhNDlkNDA5Y2VlYjJlYjNmYWE4NmUwY2RiZjNkLi5kZTFhY2ZkYjljOGU4ZTgw
NGUxN2JiNmUyNWE1MTc5MTNmMjUyYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNy0wOS0wOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBPYmplY3Qua2V5cyBieSB1c2luZyBjYXJl
ZnVsIGFycmF5IGFsbG9jYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjY1NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNpeFNwZWVkIG9iamVjdC1hc3NpZ24uZXM2IHN0cmVzc2VzIE9iamVjdC5r
ZXlzLiBPYmplY3Qua2V5cyBpcyBvbmUgb2YgZnJlcXVlbnRseSB1c2VkCisgICAgICAgIGZ1bmN0
aW9uIGluIEpTIGFwcHMuIEx1Y2tpbHkgT2JqZWN0LmtleXMgaGFzIHNldmVyYWwgZ29vZCBmZWF0
dXJlcy4KKworICAgICAgICAxLiBPbmNlIFByb3BlcnR5TmFtZUFycmF5IGlzIGFsbG9jYXRlZCwg
d2Uga25vdyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHQgYXJyYXkgc2luY2UKKyAgICAgICAgd2Ug
ZG8gbm90IG5lZWQgdG8gZmlsdGVyIG91dCBrZXlzIGxpc3RlZCBpbiBQcm9wZXJ0eU5hbWVBcnJh
eS4gVGhlIGV4ZWNwdGlvbiBpcyBQcm94eU9iamVjdCwKKyAgICAgICAgYnV0IGl0IHJhcmVseSBh
cHBlYXJzLiBQcm94eU9iamVjdCBjYXNlIGdvZXMgdG8gdGhlIGdlbmVyaWMgcGF0aC4KKworICAg
ICAgICAyLiBPYmplY3Qua2V5cyBkb2VzIG5vdCBuZWVkIHRvIGFjY2VzcyBvYmplY3QgYWZ0ZXIg
bGlzdGluZyBQcm9wZXJ0eU5hbWVBcnJheS4gSXQgbWVhbnMKKyAgICAgICAgdGhhdCB3ZSBkbyBu
b3QgbmVlZCB0byB3b3JyeSBhYm91dCBlbnVtZXJhdGlvbiBhdHRyaWJ1dGUgY2hhbmdlIGJ5IHRv
dWNoaW5nIG9iamVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBmYXN0IHBhdGggZm9y
IE9iamVjdC5rZXlzJ3MgYXJyYXkgYWxsb2NhdGlvbi4gV2UgYWxsb2NhdGUgdGhlIEpTQXJyYXkK
KyAgICAgICAgd2l0aCB0aGUgc2l6ZSBhbmQgQXJyYXlDb250aWd1b3VzIGluZGV4aW5nIHNoYXBl
LgorCisgICAgICAgIFRoaXMgZnVydGhlciBpbXByb3ZlcyBTaXhTcGVlZCBvYmplY3QtYXNzaWdu
LmVzNSBieSAxMyUuCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmFzZWxpbmUgICAgICAgICAgICAgICAgICBwYXRjaGVkCisgICAgICAgIE1pY3JvYmVuY2ht
YXJrczoKKyAgICAgICAgICAgb2JqZWN0LWtleXMtbWFwLXZhbHVlcyAgICAgICA3My40MzI0Ky0y
LjUzOTcgICAgIF4gICAgIDYyLjU5MzMrLTIuNjY3NyAgICAgICAgXiBkZWZpbml0ZWx5IDEuMTcz
MnggZmFzdGVyCisgICAgICAgICAgIG9iamVjdC1rZXlzICAgICAgICAgICAgICAgICAgNDAuODgy
OCstMS41ODUxICAgICBeICAgICAyOS4yMDY2Ky0xLjg5NDQgICAgICAgIF4gZGVmaW5pdGVseSAx
LjM5OTh4IGZhc3RlcgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2VsaW5lICAgICAgICAgICAgICAgICAgcGF0Y2hlZAorICAgICAgICBTaXhTcGVlZDoK
KyAgICAgICAgICAgb2JqZWN0LWFzc2lnbi5lczUgICAgICAgICAgIDM4NC44NzE5Ky0xMC43MjA0
ICAgIF4gICAgMzQwLjI3MzQrLTEyLjA5NDcgICAgICAgXiBkZWZpbml0ZWx5IDEuMTMxMXggZmFz
dGVyCisKKyAgICAgICAgQlRXLCB0aGUgZnVydGhlciBvcHRpbWl6YXRpb24gb2YgT2JqZWN0Lmtl
eXMgY2FuIGJlIGNvbnNpZGVyZWQ6IGludHJvZHVjaW5nIG93biBwcm9wZXJ0eSBrZXlzCisgICAg
ICAgIGNhY2hlIHdoaWNoIGlzIHNpbWlsYXIgdG8gdGhlIGN1cnJlbnQgZW51bWVyYXRpb24gY2Fj
aGUuIEJ1dCB0aGlzIHBhdGNoIGlzIG9ydGhvZ29uYWwgdG8KKyAgICAgICAgdGhpcyBvcHRpbWl6
YXRpb24hCisKKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JWYWx1ZXMpOgorICAgICAgICAoSlNDOjpvd25Qcm9w
ZXJ0eUtleXMpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKwogMjAx
Ny0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbREZHXSBOZXdBcnJheVdpdGhTaXplKHNpemUpJ3Mgc2l6ZSBkb2VzIG5vdCBjYXJlIG5lZ2F0
aXZlIHplcm8KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVj
dENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAppbmRleCAzM2I3ZjQzMTIzNzdiYzE5M2IyZjk5MTJjYjdlNDQ4YjMxMDAz
YzBmLi4wYzQzMzI2ZWU0YTQyY2MwMjYwMTA0ZDZiMjhjZjE1N2YyN2MzOTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBA
IC0zNzcsMTMgKzM3NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU09iamVjdCogdGFyZ2V0ID0g
dGFyZ2V0VmFsdWUudG9PYmplY3QoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKIAotICAgIEpTQXJyYXkqIHZhbHVlcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhl
YywgMCk7CisgICAgSlNBcnJheSogdmFsdWVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBu
dWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
KTsKICAgICB0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlOYW1lcyh0YXJn
ZXQsIGV4ZWMsIHByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZShEb250RW51bVByb3BlcnRpZXNN
b2RlOjpJbmNsdWRlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAor
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICBhdXRvIGFkZFZhbHVlID0gWyZdIChQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KHRhcmdldCwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICAg
ICAgaWYgKCF0YXJnZXQtPm1ldGhvZFRhYmxlKHZtKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdl
dCwgZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkKQEAgLTM5OCw3ICszOTksNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yVmFsdWVzKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIHZhbHVlID0gdGFyZ2V0LT5nZXQoZXhlYywgcHJvcGVydHlOYW1l
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAotICAgICAg
ICB2YWx1ZXMtPnB1c2goZXhlYywgdmFsdWUpOworICAgICAgICB2YWx1ZXMtPnB1dERpcmVjdElu
ZGV4KGV4ZWMsIGluZGV4KyssIHZhbHVlKTsKICAgICB9OwogCiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMCwgbnVtUHJvcGVydGllcyA9IHByb3BlcnRpZXMuc2l6ZSgpOyBpIDwgbnVtUHJvcGVydGll
czsgaSsrKSB7CkBAIC04MjcsMTYgKzgyOCwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9ySXMoRXhlY1N0YXRlKiBleGVjKQogfQogCiAvLyBGSVhNRTog
VXNlIHRoZSBlbnVtZXJhdGlvbiBjYWNoZS4KLUpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVj
U3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvcGVydHlO
YW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9kZSBkb250RW51bVByb3BlcnRpZXNNb2RlKQor
SlNWYWx1ZSBvd25Qcm9wZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0
LCBQcm9wZXJ0eU5hbWVNb2RlIHByb3BlcnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01v
ZGUgZG9udEVudW1Qcm9wZXJ0aWVzTW9kZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0aWVzKGV4ZWMsIHByb3BlcnR5TmFtZU1vZGUpOwogICAgIG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVy
dGllcywgRW51bWVyYXRpb25Nb2RlKGRvbnRFbnVtUHJvcGVydGllc01vZGUpKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLQotICAgIEpTQXJyYXkqIGtleXMgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAg
ICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lbnVtZXJhYmxlb3ducHJv
cGVydGllcwogICAgIC8vIElmIHtvYmplY3R9IGlzIGEgUHJveHksIGFuIGV4cGxpY2l0IGFuZCBv
YnNlcnZhYmxlIFtbR2V0T3duUHJvcGVydHldXSBvcCBpcyByZXF1aXJlZCB0byBmaWx0ZXIgb3V0
IG5vbi1lbnVtZXJhYmxlIHByb3BlcnRpZXMuCkBAIC04NTAsNiArODQ4LDI4IEBAIEpTQXJyYXkq
IG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIFByb3Bl
cnR5TmFtZU1vZGUgcHJvCiAgICAgICAgIHJldHVybiBvYmplY3QtPmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihleGVjLCBuYW1lLCBkZXNjcmlwdG9yKSAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGUo
KTsKICAgICB9OwogCisgICAgLy8gSWYgIW11c3RGaWx0ZXJQcm9wZXJ0eSBhbmQgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5ncyBtb2RlLCB3ZSBkbyBub3QgbmVlZCB0byBmaWx0ZXIgb3V0IGFueSBl
bnRyaWVzIGluIFByb3BlcnR5TmFtZUFycmF5LgorICAgIC8vIFdlIGNhbiB1c2UgZmFzdCBhbGxv
Y2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbi4KKyAgICBpZiAoIW11c3RGaWx0ZXJQcm9wZXJ0eSAm
JiBwcm9wZXJ0eU5hbWVNb2RlID09IFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MgJiYgcHJvcGVy
dGllcy5zaXplKCkgPCBNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSB7CisgICAgICAgIHNpemVfdCBu
dW1Qcm9wZXJ0aWVzID0gcHJvcGVydGllcy5zaXplKCk7CisgICAgICAgIEpTQXJyYXkqIGtleXMg
PSBKU0FycmF5OjpjcmVhdGUodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+YXJyYXlT
dHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3Vv
dXMpLCBudW1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiBidWZm
ZXIgPSBrZXlzLT5idXR0ZXJmbHkoKS0+Y29udGlndW91cygpLmRhdGEoKTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9wZXJ0aWVzOyBpKyspIHsKKyAgICAgICAgICAgIGNv
bnN0IGF1dG8mIGlkZW50aWZpZXIgPSBwcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAgQVNTRVJU
KCFpZGVudGlmaWVyLmlzU3ltYm9sKCkpOworICAgICAgICAgICAgYnVmZmVyW2ldLnNldCh2bSwg
a2V5cywganNPd25lZFN0cmluZygmdm0sIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4ga2V5czsKKyAgICB9CisKKyAgICBKU0FycmF5KiBrZXlzID0gY29u
c3RydWN0RW1wdHlBcnJheShleGVjLCBudWxscHRyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGF1dG8gcHVzaERp
cmVjdCA9IFsmXSAoRXhlY1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgSlNWYWx1ZSB2YWx1
ZSkgeworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaW5kZXgrKywgdmFsdWUp
OworICAgIH07CisKICAgICBzd2l0Y2ggKHByb3BlcnR5TmFtZU1vZGUpIHsKICAgICBjYXNlIFBy
b3BlcnR5TmFtZU1vZGU6OlN0cmluZ3M6IHsKICAgICAgICAgc2l6ZV90IG51bVByb3BlcnRpZXMg
PSBwcm9wZXJ0aWVzLnNpemUoKTsKQEAgLTg1Nyw4ICs4NzcsOCBAQCBKU0FycmF5KiBvd25Qcm9w
ZXJ0eUtleXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZXJ0eU5hbWVN
b2RlIHBybwogICAgICAgICAgICAgY29uc3QgYXV0byYgaWRlbnRpZmllciA9IHByb3BlcnRpZXNb
aV07CiAgICAgICAgICAgICBBU1NFUlQoIWlkZW50aWZpZXIuaXNTeW1ib2woKSk7CiAgICAgICAg
ICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVyKSkKLSAgICAgICAgICAg
ICAgICBrZXlzLT5wdXNoKGV4ZWMsIGpzT3duZWRTdHJpbmcoZXhlYywgaWRlbnRpZmllci5zdHJp
bmcoKSkpOwotICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7
CisgICAgICAgICAgICAgICAgcHVzaERpcmVjdChleGVjLCBrZXlzLCBqc093bmVkU3RyaW5nKGV4
ZWMsIGlkZW50aWZpZXIuc3RyaW5nKCkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtODcw
LDggKzg5MCw4IEBAIEpTQXJyYXkqIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBvYmplY3QsIFByb3BlcnR5TmFtZU1vZGUgcHJvCiAgICAgICAgICAgICBBU1NFUlQo
aWRlbnRpZmllci5pc1N5bWJvbCgpKTsKICAgICAgICAgICAgIGlmICghaWRlbnRpZmllci5pc1By
aXZhdGVOYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRl
ZChpZGVudGlmaWVyKSkKLSAgICAgICAgICAgICAgICAgICAga2V5cy0+cHVzaChleGVjLCBTeW1i
b2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwo
KSkpKTsKLSAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaERpcmVjdChleGVjLCBrZXlzLCBTeW1ib2w6OmNy
ZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCppZGVudGlmaWVyLmltcGwoKSkpKTsK
KyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtODg2LDE2ICs5MDYsMTYgQEAg
SlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVj
dCwgUHJvcGVydHlOYW1lTW9kZSBwcm8KICAgICAgICAgICAgICAgICBwcm9wZXJ0eVN5bWJvbHMu
YXBwZW5kKGlkZW50aWZpZXIpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
aWYgKGZpbHRlclByb3BlcnR5SWZOZWVkZWQoaWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAg
ICAgIGtleXMtPnB1c2goZXhlYywganNPd25lZFN0cmluZyhleGVjLCBpZGVudGlmaWVyLnN0cmlu
ZygpKSk7Ci0gICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0
cik7CisgICAgICAgICAgICAgICAgICAgIHB1c2hEaXJlY3QoZXhlYywga2V5cywganNPd25lZFN0
cmluZyhleGVjLCBpZGVudGlmaWVyLnN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFRvIGVuc3VyZSB0aGUgb3JkZXIgZGVmaW5lZCBpbiB0aGUgc3BlYyAoOS4xLjEy
KSwgd2UgYXBwZW5kIHN5bWJvbHMgYXQgdGhlIGxhc3QgZWxlbWVudHMgb2Yga2V5cy4KICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiBpZGVudGlmaWVyIDogcHJvcGVydHlTeW1ib2xzKSB7CiAgICAg
ICAgICAgICBpZiAoZmlsdGVyUHJvcGVydHlJZk5lZWRlZChpZGVudGlmaWVyKSkKLSAgICAgICAg
ICAgICAgICBrZXlzLT5wdXNoKGV4ZWMsIFN5bWJvbDo6Y3JlYXRlKHZtLCBzdGF0aWNfY2FzdDxT
eW1ib2xJbXBsJj4oKmlkZW50aWZpZXIuaW1wbCgpKSkpOwotICAgICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CisgICAgICAgICAgICAgICAgcHVzaERpcmVjdChl
eGVjLCBrZXlzLCBTeW1ib2w6OmNyZWF0ZSh2bSwgc3RhdGljX2Nhc3Q8U3ltYm9sSW1wbCY+KCpp
ZGVudGlmaWVyLmltcGwoKSkpKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgICAgIH0KIAogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCmluZGV4IDlmMzliMzhjMmFl
YzRhYjdjZDJiZmNiZDI5ZmIxYWJjMjU2ODM0NDkuLmJhY2YzYmM2MDc2ZDUwNWYxOThiMTNkMTYz
OTBjM2ZmOWY2Njg5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T2JqZWN0Q29uc3RydWN0b3IuaApAQCAtMTIyLDcgKzEyMiw3IEBAIGlubGluZSBKU09iamVjdCog
Y29uc3RydWN0T2JqZWN0RnJvbVByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFByCiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVl
emUoRXhlY1N0YXRlKiwgSlNPYmplY3QqKTsKIEpTVmFsdWUgb2JqZWN0Q29uc3RydWN0b3JHZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBjb25zdCBJZGVudGlm
aWVyJik7CiBKU1ZhbHVlIG9iamVjdENvbnN0cnVjdG9yR2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
cyhFeGVjU3RhdGUqLCBKU09iamVjdCopOwotSlNBcnJheSogb3duUHJvcGVydHlLZXlzKEV4ZWNT
dGF0ZSosIEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lTW9kZSwgRG9udEVudW1Qcm9wZXJ0aWVzTW9k
ZSk7CitKU1ZhbHVlIG93blByb3BlcnR5S2V5cyhFeGVjU3RhdGUqLCBKU09iamVjdCosIFByb3Bl
cnR5TmFtZU1vZGUsIERvbnRFbnVtUHJvcGVydGllc01vZGUpOwogYm9vbCB0b1Byb3BlcnR5RGVz
Y3JpcHRvcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDRhZTFkNWI3ZjI0YTBlNWQ3NDUwNTRmNzg0MTAzZDRjNmY4NDY1OTIu
LjMxODhiYTIxMGQ1N2JhMmYyZmEyNTRhMjUwYzQyZDY5ZmViYjkwZDkgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTctMDktMDkgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ10gT3B0aW1pemUgT2JqZWN0LmtleXMgYnkgdXNpbmcgY2FyZWZ1bCBhcnJheSBh
bGxvY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzY2NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9vYmplY3Qta2V5cy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0
KToKKwogMjAxNy0wOS0wOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
IAogICAgICAgICBbREZHXSBOZXdBcnJheVdpdGhTaXplKHNpemUpJ3Mgc2l6ZSBkb2VzIG5vdCBj
YXJlIG5lZ2F0aXZlIHplcm8KZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29i
amVjdC1rZXlzLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mvb2JqZWN0LWtleXMuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGI0MTEyOGIzNzVjY2JiYjRmY2FkMDFmMDBiYmRlNzkwMjFkNmQwNQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL29iamVjdC1rZXlzLmpzCkBAIC0w
LDAgKzEsMTMgQEAKK3ZhciBvYmplY3QgPSB7fTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpIHsKKyAgICBvYmplY3RbaSArICdwcm9wJ10gPSBpOworfQorCitmdW5jdGlvbiB0ZXN0KG9i
amVjdCkKK3sKKyAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KTsKK30KK25vSW5saW5lKHRl
c3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgIHRlc3Qob2JqZWN0KTsK
</data>
<flag name="review"
          id="340472"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>