<?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>135781</bug_id>
          
          <creation_ts>2014-08-08 17:44:24 -0700</creation_ts>
          <short_desc>Refactor ShapeOutsideInfo so it isn&apos;t mutated for each line</short_desc>
          <delta_ts>2014-08-13 12:05:40 -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>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bem Jones-Bey">bjonesbe</reporter>
          <assigned_to name="Bem Jones-Bey">bjonesbe</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1028024</commentid>
    <comment_count>0</comment_count>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-08 17:44:24 -0700</bug_when>
    <thetext>Refactor ShapeOutsideInfo so it isn&apos;t mutated for each line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028026</commentid>
    <comment_count>1</comment_count>
      <attachid>236327</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-08 17:54:44 -0700</bug_when>
    <thetext>Created attachment 236327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028043</commentid>
    <comment_count>2</comment_count>
      <attachid>236330</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-08 21:10:10 -0700</bug_when>
    <thetext>Created attachment 236330
Patch

Rebased so it will actually apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028536</commentid>
    <comment_count>3</comment_count>
      <attachid>236454</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-12 11:01:00 -0700</bug_when>
    <thetext>Created attachment 236454
Patch

Rearrange bool members of ShapeOutsideDeltas to get more efficient layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028544</commentid>
    <comment_count>4</comment_count>
      <attachid>236454</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-08-12 11:27:01 -0700</bug_when>
    <thetext>Comment on attachment 236454
Patch

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

&gt; Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp:336
&gt; +        return m_shapeOutsideDeltas;

You don&apos;t need this return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028577</commentid>
    <comment_count>5</comment_count>
      <attachid>236454</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-12 13:03:19 -0700</bug_when>
    <thetext>Comment on attachment 236454
Patch

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

&gt;&gt; Source/WebCore/rendering/shapes/ShapeOutsideInfo.cpp:336
&gt;&gt; +        return m_shapeOutsideDeltas;
&gt; 
&gt; You don&apos;t need this return.

You&apos;re right. I&apos;ll fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028581</commentid>
    <comment_count>6</comment_count>
      <attachid>236462</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-12 13:12:41 -0700</bug_when>
    <thetext>Created attachment 236462
Patch

Remove extra return statement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028725</commentid>
    <comment_count>7</comment_count>
      <attachid>236462</attachid>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2014-08-12 22:50:07 -0700</bug_when>
    <thetext>Comment on attachment 236462
Patch

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

r=me

&gt; Source/WebCore/rendering/shapes/ShapeOutsideInfo.h:47
&gt; +    WTF_MAKE_FAST_ALLOCATED;

Since ShapeOutsideDeltas isn&apos;t instantiated by operator new, you don&apos;t need to make it fast allocated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028839</commentid>
    <comment_count>8</comment_count>
      <attachid>236538</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-08-13 11:37:46 -0700</bug_when>
    <thetext>Created attachment 236538
Patch

Remove unneeded fast allocation for ShapeOutsideDeltas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028852</commentid>
    <comment_count>9</comment_count>
      <attachid>236538</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-13 12:05:37 -0700</bug_when>
    <thetext>Comment on attachment 236538
Patch

Clearing flags on attachment: 236538

Committed r172529: &lt;http://trac.webkit.org/changeset/172529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028853</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-13 12:05:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236327</attachid>
            <date>2014-08-08 17:54:44 -0700</date>
            <delta_ts>2014-08-08 21:10:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135781-20140808175432.patch</filename>
            <type>text/plain</type>
            <size>19275</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ5ODYxMTk0Mjc2YjVi
NzY1MjgzYjEzMDQ3NDI5NGViZGM3NWJjMi4uOTc2NGQ0ZDAzNzk5YzUyYjM4ODA5OWIzZjFlOGUw
Y2JkYjRhOWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTA4LTA4ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFNoYXBl
T3V0c2lkZUluZm8gc28gaXQgaXNuJ3QgbXV0YXRlZCBmb3IgZWFjaCBsaW5lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU3ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgcGVy
IGxpbmUgc3RhdGUgaW50byBhIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QuCisgICAgICAgIHVw
ZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUgaGFzIGJlZW4gcmVuYW1lZCB0bworICAg
ICAgICBjb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSwgYW5kIGl0IHJldHVybnMg
YW4gaW5zdGFuY2Ugb2YgdGhlCisgICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgZm9y
IHRoYXQgbGluZS4gVGhpcyBvYmplY3QgaXMgY2FjaGVkLCBidXQKKyAgICAgICAgbm9uZSBvZiB0
aGUgZnVuY3Rpb25hbGl0eSBvZiBTaGFwZU91dHNpZGVJbmZvIGlzIGRlcGVuZGFudCBvbiBhbnkg
bGluZQorICAgICAgICBzcGVjaWZpYyBkYXRhIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0
TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZO
ZWVkZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRvIHRha2UgYSBGbG9hdGluZ09iamVjdCByZWZl
cmVuY2UgYmVjYXVzZSB0aGUgRmxvYXRpbmdPYmplY3QgY2Fubm90IGJlIG51bGwuCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRp
bmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZCk6CisgICAgICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8Rmxv
YXRUeXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQpOiBQYXNzIEZsb2F0aW5nT2JqZWN0IHRvCisg
ICAgICAgICAgICB1cGRhdGVPZmZzZXRJZk5lZWRlZCBhcyBhIHJlZmVyZW5jZSwgc2luY2UgaXQg
Y2Fubm90IGJlIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JM
aW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0
SWZOZWVkZWQpOgorICAgICAgICAgICAgVXNlIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgdG8g
Y2FsY3VsYXRlIHRoZSBvZmZzZXQgYW5kIHRha2UgdGhlIEZsb2F0aW5nT2JqZWN0IGFzIGEKKyAg
ICAgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNl
dEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRl
T2Zmc2V0SWZOZWVkZWQpOgorICAgICAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpz
aGFwZUluZm9Gb3JGbG9hdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxl
V2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKTogVXBkYXRlIHRvIHVzZSBTaGFwZU91dHNpZGVEZWx0
YXMgb2JqZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVsdGFzRm9y
Q29udGFpbmluZ0Jsb2NrTGluZSk6IFJldHVybiBhIFNoYW9lT3V0c2lkZURlbHRhcyBvYmplY3QK
KyAgICAgICAgICAgIGluc3RlYWQgb2Ygc3RvcmluZyBsaW5lIHNwZWNpZmljIGRhdGEgaW4gaW5z
dGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6dXBk
YXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisKIDIwMTQtMDgtMDcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0VNRV1bTWFjXSBFcnJvciBjb2Rl
cyByZXR1cm5lZCBieSBBVlNhbXBsZUJ1ZmZlckRpc3BsYXlMYXllciBhcmUgbmVnYXRpdmU7IGNs
aXAgd2hlbiBwYXNzZWQgdG8gSmF2YVNjcmlwdCBhcyBkb3VibGVzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAppbmRleCA1YjViZjA2YjM1YTE1NjI4YzMy
Y2I5NTU3ZWNkYWRhZTk5OTZiY2FlLi5iNDA3YTdkOTQ3ZjZjZGE2ZjBlN2E3ZmJjODQxZmQ2MTYw
Y2MxN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmpl
Y3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNw
cApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wg
dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqKSA9IDA7CisgICAgdmly
dHVhbCBib29sIHVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JikgPSAw
OwogCiAgICAgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBtX3JlbmRlcmVyOwogICAgIExheW91dFVu
aXQgbV9saW5lVG9wOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHByb3RlY3RlZDoKIH07CiAKIHRlbXBs
YXRlIDxGbG9hdGluZ09iamVjdDo6VHlwZSBGbG9hdFR5cGVWYWx1ZT4KLWNsYXNzIENvbXB1dGVG
bG9hdE9mZnNldEZvckZsb2F0TGF5b3V0QWRhcHRlciA6IHB1YmxpYyBDb21wdXRlRmxvYXRPZmZz
ZXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPiB7IAorY2xhc3MgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9y
RmxvYXRMYXlvdXRBZGFwdGVyIDogcHVibGljIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8Rmxv
YXRUeXBlVmFsdWU+IHsKIHB1YmxpYzoKICAgICBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExh
eW91dEFkYXB0ZXIoY29uc3QgUmVuZGVyQmxvY2tGbG93JiByZW5kZXJlciwgTGF5b3V0VW5pdCBs
aW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0b20sIExheW91dFVuaXQgb2Zmc2V0KQogICAgICAg
ICA6IENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRUeXBlVmFsdWU+KHJlbmRlcmVyLCBs
aW5lVG9wLCBsaW5lQm90dG9tLCBvZmZzZXQpCkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgog
ICAgIExheW91dFVuaXQgaGVpZ2h0UmVtYWluaW5nKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIGJvb2wgdXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3Qq
KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlT2Zmc2V0SWZOZWVkZWQo
Y29uc3QgRmxvYXRpbmdPYmplY3QmKSBvdmVycmlkZSBmaW5hbDsKIH07CiAKIHRlbXBsYXRlIDxG
bG9hdGluZ09iamVjdDo6VHlwZSBGbG9hdFR5cGVWYWx1ZT4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+Q29tcHV0ZUZsb2F0T2Zmc2V0Rm9yTGluZUxheW91dEFkYXB0
ZXIoKSB7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVPZmZzZXRJZk5l
ZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCopIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwg
Ym9vbCB1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYpIG92ZXJyaWRl
IGZpbmFsOwogfTsKIAogY2xhc3MgRmluZE5leHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyIHsK
QEAgLTQyNSw5ICs0MjUsOSBAQCBMYXlvdXRVbml0IEZsb2F0aW5nT2JqZWN0czo6bG9naWNhbFJp
Z2h0T2Zmc2V0KExheW91dFVuaXQgZml4ZWRPZmZzZXQsIExheW91dFVuaQogfQogCiB0ZW1wbGF0
ZTw+Ci1pbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8
RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZs
b2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKK2lubGluZSBib29sIENvbXB1dGVGbG9hdE9m
ZnNldEZvckZsb2F0TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBk
YXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0KQog
ewotICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0ID0gbV9yZW5kZXJlci5sb2dpY2FsUmlnaHRG
b3JGbG9hdChmbG9hdGluZ09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBt
X3JlbmRlcmVyLmxvZ2ljYWxSaWdodEZvckZsb2F0KCZmbG9hdGluZ09iamVjdCk7CiAgICAgaWYg
KGxvZ2ljYWxSaWdodCA+IG1fb2Zmc2V0KSB7CiAgICAgICAgIG1fb2Zmc2V0ID0gbG9naWNhbFJp
Z2h0OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQzNiw5ICs0MzYsOSBAQCBpbmxpbmUgYm9v
bCBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6
OkZsb2F0TGVmdD46OgogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRP
ZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1
cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3Qp
CitpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8Rmxv
YXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9h
dGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dCA9IG1fcmVuZGVyZXIubG9naWNhbExlZnRGb3JGbG9hdChmbG9hdGluZ09iamVjdCk7CisgICAg
TGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IG1fcmVuZGVyZXIubG9naWNhbExlZnRGb3JGbG9hdCgm
ZmxvYXRpbmdPYmplY3QpOwogICAgIGlmIChsb2dpY2FsTGVmdCA8IG1fb2Zmc2V0KSB7CiAgICAg
ICAgIG1fb2Zmc2V0ID0gbG9naWNhbExlZnQ7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDYz
LDM1ICs0NjMsMjIgQEAgaW5saW5lIHZvaWQgQ29tcHV0ZUZsb2F0T2Zmc2V0QWRhcHRlcjxGbG9h
dFR5cGVWYWx1ZT46OmNvbGxlY3RJZk5lZWRlZChjb25zdCBJbnQKICAgICBBU1NFUlQoZmxvYXRp
bmdPYmplY3QtPmlzUGxhY2VkKCkpOwogICAgIEFTU0VSVChyYW5nZXNJbnRlcnNlY3QobV9yZW5k
ZXJlci5sb2dpY2FsVG9wRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpLCBtX3JlbmRlcmVyLmxvZ2lj
YWxCb3R0b21Gb3JGbG9hdChmbG9hdGluZ09iamVjdCksIG1fbGluZVRvcCwgbV9saW5lQm90dG9t
KSk7CiAKLSAgICBib29sIGZsb2F0SXNOZXdFeHRyZW1lID0gdXBkYXRlT2Zmc2V0SWZOZWVkZWQo
ZmxvYXRpbmdPYmplY3QpOworICAgIGJvb2wgZmxvYXRJc05ld0V4dHJlbWUgPSB1cGRhdGVPZmZz
ZXRJZk5lZWRlZCgqZmxvYXRpbmdPYmplY3QpOwogICAgIGlmIChmbG9hdElzTmV3RXh0cmVtZSkK
ICAgICAgICAgbV9vdXRlcm1vc3RGbG9hdCA9IGZsb2F0aW5nT2JqZWN0OwogfQogCi0jaWYgRU5B
QkxFKENTU19TSEFQRVMpCi1zdGF0aWMgaW5saW5lIFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlSW5m
b0ZvckZsb2F0KGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCwgY29uc3QgUmVu
ZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2ssIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0
VW5pdCBsaW5lQm90dG9tKQotewotICAgIGlmIChmbG9hdGluZ09iamVjdCkgewotICAgICAgICBp
ZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0gZmxvYXRpbmdPYmplY3QtPnJlbmRl
cmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7Ci0gICAgICAgICAgICBzaGFwZU91dHNpZGUtPnVw
ZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUoY29udGFpbmluZ0Jsb2NrLCAqZmxvYXRp
bmdPYmplY3QsIGxpbmVUb3AsIGxpbmVCb3R0b20gLSBsaW5lVG9wKTsKLSAgICAgICAgICAgIHJl
dHVybiBzaGFwZU91dHNpZGU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbHB0
cjsKLX0KLSNlbmRpZgotCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZz
ZXRGb3JMaW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRl
T2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQoraW5s
aW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdP
YmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2Jq
ZWN0JiBmbG9hdGluZ09iamVjdCkKIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IG1f
cmVuZGVyZXIubG9naWNhbFJpZ2h0Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOworICAgIExheW91
dFVuaXQgbG9naWNhbFJpZ2h0ID0gbV9yZW5kZXJlci5sb2dpY2FsUmlnaHRGb3JGbG9hdCgmZmxv
YXRpbmdPYmplY3QpOwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIGlmIChTaGFwZU91dHNp
ZGVJbmZvKiBzaGFwZU91dHNpZGUgPSBzaGFwZUluZm9Gb3JGbG9hdChmbG9hdGluZ09iamVjdCwg
bV9yZW5kZXJlciwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20pKSB7Ci0gICAgICAgIGlmICghc2hh
cGVPdXRzaWRlLT5saW5lT3ZlcmxhcHNTaGFwZSgpKQorICAgIGlmIChTaGFwZU91dHNpZGVJbmZv
KiBzaGFwZU91dHNpZGUgPSBmbG9hdGluZ09iamVjdC5yZW5kZXJlcigpLnNoYXBlT3V0c2lkZUlu
Zm8oKSkgeworICAgICAgICBTaGFwZU91dHNpZGVEZWx0YXMgc2hhcGVEZWx0YXMgPSBzaGFwZU91
dHNpZGUtPmNvbXB1dGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKG1fcmVuZGVyZXIsIGZs
b2F0aW5nT2JqZWN0LCBtX2xpbmVUb3AsIG1fbGluZUJvdHRvbSAtIG1fbGluZVRvcCk7CisgICAg
ICAgIGlmICghc2hhcGVEZWx0YXMubGluZU92ZXJsYXBzU2hhcGUoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgICAgICBsb2dpY2FsUmlnaHQgKz0gc2hhcGVPdXRzaWRlLT5yaWdo
dE1hcmdpbkJveERlbHRhKCk7CisgICAgICAgIGxvZ2ljYWxSaWdodCArPSBzaGFwZURlbHRhcy5y
aWdodE1hcmdpbkJveERlbHRhKCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGxvZ2ljYWxSaWdo
dCA+IG1fb2Zmc2V0KSB7CkBAIC01MDMsMTUgKzQ5MCwxNiBAQCBpbmxpbmUgYm9vbCBDb21wdXRl
RmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0
Pjo6dQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JM
aW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNl
dElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKK2lubGluZSBi
b29sIENvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0
OjpGbG9hdFJpZ2h0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3Qm
IGZsb2F0aW5nT2JqZWN0KQogewotICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBtX3JlbmRl
cmVyLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOworICAgIExheW91dFVuaXQg
bG9naWNhbExlZnQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQoJmZsb2F0aW5nT2Jq
ZWN0KTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyog
c2hhcGVPdXRzaWRlID0gc2hhcGVJbmZvRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QsIG1fcmVuZGVy
ZXIsIG1fbGluZVRvcCwgbV9saW5lQm90dG9tKSkgewotICAgICAgICBpZiAoIXNoYXBlT3V0c2lk
ZS0+bGluZU92ZXJsYXBzU2hhcGUoKSkKKyAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVP
dXRzaWRlID0gZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCkpIHsK
KyAgICAgICAgU2hhcGVPdXRzaWRlRGVsdGFzIHNoYXBlRGVsdGFzID0gc2hhcGVPdXRzaWRlLT5j
b21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShtX3JlbmRlcmVyLCBmbG9hdGluZ09i
amVjdCwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20gLSBtX2xpbmVUb3ApOworICAgICAgICBpZiAo
IXNoYXBlRGVsdGFzLmxpbmVPdmVybGFwc1NoYXBlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgbG9naWNhbExlZnQgKz0gc2hhcGVPdXRzaWRlLT5sZWZ0TWFyZ2luQm94
RGVsdGEoKTsKKyAgICAgICAgbG9naWNhbExlZnQgKz0gc2hhcGVEZWx0YXMubGVmdE1hcmdpbkJv
eERlbHRhKCk7CiAgICAgfQogI2VuZGlmCiAgICAgaWYgKGxvZ2ljYWxMZWZ0IDwgbV9vZmZzZXQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3BwCmluZGV4IDhj
Y2M3ZmM5ZmEzYTMyMzBmZWZlM2ZkZWIzZjcxNjlkOThmMzMwYmMuLmU2MmFlOTk5NjlkY2JlNTRi
ZDJhY2Q5OThhN2NkMzAxMGVmYmE3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVXaWR0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xp
bmUvTGluZVdpZHRoLmNwcApAQCAtODMsMTAgKzgzLDEwIEBAIHZvaWQgTGluZVdpZHRoOjpzaHJp
bmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRpbmdPYmplY3QqIG5ld0Zs
b2F0CiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIFNoYXBl
T3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZUluZm8gPSBuZXdGbG9hdC0+cmVuZGVyZXIoKS5zaGFw
ZU91dHNpZGVJbmZvKCk7Ci0gICAgaWYgKHNoYXBlT3V0c2lkZUluZm8pIHsKKyAgICBTaGFwZU91
dHNpZGVEZWx0YXMgc2hhcGVEZWx0YXM7CisgICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBl
T3V0c2lkZUluZm8gPSBuZXdGbG9hdC0+cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCkpIHsK
ICAgICAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0ID0gbV9ibG9jay5saW5lSGVpZ2h0KG1faXNG
aXJzdExpbmUsIG1fYmxvY2suaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxM
aW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOwotICAgICAg
ICBzaGFwZU91dHNpZGVJbmZvLT51cGRhdGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKG1f
YmxvY2ssICpuZXdGbG9hdCwgbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCksIGxpbmVIZWlnaHQpOwor
ICAgICAgICBzaGFwZURlbHRhcyA9IHNoYXBlT3V0c2lkZUluZm8tPmNvbXB1dGVEZWx0YXNGb3JD
b250YWluaW5nQmxvY2tMaW5lKG1fYmxvY2ssICpuZXdGbG9hdCwgbV9ibG9jay5sb2dpY2FsSGVp
Z2h0KCksIGxpbmVIZWlnaHQpOwogICAgIH0KICNlbmRpZgogCkBAIC05NSw5ICs5NSw5IEBAIHZv
aWQgTGluZVdpZHRoOjpzaHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxv
YXRpbmdPYmplY3QqIG5ld0Zsb2F0CiAgICAgICAgIGlmIChzaG91bGRJbmRlbnRUZXh0KCkgJiYg
bV9ibG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgIG5l
d0xlZnQgKz0gZmxvb3JUb0ludChtX2Jsb2NrLnRleHRJbmRlbnRPZmZzZXQoKSk7CiAjaWYgRU5B
QkxFKENTU19TSEFQRVMpCi0gICAgICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKSB7Ci0gICAgICAg
ICAgICBpZiAoc2hhcGVPdXRzaWRlSW5mby0+bGluZU92ZXJsYXBzU2hhcGUoKSkKLSAgICAgICAg
ICAgICAgICBuZXdMZWZ0ICs9IHNoYXBlT3V0c2lkZUluZm8tPnJpZ2h0TWFyZ2luQm94RGVsdGEo
KTsKKyAgICAgICAgaWYgKHNoYXBlRGVsdGFzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgaWYg
KHNoYXBlRGVsdGFzLmxpbmVPdmVybGFwc1NoYXBlKCkpCisgICAgICAgICAgICAgICAgbmV3TGVm
dCArPSBzaGFwZURlbHRhcy5yaWdodE1hcmdpbkJveERlbHRhKCk7CiAgICAgICAgICAgICBlbHNl
IC8vIElmIHRoZSBsaW5lIGRvZXNuJ3Qgb3ZlcmxhcCB0aGUgc2hhcGUsIHRoZW4gd2UgbmVlZCB0
byBhY3QgYXMgaWYgdGhpcyBmbG9hdCBkaWRuJ3QgZXhpc3QuCiAgICAgICAgICAgICAgICAgbmV3
TGVmdCA9IG1fbGVmdDsKICAgICAgICAgfQpAQCAtMTA4LDkgKzEwOCw5IEBAIHZvaWQgTGluZVdp
ZHRoOjpzaHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRpbmdPYmpl
Y3QqIG5ld0Zsb2F0CiAgICAgICAgIGlmIChzaG91bGRJbmRlbnRUZXh0KCkgJiYgIW1fYmxvY2su
c3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBuZXdSaWdodCAt
PSBmbG9vclRvSW50KG1fYmxvY2sudGV4dEluZGVudE9mZnNldCgpKTsKICNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKLSAgICAgICAgaWYgKHNoYXBlT3V0c2lkZUluZm8pIHsKLSAgICAgICAgICAgIGlm
IChzaGFwZU91dHNpZGVJbmZvLT5saW5lT3ZlcmxhcHNTaGFwZSgpKQotICAgICAgICAgICAgICAg
IG5ld1JpZ2h0ICs9IHNoYXBlT3V0c2lkZUluZm8tPmxlZnRNYXJnaW5Cb3hEZWx0YSgpOworICAg
ICAgICBpZiAoc2hhcGVEZWx0YXMuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAoc2hhcGVE
ZWx0YXMubGluZU92ZXJsYXBzU2hhcGUoKSkKKyAgICAgICAgICAgICAgICBuZXdSaWdodCArPSBz
aGFwZURlbHRhcy5sZWZ0TWFyZ2luQm94RGVsdGEoKTsKICAgICAgICAgICAgIGVsc2UgLy8gSWYg
dGhlIGxpbmUgZG9lc24ndCBvdmVybGFwIHRoZSBzaGFwZSwgdGhlbiB3ZSBuZWVkIHRvIGFjdCBh
cyBpZiB0aGlzIGZsb2F0IGRpZG4ndCBleGlzdC4KICAgICAgICAgICAgICAgICBuZXdSaWdodCA9
IG1fcmlnaHQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwCmluZGV4IDZjMDE2YmJjMjJiMmM5MTBjMDE0NThi
NWI0NDI3YjU3MmVlMzIyMGYuLjRmYzY5YzM5ZmMyYTkwZmIwYTc1ZWFjOGRiMzZjZjE2ZDIwMDg1
NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91
dHNpZGVJbmZvLmNwcApAQCAtMzE4LDQwICszMTgsMzkgQEAgU2VnbWVudExpc3QgU2hhcGVPdXRz
aWRlSW5mbzo6Y29tcHV0ZVNlZ21lbnRzRm9yTGluZShMYXlvdXRVbml0IGxpbmVUb3AsIExheW91
dFUKICAgICByZXR1cm4gc2VnbWVudHM7CiB9CiAKLXZvaWQgU2hhcGVPdXRzaWRlSW5mbzo6dXBk
YXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNv
bnRhaW5pbmdCbG9jaywgY29uc3QgRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0LCBMYXlv
dXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCkKK1NoYXBlT3V0c2lkZURlbHRh
cyBTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgRmxvYXRpbmdPYmpl
Y3QmIGZsb2F0aW5nT2JqZWN0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhl
aWdodCkKIHsKICAgICBMYXlvdXRVbml0IGJvcmRlckJveFRvcCA9IGNvbnRhaW5pbmdCbG9jay5s
b2dpY2FsVG9wRm9yRmxvYXQoJmZsb2F0aW5nT2JqZWN0KSArIGNvbnRhaW5pbmdCbG9jay5tYXJn
aW5CZWZvcmVGb3JDaGlsZChtX3JlbmRlcmVyKTsKICAgICBMYXlvdXRVbml0IGJvcmRlckJveExp
bmVUb3AgPSBsaW5lVG9wIC0gYm9yZGVyQm94VG9wOwogCi0gICAgaWYgKGlzU2hhcGVEaXJ0eSgp
IHx8IG1fYm9yZGVyQm94TGluZVRvcCAhPSBib3JkZXJCb3hMaW5lVG9wIHx8IG1fbGluZUhlaWdo
dCAhPSBsaW5lSGVpZ2h0KSB7Ci0gICAgICAgIG1fYm9yZGVyQm94TGluZVRvcCA9IGJvcmRlckJv
eExpbmVUb3A7Ci0gICAgICAgIG1fcmVmZXJlbmNlQm94TGluZVRvcCA9IGJvcmRlckJveExpbmVU
b3AgLSBsb2dpY2FsVG9wT2Zmc2V0KCk7Ci0gICAgICAgIG1fbGluZUhlaWdodCA9IGxpbmVIZWln
aHQ7Ci0KKyAgICBpZiAoaXNTaGFwZURpcnR5KCkgfHwgIW1fc2hhcGVPdXRzaWRlRGVsdGFzLmlz
Rm9yTGluZShib3JkZXJCb3hMaW5lVG9wLCBsaW5lSGVpZ2h0KSkgeworICAgICAgICBMYXlvdXRV
bml0IHJlZmVyZW5jZUJveExpbmVUb3AgPSBib3JkZXJCb3hMaW5lVG9wIC0gbG9naWNhbFRvcE9m
ZnNldCgpOwogICAgICAgICBMYXlvdXRVbml0IGZsb2F0TWFyZ2luQm94V2lkdGggPSBjb250YWlu
aW5nQmxvY2subG9naWNhbFdpZHRoRm9yRmxvYXQoJmZsb2F0aW5nT2JqZWN0KTsKIAotICAgICAg
ICBpZiAoY29tcHV0ZWRTaGFwZSgpLmxpbmVPdmVybGFwc1NoYXBlTWFyZ2luQm91bmRzKG1fcmVm
ZXJlbmNlQm94TGluZVRvcCwgbV9saW5lSGVpZ2h0KSkgeworICAgICAgICBpZiAoY29tcHV0ZWRT
aGFwZSgpLmxpbmVPdmVybGFwc1NoYXBlTWFyZ2luQm91bmRzKHJlZmVyZW5jZUJveExpbmVUb3As
IGxpbmVIZWlnaHQpKSB7CiAgICAgICAgICAgICBTZWdtZW50TGlzdCBzZWdtZW50cyA9IGNvbXB1
dGVTZWdtZW50c0ZvckxpbmUoYm9yZGVyQm94TGluZVRvcCwgbGluZUhlaWdodCk7CiAgICAgICAg
ICAgICBpZiAoc2VnbWVudHMuc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdE1hcmdpbiA9IGNvbnRhaW5pbmdCbG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSA/IGNvbnRhaW5pbmdCbG9jay5tYXJnaW5TdGFydEZvckNoaWxkKG1fcmVuZGVy
ZXIpIDogY29udGFpbmluZ0Jsb2NrLm1hcmdpbkVuZEZvckNoaWxkKG1fcmVuZGVyZXIpOwogICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgcmF3TGVmdE1hcmdpbkJveERlbHRhID0gc2VnbWVudHMu
Zmlyc3QoKS5sb2dpY2FsTGVmdCArIGxvZ2ljYWxMZWZ0TWFyZ2luOwotICAgICAgICAgICAgICAg
IG1fbGVmdE1hcmdpbkJveERlbHRhID0gY2xhbXBUbzxMYXlvdXRVbml0PihyYXdMZWZ0TWFyZ2lu
Qm94RGVsdGEsIExheW91dFVuaXQoKSwgZmxvYXRNYXJnaW5Cb3hXaWR0aCk7CisgICAgICAgICAg
ICAgICAgTGF5b3V0VW5pdCBsZWZ0TWFyZ2luQm94RGVsdGEgPSBjbGFtcFRvPExheW91dFVuaXQ+
KHJhd0xlZnRNYXJnaW5Cb3hEZWx0YSwgTGF5b3V0VW5pdCgpLCBmbG9hdE1hcmdpbkJveFdpZHRo
KTsKIAogICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0TWFyZ2luID0gY29u
dGFpbmluZ0Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY29udGFpbmlu
Z0Jsb2NrLm1hcmdpbkVuZEZvckNoaWxkKG1fcmVuZGVyZXIpIDogY29udGFpbmluZ0Jsb2NrLm1h
cmdpblN0YXJ0Rm9yQ2hpbGQobV9yZW5kZXJlcik7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCByYXdSaWdodE1hcmdpbkJveERlbHRhID0gc2VnbWVudHMubGFzdCgpLmxvZ2ljYWxSaWdodCAt
IGNvbnRhaW5pbmdCbG9jay5sb2dpY2FsV2lkdGhGb3JDaGlsZChtX3JlbmRlcmVyKSAtIGxvZ2lj
YWxSaWdodE1hcmdpbjsKLSAgICAgICAgICAgICAgICBtX3JpZ2h0TWFyZ2luQm94RGVsdGEgPSBj
bGFtcFRvPExheW91dFVuaXQ+KHJhd1JpZ2h0TWFyZ2luQm94RGVsdGEsIC1mbG9hdE1hcmdpbkJv
eFdpZHRoLCBMYXlvdXRVbml0KCkpOwotICAgICAgICAgICAgICAgIG1fbGluZU92ZXJsYXBzU2hh
cGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IHJpZ2h0TWFyZ2luQm94RGVsdGEgPSBjbGFtcFRvPExheW91dFVuaXQ+KHJhd1JpZ2h0
TWFyZ2luQm94RGVsdGEsIC1mbG9hdE1hcmdpbkJveFdpZHRoLCBMYXlvdXRVbml0KCkpOworCisg
ICAgICAgICAgICAgICAgbV9zaGFwZU91dHNpZGVEZWx0YXMgPSBTaGFwZU91dHNpZGVEZWx0YXMo
bGVmdE1hcmdpbkJveERlbHRhLCByaWdodE1hcmdpbkJveERlbHRhLCB0cnVlLCBib3JkZXJCb3hM
aW5lVG9wLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zaGFwZU91dHNp
ZGVEZWx0YXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBMaW5lcyB0
aGF0IGRvIG5vdCBvdmVybGFwIHRoZSBzaGFwZSBzaG91bGQgYWN0IGFzIGlmIHRoZSBmbG9hdAog
ICAgICAgICAvLyB3YXNuJ3QgdGhlcmUgZm9yIGxheW91dCBwdXJwb3Nlcy4gU28gd2Ugc2V0IHRo
ZSBkZWx0YXMgdG8gcmVtb3ZlIHRoZQogICAgICAgICAvLyBlbnRpcmUgd2lkdGggb2YgdGhlIGZs
b2F0Ci0gICAgICAgIG1fbGVmdE1hcmdpbkJveERlbHRhID0gZmxvYXRNYXJnaW5Cb3hXaWR0aDsK
LSAgICAgICAgbV9yaWdodE1hcmdpbkJveERlbHRhID0gLWZsb2F0TWFyZ2luQm94V2lkdGg7Ci0g
ICAgICAgIG1fbGluZU92ZXJsYXBzU2hhcGUgPSBmYWxzZTsKKyAgICAgICAgbV9zaGFwZU91dHNp
ZGVEZWx0YXMgPSBTaGFwZU91dHNpZGVEZWx0YXMoZmxvYXRNYXJnaW5Cb3hXaWR0aCwgLWZsb2F0
TWFyZ2luQm94V2lkdGgsIGZhbHNlLCBib3JkZXJCb3hMaW5lVG9wLCBsaW5lSGVpZ2h0KTsKKyAg
ICAgICAgcmV0dXJuIG1fc2hhcGVPdXRzaWRlRGVsdGFzOwogICAgIH0KKworICAgIHJldHVybiBt
X3NoYXBlT3V0c2lkZURlbHRhczsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCBkNmI2OGRkMzU1YjczYzUyYWMz
OTVmNmExMDI0NWEwOTUzNmUzNmY4Li42MTAzOGE0MDA2Y2JmYTQ4ZDRjMDExMjUzNjY4NGYyZDI2
NGM3M2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
T3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
T3V0c2lkZUluZm8uaApAQCAtNDMsMjIgKzQzLDU4IEBAIGNsYXNzIFJlbmRlckJveDsKIGNsYXNz
IFN0eWxlSW1hZ2U7CiBjbGFzcyBGbG9hdGluZ09iamVjdDsKIAorY2xhc3MgU2hhcGVPdXRzaWRl
RGVsdGFzIGZpbmFsIHsKK3B1YmxpYzoKKyAgICBTaGFwZU91dHNpZGVEZWx0YXMoKQorICAgICAg
ICA6IG1faXNWYWxpZChmYWxzZSkKKyAgICAgICAgLCBtX2xlZnRNYXJnaW5Cb3hEZWx0YSgwKQor
ICAgICAgICAsIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YSgwKQorICAgICAgICAsIG1fbGluZU92ZXJs
YXBzU2hhcGUoZmFsc2UpCisgICAgICAgICwgbV9ib3JkZXJCb3hMaW5lVG9wKDApCisgICAgICAg
ICwgbV9saW5lSGVpZ2h0KDApCisgICAgeworICAgIH0KKworICAgIFNoYXBlT3V0c2lkZURlbHRh
cyhMYXlvdXRVbml0IGxlZnRNYXJnaW5Cb3hEZWx0YSwgTGF5b3V0VW5pdCByaWdodE1hcmdpbkJv
eERlbHRhLCBib29sIGxpbmVPdmVybGFwc1NoYXBlLCBMYXlvdXRVbml0IGJvcmRlckJveExpbmVU
b3AsIExheW91dFVuaXQgbGluZUhlaWdodCkKKyAgICAgICAgOiBtX2lzVmFsaWQodHJ1ZSkKKyAg
ICAgICAgLCBtX2xlZnRNYXJnaW5Cb3hEZWx0YShsZWZ0TWFyZ2luQm94RGVsdGEpCisgICAgICAg
ICwgbV9yaWdodE1hcmdpbkJveERlbHRhKHJpZ2h0TWFyZ2luQm94RGVsdGEpCisgICAgICAgICwg
bV9saW5lT3ZlcmxhcHNTaGFwZShsaW5lT3ZlcmxhcHNTaGFwZSkKKyAgICAgICAgLCBtX2JvcmRl
ckJveExpbmVUb3AoYm9yZGVyQm94TGluZVRvcCkKKyAgICAgICAgLCBtX2xpbmVIZWlnaHQobGlu
ZUhlaWdodCkKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBpc0ZvckxpbmUoTGF5b3V0VW5pdCBi
b3JkZXJCb3hMaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pc1ZhbGlkICYmIG1fYm9yZGVyQm94TGluZVRvcCA9PSBib3JkZXJCb3hMaW5lVG9w
ICYmIG1fbGluZUhlaWdodCA9PSBsaW5lSGVpZ2h0OworICAgIH0KKworICAgIGJvb2wgaXNWYWxp
ZCgpIHsgcmV0dXJuIG1faXNWYWxpZDsgfQorICAgIExheW91dFVuaXQgbGVmdE1hcmdpbkJveERl
bHRhKCkgeyBBU1NFUlQobV9pc1ZhbGlkKTsgcmV0dXJuIG1fbGVmdE1hcmdpbkJveERlbHRhOyB9
CisgICAgTGF5b3V0VW5pdCByaWdodE1hcmdpbkJveERlbHRhKCkgeyBBU1NFUlQobV9pc1ZhbGlk
KTsgcmV0dXJuIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YTsgfQorICAgIGJvb2wgbGluZU92ZXJsYXBz
U2hhcGUoKSB7IEFTU0VSVChtX2lzVmFsaWQpOyByZXR1cm4gbV9saW5lT3ZlcmxhcHNTaGFwZTsg
fQorCitwcml2YXRlOgorICAgIGJvb2wgbV9pc1ZhbGlkOworICAgIExheW91dFVuaXQgbV9sZWZ0
TWFyZ2luQm94RGVsdGE7CisgICAgTGF5b3V0VW5pdCBtX3JpZ2h0TWFyZ2luQm94RGVsdGE7Cisg
ICAgYm9vbCBtX2xpbmVPdmVybGFwc1NoYXBlOworICAgIExheW91dFVuaXQgbV9ib3JkZXJCb3hM
aW5lVG9wOworICAgIExheW91dFVuaXQgbV9saW5lSGVpZ2h0OworfTsKKwogY2xhc3MgU2hhcGVP
dXRzaWRlSW5mbyBmaW5hbCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CiAgICAgU2hhcGVPdXRzaWRlSW5mbyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogICAgICAg
ICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCi0gICAgICAgICwgbV9saW5lT3ZlcmxhcHNTaGFwZShm
YWxzZSkKICAgICB7CiAgICAgfQogCiAgICAgc3RhdGljIGJvb2wgaXNFbmFibGVkRm9yKGNvbnN0
IFJlbmRlckJveCYpOwogCi0gICAgTGF5b3V0VW5pdCBsZWZ0TWFyZ2luQm94RGVsdGEoKSBjb25z
dCB7IHJldHVybiBtX2xlZnRNYXJnaW5Cb3hEZWx0YTsgfQotICAgIExheW91dFVuaXQgcmlnaHRN
YXJnaW5Cb3hEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YTsgfQot
ICAgIGJvb2wgbGluZU92ZXJsYXBzU2hhcGUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVPdmVybGFw
c1NoYXBlOyB9Ci0KLSAgICB2b2lkIHVwZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgRmxvYXRpbmdPYmplY3QmLCBMYXlvdXRVbml0
IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCk7CisgICAgU2hhcGVPdXRzaWRlRGVsdGFz
IGNvbXB1dGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKGNvbnN0IFJlbmRlckJsb2NrRmxv
dyYsIGNvbnN0IEZsb2F0aW5nT2JqZWN0JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0
IGxpbmVIZWlnaHQpOwogCiAgICAgdm9pZCBzZXRSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZShMYXlv
dXRTaXplKTsKIApAQCAtNjksMTAgKzEwNSw2IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHNo
YXBlTG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZWRTaGFwZSgpLnNoYXBlTWFy
Z2luTG9naWNhbEJvdW5kaW5nQm94KCkud2lkdGgoKTsgfQogICAgIExheW91dFVuaXQgc2hhcGVM
b2dpY2FsSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZWRTaGFwZSgpLnNoYXBlTWFyZ2lu
TG9naWNhbEJvdW5kaW5nQm94KCkuaGVpZ2h0KCk7IH0KIAotICAgIExheW91dFVuaXQgbG9naWNh
bExpbmVUb3AoKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUJveExpbmVUb3AgKyBsb2dpY2Fs
VG9wT2Zmc2V0KCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMaW5lQm90dG9tKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWZlcmVuY2VCb3hMaW5lVG9wICsgbV9saW5lSGVpZ2h0ICsgbG9naWNhbFRv
cE9mZnNldCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGluZUJvdHRvbShMYXlvdXRVbml0
IGxpbmVIZWlnaHQpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlQm94TGluZVRvcCArIGxpbmVI
ZWlnaHQgKyBsb2dpY2FsVG9wT2Zmc2V0KCk7IH0KLQogICAgIHZvaWQgbWFya1NoYXBlQXNEaXJ0
eSgpIHsgbV9zaGFwZSA9IG51bGxwdHI7IH0KICAgICBib29sIGlzU2hhcGVEaXJ0eSgpIHsgcmV0
dXJuICFtX3NoYXBlOyB9CiAKQEAgLTExMiwxMyArMTQ0LDggQEAgcHJpdmF0ZToKIAogICAgIG11
dGFibGUgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBtX3NoYXBlOwogICAgIExheW91dFNpemUgbV9y
ZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZTsKLSAgICBMYXlvdXRVbml0IG1fcmVmZXJlbmNlQm94TGlu
ZVRvcDsKLSAgICBMYXlvdXRVbml0IG1fbGluZUhlaWdodDsKIAotICAgIExheW91dFVuaXQgbV9s
ZWZ0TWFyZ2luQm94RGVsdGE7Ci0gICAgTGF5b3V0VW5pdCBtX3JpZ2h0TWFyZ2luQm94RGVsdGE7
Ci0gICAgTGF5b3V0VW5pdCBtX2JvcmRlckJveExpbmVUb3A7Ci0gICAgYm9vbCBtX2xpbmVPdmVy
bGFwc1NoYXBlOworICAgIFNoYXBlT3V0c2lkZURlbHRhcyBtX3NoYXBlT3V0c2lkZURlbHRhczsK
IH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236330</attachid>
            <date>2014-08-08 21:10:10 -0700</date>
            <delta_ts>2014-08-12 11:00:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135781-20140808210959.patch</filename>
            <type>text/plain</type>
            <size>19367</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdiZTY1ODYzZTc4Nzg0
NTZkYjY1NDYxMjY5ZDRlN2Q3NzAyNTI2ZC4uNDZmYjE1ZWIyYTE4YzY2NWZjZTdjOGRlZTBjMzJh
NzQwMDY5OGM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTA4LTA4ICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFNoYXBl
T3V0c2lkZUluZm8gc28gaXQgaXNuJ3QgbXV0YXRlZCBmb3IgZWFjaCBsaW5lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU3ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgcGVy
IGxpbmUgc3RhdGUgaW50byBhIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QuCisgICAgICAgIHVw
ZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUgaGFzIGJlZW4gcmVuYW1lZCB0bworICAg
ICAgICBjb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSwgYW5kIGl0IHJldHVybnMg
YW4gaW5zdGFuY2Ugb2YgdGhlCisgICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgZm9y
IHRoYXQgbGluZS4gVGhpcyBvYmplY3QgaXMgY2FjaGVkLCBidXQKKyAgICAgICAgbm9uZSBvZiB0
aGUgZnVuY3Rpb25hbGl0eSBvZiBTaGFwZU91dHNpZGVJbmZvIGlzIGRlcGVuZGFudCBvbiBhbnkg
bGluZQorICAgICAgICBzcGVjaWZpYyBkYXRhIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0
TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZO
ZWVkZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRvIHRha2UgYSBGbG9hdGluZ09iamVjdCByZWZl
cmVuY2UgYmVjYXVzZSB0aGUgRmxvYXRpbmdPYmplY3QgY2Fubm90IGJlIG51bGwuCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRp
bmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZCk6CisgICAgICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8Rmxv
YXRUeXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQpOiBQYXNzIEZsb2F0aW5nT2JqZWN0IHRvCisg
ICAgICAgICAgICB1cGRhdGVPZmZzZXRJZk5lZWRlZCBhcyBhIHJlZmVyZW5jZSwgc2luY2UgaXQg
Y2Fubm90IGJlIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JM
aW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0
SWZOZWVkZWQpOgorICAgICAgICAgICAgVXNlIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgdG8g
Y2FsY3VsYXRlIHRoZSBvZmZzZXQgYW5kIHRha2UgdGhlIEZsb2F0aW5nT2JqZWN0IGFzIGEKKyAg
ICAgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNl
dEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRl
T2Zmc2V0SWZOZWVkZWQpOgorICAgICAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpz
aGFwZUluZm9Gb3JGbG9hdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxl
V2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKTogVXBkYXRlIHRvIHVzZSBTaGFwZU91dHNpZGVEZWx0
YXMgb2JqZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVsdGFzRm9y
Q29udGFpbmluZ0Jsb2NrTGluZSk6IFJldHVybiBhIFNoYW9lT3V0c2lkZURlbHRhcyBvYmplY3QK
KyAgICAgICAgICAgIGluc3RlYWQgb2Ygc3RvcmluZyBsaW5lIHNwZWNpZmljIGRhdGEgaW4gaW5z
dGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6dXBk
YXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisKIDIwMTQtMDgtMDggIFBleXRvbiBS
YW5kb2xwaCAgPHByYW5kb2xwaEBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVtZW50IGxvbmcg
bW91c2UgcHJlc3Mgb3ZlciBsaW5rcy4gUGFydCBvZiAxMzUyNTcgLSBBZGQgbG9uZyBtb3VzZSBw
cmVzcyBnZXN0dXJlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0
aW5nT2JqZWN0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3Rz
LmNwcAppbmRleCA1YjViZjA2YjM1YTE1NjI4YzMyY2I5NTU3ZWNkYWRhZTk5OTZiY2FlLi5iNDA3
YTdkOTQ3ZjZjZGE2ZjBlN2E3ZmJjODQxZmQ2MTYwY2MxN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIHB1Ymxp
YzoKICAgICBMYXlvdXRVbml0IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3Qg
RmxvYXRpbmdPYmplY3QqKSA9IDA7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZU9mZnNldElmTmVl
ZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JikgPSAwOwogCiAgICAgY29uc3QgUmVuZGVyQmxvY2tG
bG93JiBtX3JlbmRlcmVyOwogICAgIExheW91dFVuaXQgbV9saW5lVG9wOwpAQCAtMTUxLDcgKzE1
MSw3IEBAIHByb3RlY3RlZDoKIH07CiAKIHRlbXBsYXRlIDxGbG9hdGluZ09iamVjdDo6VHlwZSBG
bG9hdFR5cGVWYWx1ZT4KLWNsYXNzIENvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0TGF5b3V0QWRh
cHRlciA6IHB1YmxpYyBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPiB7
IAorY2xhc3MgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyIDogcHVibGlj
IENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRUeXBlVmFsdWU+IHsKIHB1YmxpYzoKICAg
ICBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXIoY29uc3QgUmVuZGVyQmxv
Y2tGbG93JiByZW5kZXJlciwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVCb3R0
b20sIExheW91dFVuaXQgb2Zmc2V0KQogICAgICAgICA6IENvbXB1dGVGbG9hdE9mZnNldEFkYXB0
ZXI8RmxvYXRUeXBlVmFsdWU+KHJlbmRlcmVyLCBsaW5lVG9wLCBsaW5lQm90dG9tLCBvZmZzZXQp
CkBAIC0xNjMsNyArMTYzLDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgaGVpZ2h0UmVtYWlu
aW5nKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlT2Zmc2V0
SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0
dWFsIGJvb2wgdXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmKSBvdmVy
cmlkZSBmaW5hbDsKIH07CiAKIHRlbXBsYXRlIDxGbG9hdGluZ09iamVjdDo6VHlwZSBGbG9hdFR5
cGVWYWx1ZT4KQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Q29tcHV0
ZUZsb2F0T2Zmc2V0Rm9yTGluZUxheW91dEFkYXB0ZXIoKSB7IH0KIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgYm9vbCB1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCop
IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVPZmZzZXRJZk5lZWRlZChj
b25zdCBGbG9hdGluZ09iamVjdCYpIG92ZXJyaWRlIGZpbmFsOwogfTsKIAogY2xhc3MgRmluZE5l
eHRGbG9hdExvZ2ljYWxCb3R0b21BZGFwdGVyIHsKQEAgLTQyNSw5ICs0MjUsOSBAQCBMYXlvdXRV
bml0IEZsb2F0aW5nT2JqZWN0czo6bG9naWNhbFJpZ2h0T2Zmc2V0KExheW91dFVuaXQgZml4ZWRP
ZmZzZXQsIExheW91dFVuaQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBDb21wdXRlRmxv
YXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46
OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVj
dCkKK2lubGluZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0TGF5b3V0QWRhcHRlcjxG
bG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxv
YXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0KQogewotICAgIExheW91dFVuaXQgbG9naWNhbFJp
Z2h0ID0gbV9yZW5kZXJlci5sb2dpY2FsUmlnaHRGb3JGbG9hdChmbG9hdGluZ09iamVjdCk7Cisg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxSaWdodEZvckZs
b2F0KCZmbG9hdGluZ09iamVjdCk7CiAgICAgaWYgKGxvZ2ljYWxSaWdodCA+IG1fb2Zmc2V0KSB7
CiAgICAgICAgIG1fb2Zmc2V0ID0gbG9naWNhbFJpZ2h0OwogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTQzNiw5ICs0MzYsOSBAQCBpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9h
dExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OgogfQogCiB0ZW1wbGF0
ZTw+Ci1pbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8
RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBG
bG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCitpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRP
ZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1
cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3Qp
CiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IG1fcmVuZGVyZXIubG9naWNhbExlZnRG
b3JGbG9hdChmbG9hdGluZ09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IG1f
cmVuZGVyZXIubG9naWNhbExlZnRGb3JGbG9hdCgmZmxvYXRpbmdPYmplY3QpOwogICAgIGlmIChs
b2dpY2FsTGVmdCA8IG1fb2Zmc2V0KSB7CiAgICAgICAgIG1fb2Zmc2V0ID0gbG9naWNhbExlZnQ7
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNDYzLDM1ICs0NjMsMjIgQEAgaW5saW5lIHZvaWQg
Q29tcHV0ZUZsb2F0T2Zmc2V0QWRhcHRlcjxGbG9hdFR5cGVWYWx1ZT46OmNvbGxlY3RJZk5lZWRl
ZChjb25zdCBJbnQKICAgICBBU1NFUlQoZmxvYXRpbmdPYmplY3QtPmlzUGxhY2VkKCkpOwogICAg
IEFTU0VSVChyYW5nZXNJbnRlcnNlY3QobV9yZW5kZXJlci5sb2dpY2FsVG9wRm9yRmxvYXQoZmxv
YXRpbmdPYmplY3QpLCBtX3JlbmRlcmVyLmxvZ2ljYWxCb3R0b21Gb3JGbG9hdChmbG9hdGluZ09i
amVjdCksIG1fbGluZVRvcCwgbV9saW5lQm90dG9tKSk7CiAKLSAgICBib29sIGZsb2F0SXNOZXdF
eHRyZW1lID0gdXBkYXRlT2Zmc2V0SWZOZWVkZWQoZmxvYXRpbmdPYmplY3QpOworICAgIGJvb2wg
ZmxvYXRJc05ld0V4dHJlbWUgPSB1cGRhdGVPZmZzZXRJZk5lZWRlZCgqZmxvYXRpbmdPYmplY3Qp
OwogICAgIGlmIChmbG9hdElzTmV3RXh0cmVtZSkKICAgICAgICAgbV9vdXRlcm1vc3RGbG9hdCA9
IGZsb2F0aW5nT2JqZWN0OwogfQogCi0jaWYgRU5BQkxFKENTU19TSEFQRVMpCi1zdGF0aWMgaW5s
aW5lIFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlSW5mb0ZvckZsb2F0KGNvbnN0IEZsb2F0aW5nT2Jq
ZWN0KiBmbG9hdGluZ09iamVjdCwgY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxv
Y2ssIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tKQotewotICAgIGlm
IChmbG9hdGluZ09iamVjdCkgewotICAgICAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVP
dXRzaWRlID0gZmxvYXRpbmdPYmplY3QtPnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7
Ci0gICAgICAgICAgICBzaGFwZU91dHNpZGUtPnVwZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9j
a0xpbmUoY29udGFpbmluZ0Jsb2NrLCAqZmxvYXRpbmdPYmplY3QsIGxpbmVUb3AsIGxpbmVCb3R0
b20gLSBsaW5lVG9wKTsKLSAgICAgICAgICAgIHJldHVybiBzaGFwZU91dHNpZGU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLSNlbmRpZgotCiB0ZW1wbGF0ZTw+
Ci1pbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRhcHRlcjxGbG9h
dGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRp
bmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQoraW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0
Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0ZU9m
ZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCkKIHsKLSAg
ICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IG1fcmVuZGVyZXIubG9naWNhbFJpZ2h0Rm9yRmxv
YXQoZmxvYXRpbmdPYmplY3QpOworICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0ID0gbV9yZW5k
ZXJlci5sb2dpY2FsUmlnaHRGb3JGbG9hdCgmZmxvYXRpbmdPYmplY3QpOwogI2lmIEVOQUJMRShD
U1NfU0hBUEVTKQotICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGUgPSBzaGFw
ZUluZm9Gb3JGbG9hdChmbG9hdGluZ09iamVjdCwgbV9yZW5kZXJlciwgbV9saW5lVG9wLCBtX2xp
bmVCb3R0b20pKSB7Ci0gICAgICAgIGlmICghc2hhcGVPdXRzaWRlLT5saW5lT3ZlcmxhcHNTaGFw
ZSgpKQorICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGUgPSBmbG9hdGluZ09i
amVjdC5yZW5kZXJlcigpLnNoYXBlT3V0c2lkZUluZm8oKSkgeworICAgICAgICBTaGFwZU91dHNp
ZGVEZWx0YXMgc2hhcGVEZWx0YXMgPSBzaGFwZU91dHNpZGUtPmNvbXB1dGVEZWx0YXNGb3JDb250
YWluaW5nQmxvY2tMaW5lKG1fcmVuZGVyZXIsIGZsb2F0aW5nT2JqZWN0LCBtX2xpbmVUb3AsIG1f
bGluZUJvdHRvbSAtIG1fbGluZVRvcCk7CisgICAgICAgIGlmICghc2hhcGVEZWx0YXMubGluZU92
ZXJsYXBzU2hhcGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBsb2dp
Y2FsUmlnaHQgKz0gc2hhcGVPdXRzaWRlLT5yaWdodE1hcmdpbkJveERlbHRhKCk7CisgICAgICAg
IGxvZ2ljYWxSaWdodCArPSBzaGFwZURlbHRhcy5yaWdodE1hcmdpbkJveERlbHRhKCk7CiAgICAg
fQogI2VuZGlmCiAgICAgaWYgKGxvZ2ljYWxSaWdodCA+IG1fb2Zmc2V0KSB7CkBAIC01MDMsMTUg
KzQ5MCwxNiBAQCBpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRh
cHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dQogfQogCiB0ZW1wbGF0ZTw+Ci1pbmxp
bmUgYm9vbCBDb21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09i
amVjdDo6RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2Jq
ZWN0KiBmbG9hdGluZ09iamVjdCkKK2lubGluZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckxp
bmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRlT2Zmc2V0
SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0KQogewotICAgIExh
eW91dFVuaXQgbG9naWNhbExlZnQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQoZmxv
YXRpbmdPYmplY3QpOworICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBtX3JlbmRlcmVyLmxv
Z2ljYWxMZWZ0Rm9yRmxvYXQoJmZsb2F0aW5nT2JqZWN0KTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBF
UykKLSAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0gc2hhcGVJbmZvRm9y
RmxvYXQoZmxvYXRpbmdPYmplY3QsIG1fcmVuZGVyZXIsIG1fbGluZVRvcCwgbV9saW5lQm90dG9t
KSkgewotICAgICAgICBpZiAoIXNoYXBlT3V0c2lkZS0+bGluZU92ZXJsYXBzU2hhcGUoKSkKKyAg
ICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlID0gZmxvYXRpbmdPYmplY3QucmVu
ZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCkpIHsKKyAgICAgICAgU2hhcGVPdXRzaWRlRGVsdGFz
IHNoYXBlRGVsdGFzID0gc2hhcGVPdXRzaWRlLT5jb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Js
b2NrTGluZShtX3JlbmRlcmVyLCBmbG9hdGluZ09iamVjdCwgbV9saW5lVG9wLCBtX2xpbmVCb3R0
b20gLSBtX2xpbmVUb3ApOworICAgICAgICBpZiAoIXNoYXBlRGVsdGFzLmxpbmVPdmVybGFwc1No
YXBlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgbG9naWNhbExlZnQg
Kz0gc2hhcGVPdXRzaWRlLT5sZWZ0TWFyZ2luQm94RGVsdGEoKTsKKyAgICAgICAgbG9naWNhbExl
ZnQgKz0gc2hhcGVEZWx0YXMubGVmdE1hcmdpbkJveERlbHRhKCk7CiAgICAgfQogI2VuZGlmCiAg
ICAgaWYgKGxvZ2ljYWxMZWZ0IDwgbV9vZmZzZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lV2lkdGguY3BwCmluZGV4IDhjY2M3ZmM5ZmEzYTMyMzBmZWZlM2ZkZWIzZjcx
NjlkOThmMzMwYmMuLmU2MmFlOTk5NjlkY2JlNTRiZDJhY2Q5OThhN2NkMzAxMGVmYmE3NGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcApAQCAtODMsMTAg
KzgzLDEwIEBAIHZvaWQgTGluZVdpZHRoOjpzaHJpbmtBdmFpbGFibGVXaWR0aEZvck5ld0Zsb2F0
SWZOZWVkZWQoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0CiAgICAgICAgIHJldHVybjsKIAogI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQotICAgIFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZUlu
Zm8gPSBuZXdGbG9hdC0+cmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCk7Ci0gICAgaWYgKHNo
YXBlT3V0c2lkZUluZm8pIHsKKyAgICBTaGFwZU91dHNpZGVEZWx0YXMgc2hhcGVEZWx0YXM7Cisg
ICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZUluZm8gPSBuZXdGbG9hdC0+cmVu
ZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZvKCkpIHsKICAgICAgICAgTGF5b3V0VW5pdCBsaW5lSGVp
Z2h0ID0gbV9ibG9jay5saW5lSGVpZ2h0KG1faXNGaXJzdExpbmUsIG1fYmxvY2suaXNIb3Jpem9u
dGFsV3JpdGluZ01vZGUoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3NpdGlv
bk9mSW50ZXJpb3JMaW5lQm94ZXMpOwotICAgICAgICBzaGFwZU91dHNpZGVJbmZvLT51cGRhdGVE
ZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKG1fYmxvY2ssICpuZXdGbG9hdCwgbV9ibG9jay5s
b2dpY2FsSGVpZ2h0KCksIGxpbmVIZWlnaHQpOworICAgICAgICBzaGFwZURlbHRhcyA9IHNoYXBl
T3V0c2lkZUluZm8tPmNvbXB1dGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKG1fYmxvY2ss
ICpuZXdGbG9hdCwgbV9ibG9jay5sb2dpY2FsSGVpZ2h0KCksIGxpbmVIZWlnaHQpOwogICAgIH0K
ICNlbmRpZgogCkBAIC05NSw5ICs5NSw5IEBAIHZvaWQgTGluZVdpZHRoOjpzaHJpbmtBdmFpbGFi
bGVXaWR0aEZvck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0CiAgICAg
ICAgIGlmIChzaG91bGRJbmRlbnRUZXh0KCkgJiYgbV9ibG9jay5zdHlsZSgpLmlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgIG5ld0xlZnQgKz0gZmxvb3JUb0ludChtX2Jsb2Nr
LnRleHRJbmRlbnRPZmZzZXQoKSk7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgICAgIGlm
IChzaGFwZU91dHNpZGVJbmZvKSB7Ci0gICAgICAgICAgICBpZiAoc2hhcGVPdXRzaWRlSW5mby0+
bGluZU92ZXJsYXBzU2hhcGUoKSkKLSAgICAgICAgICAgICAgICBuZXdMZWZ0ICs9IHNoYXBlT3V0
c2lkZUluZm8tPnJpZ2h0TWFyZ2luQm94RGVsdGEoKTsKKyAgICAgICAgaWYgKHNoYXBlRGVsdGFz
LmlzVmFsaWQoKSkgeworICAgICAgICAgICAgaWYgKHNoYXBlRGVsdGFzLmxpbmVPdmVybGFwc1No
YXBlKCkpCisgICAgICAgICAgICAgICAgbmV3TGVmdCArPSBzaGFwZURlbHRhcy5yaWdodE1hcmdp
bkJveERlbHRhKCk7CiAgICAgICAgICAgICBlbHNlIC8vIElmIHRoZSBsaW5lIGRvZXNuJ3Qgb3Zl
cmxhcCB0aGUgc2hhcGUsIHRoZW4gd2UgbmVlZCB0byBhY3QgYXMgaWYgdGhpcyBmbG9hdCBkaWRu
J3QgZXhpc3QuCiAgICAgICAgICAgICAgICAgbmV3TGVmdCA9IG1fbGVmdDsKICAgICAgICAgfQpA
QCAtMTA4LDkgKzEwOCw5IEBAIHZvaWQgTGluZVdpZHRoOjpzaHJpbmtBdmFpbGFibGVXaWR0aEZv
ck5ld0Zsb2F0SWZOZWVkZWQoRmxvYXRpbmdPYmplY3QqIG5ld0Zsb2F0CiAgICAgICAgIGlmIChz
aG91bGRJbmRlbnRUZXh0KCkgJiYgIW1fYmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpCiAgICAgICAgICAgICBuZXdSaWdodCAtPSBmbG9vclRvSW50KG1fYmxvY2sudGV4dElu
ZGVudE9mZnNldCgpKTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICAgICAgaWYgKHNoYXBl
T3V0c2lkZUluZm8pIHsKLSAgICAgICAgICAgIGlmIChzaGFwZU91dHNpZGVJbmZvLT5saW5lT3Zl
cmxhcHNTaGFwZSgpKQotICAgICAgICAgICAgICAgIG5ld1JpZ2h0ICs9IHNoYXBlT3V0c2lkZUlu
Zm8tPmxlZnRNYXJnaW5Cb3hEZWx0YSgpOworICAgICAgICBpZiAoc2hhcGVEZWx0YXMuaXNWYWxp
ZCgpKSB7CisgICAgICAgICAgICBpZiAoc2hhcGVEZWx0YXMubGluZU92ZXJsYXBzU2hhcGUoKSkK
KyAgICAgICAgICAgICAgICBuZXdSaWdodCArPSBzaGFwZURlbHRhcy5sZWZ0TWFyZ2luQm94RGVs
dGEoKTsKICAgICAgICAgICAgIGVsc2UgLy8gSWYgdGhlIGxpbmUgZG9lc24ndCBvdmVybGFwIHRo
ZSBzaGFwZSwgdGhlbiB3ZSBuZWVkIHRvIGFjdCBhcyBpZiB0aGlzIGZsb2F0IGRpZG4ndCBleGlz
dC4KICAgICAgICAgICAgICAgICBuZXdSaWdodCA9IG1fcmlnaHQ7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3Bw
CmluZGV4IDk0NWY3ZWMzM2YwN2U1NWIyMTA4MTFmZGFkMjU0Y2E1NGRhMzllNzcuLmY1ZDVkYWE1
MWE4Y2VlN2U5Y2FjZTQ0NDZhNDU2NzYzZjA1OWY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcApAQCAtMzAzLDQyICsz
MDMsNDAgQEAgYm9vbCBTaGFwZU91dHNpZGVJbmZvOjppc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVy
Qm94JiBib3gpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNoYXBlT3V0c2lkZUluZm86
OnVwZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUoY29uc3QgUmVuZGVyQmxvY2tGbG93
JiBjb250YWluaW5nQmxvY2ssIGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCwg
TGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpCitTaGFwZU91dHNpZGVE
ZWx0YXMgU2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xp
bmUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiBjb250YWluaW5nQmxvY2ssIGNvbnN0IEZsb2F0aW5n
T2JqZWN0JiBmbG9hdGluZ09iamVjdCwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxp
bmVIZWlnaHQpCiB7CiAgICAgQVNTRVJUKGxpbmVIZWlnaHQgPj0gMCk7Ci0KICAgICBMYXlvdXRV
bml0IGJvcmRlckJveFRvcCA9IGNvbnRhaW5pbmdCbG9jay5sb2dpY2FsVG9wRm9yRmxvYXQoJmZs
b2F0aW5nT2JqZWN0KSArIGNvbnRhaW5pbmdCbG9jay5tYXJnaW5CZWZvcmVGb3JDaGlsZChtX3Jl
bmRlcmVyKTsKICAgICBMYXlvdXRVbml0IGJvcmRlckJveExpbmVUb3AgPSBsaW5lVG9wIC0gYm9y
ZGVyQm94VG9wOwogCi0gICAgaWYgKGlzU2hhcGVEaXJ0eSgpIHx8IG1fYm9yZGVyQm94TGluZVRv
cCAhPSBib3JkZXJCb3hMaW5lVG9wIHx8IG1fbGluZUhlaWdodCAhPSBsaW5lSGVpZ2h0KSB7Ci0g
ICAgICAgIG1fYm9yZGVyQm94TGluZVRvcCA9IGJvcmRlckJveExpbmVUb3A7Ci0gICAgICAgIG1f
cmVmZXJlbmNlQm94TGluZVRvcCA9IGJvcmRlckJveExpbmVUb3AgLSBsb2dpY2FsVG9wT2Zmc2V0
KCk7Ci0gICAgICAgIG1fbGluZUhlaWdodCA9IGxpbmVIZWlnaHQ7Ci0KKyAgICBpZiAoaXNTaGFw
ZURpcnR5KCkgfHwgIW1fc2hhcGVPdXRzaWRlRGVsdGFzLmlzRm9yTGluZShib3JkZXJCb3hMaW5l
VG9wLCBsaW5lSGVpZ2h0KSkgeworICAgICAgICBMYXlvdXRVbml0IHJlZmVyZW5jZUJveExpbmVU
b3AgPSBib3JkZXJCb3hMaW5lVG9wIC0gbG9naWNhbFRvcE9mZnNldCgpOwogICAgICAgICBMYXlv
dXRVbml0IGZsb2F0TWFyZ2luQm94V2lkdGggPSBjb250YWluaW5nQmxvY2subG9naWNhbFdpZHRo
Rm9yRmxvYXQoJmZsb2F0aW5nT2JqZWN0KTsKIAotICAgICAgICBpZiAoY29tcHV0ZWRTaGFwZSgp
LmxpbmVPdmVybGFwc1NoYXBlTWFyZ2luQm91bmRzKG1fcmVmZXJlbmNlQm94TGluZVRvcCwgbV9s
aW5lSGVpZ2h0KSkgeworICAgICAgICBpZiAoY29tcHV0ZWRTaGFwZSgpLmxpbmVPdmVybGFwc1No
YXBlTWFyZ2luQm91bmRzKHJlZmVyZW5jZUJveExpbmVUb3AsIGxpbmVIZWlnaHQpKSB7CiAgICAg
ICAgICAgICBMaW5lU2VnbWVudCBzZWdtZW50ID0gY29tcHV0ZWRTaGFwZSgpLmdldEV4Y2x1ZGVk
SW50ZXJ2YWwoKGJvcmRlckJveExpbmVUb3AgLSBsb2dpY2FsVG9wT2Zmc2V0KCkpLCBzdGQ6Om1p
bihsaW5lSGVpZ2h0LCBzaGFwZUxvZ2ljYWxCb3R0b20oKSAtIGJvcmRlckJveExpbmVUb3ApKTsK
ICAgICAgICAgICAgIGlmIChzZWdtZW50LmlzVmFsaWQpIHsKICAgICAgICAgICAgICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0TWFyZ2luID0gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpID8gY29udGFpbmluZ0Jsb2NrLm1hcmdpblN0YXJ0Rm9yQ2hpbGQo
bV9yZW5kZXJlcikgOiBjb250YWluaW5nQmxvY2subWFyZ2luRW5kRm9yQ2hpbGQobV9yZW5kZXJl
cik7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCByYXdMZWZ0TWFyZ2luQm94RGVsdGEgPSBz
ZWdtZW50LmxvZ2ljYWxMZWZ0ICsgbG9naWNhbExlZnRPZmZzZXQoKSArIGxvZ2ljYWxMZWZ0TWFy
Z2luOwotICAgICAgICAgICAgICAgIG1fbGVmdE1hcmdpbkJveERlbHRhID0gY2xhbXBUbzxMYXlv
dXRVbml0PihyYXdMZWZ0TWFyZ2luQm94RGVsdGEsIExheW91dFVuaXQoKSwgZmxvYXRNYXJnaW5C
b3hXaWR0aCk7CisgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsZWZ0TWFyZ2luQm94RGVsdGEg
PSBjbGFtcFRvPExheW91dFVuaXQ+KHJhd0xlZnRNYXJnaW5Cb3hEZWx0YSwgTGF5b3V0VW5pdCgp
LCBmbG9hdE1hcmdpbkJveFdpZHRoKTsKIAogICAgICAgICAgICAgICAgIExheW91dFVuaXQgbG9n
aWNhbFJpZ2h0TWFyZ2luID0gY29udGFpbmluZ0Jsb2NrLnN0eWxlKCkuaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gY29udGFpbmluZ0Jsb2NrLm1hcmdpbkVuZEZvckNoaWxkKG1fcmVuZGVyZXIp
IDogY29udGFpbmluZ0Jsb2NrLm1hcmdpblN0YXJ0Rm9yQ2hpbGQobV9yZW5kZXJlcik7CiAgICAg
ICAgICAgICAgICAgTGF5b3V0VW5pdCByYXdSaWdodE1hcmdpbkJveERlbHRhID0gc2VnbWVudC5s
b2dpY2FsUmlnaHQgKyBsb2dpY2FsTGVmdE9mZnNldCgpIC0gY29udGFpbmluZ0Jsb2NrLmxvZ2lj
YWxXaWR0aEZvckNoaWxkKG1fcmVuZGVyZXIpIC0gbG9naWNhbFJpZ2h0TWFyZ2luOwotICAgICAg
ICAgICAgICAgIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YSA9IGNsYW1wVG88TGF5b3V0VW5pdD4ocmF3
UmlnaHRNYXJnaW5Cb3hEZWx0YSwgLWZsb2F0TWFyZ2luQm94V2lkdGgsIExheW91dFVuaXQoKSk7
Ci0gICAgICAgICAgICAgICAgbV9saW5lT3ZlcmxhcHNTaGFwZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIExheW91dFVuaXQgcmlnaHRNYXJnaW5Cb3hE
ZWx0YSA9IGNsYW1wVG88TGF5b3V0VW5pdD4ocmF3UmlnaHRNYXJnaW5Cb3hEZWx0YSwgLWZsb2F0
TWFyZ2luQm94V2lkdGgsIExheW91dFVuaXQoKSk7CisKKyAgICAgICAgICAgICAgICBtX3NoYXBl
T3V0c2lkZURlbHRhcyA9IFNoYXBlT3V0c2lkZURlbHRhcyhsZWZ0TWFyZ2luQm94RGVsdGEsIHJp
Z2h0TWFyZ2luQm94RGVsdGEsIHRydWUsIGJvcmRlckJveExpbmVUb3AsIGxpbmVIZWlnaHQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBtX3NoYXBlT3V0c2lkZURlbHRhczsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCiAgICAgICAgIC8vIExpbmVzIHRoYXQgZG8gbm90IG92ZXJsYXAgdGhl
IHNoYXBlIHNob3VsZCBhY3QgYXMgaWYgdGhlIGZsb2F0CiAgICAgICAgIC8vIHdhc24ndCB0aGVy
ZSBmb3IgbGF5b3V0IHB1cnBvc2VzLiBTbyB3ZSBzZXQgdGhlIGRlbHRhcyB0byByZW1vdmUgdGhl
CiAgICAgICAgIC8vIGVudGlyZSB3aWR0aCBvZiB0aGUgZmxvYXQKLSAgICAgICAgbV9sZWZ0TWFy
Z2luQm94RGVsdGEgPSBmbG9hdE1hcmdpbkJveFdpZHRoOwotICAgICAgICBtX3JpZ2h0TWFyZ2lu
Qm94RGVsdGEgPSAtZmxvYXRNYXJnaW5Cb3hXaWR0aDsKLSAgICAgICAgbV9saW5lT3ZlcmxhcHNT
aGFwZSA9IGZhbHNlOworICAgICAgICBtX3NoYXBlT3V0c2lkZURlbHRhcyA9IFNoYXBlT3V0c2lk
ZURlbHRhcyhmbG9hdE1hcmdpbkJveFdpZHRoLCAtZmxvYXRNYXJnaW5Cb3hXaWR0aCwgZmFsc2Us
IGJvcmRlckJveExpbmVUb3AsIGxpbmVIZWlnaHQpOworICAgICAgICByZXR1cm4gbV9zaGFwZU91
dHNpZGVEZWx0YXM7CiAgICAgfQorCisgICAgcmV0dXJuIG1fc2hhcGVPdXRzaWRlRGVsdGFzOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
T3V0c2lkZUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5oCmluZGV4IDcxYmViMDY0NDE1ODQ2M2RlNmE4OWY4ZDU3YjE1YTVmM2EwNjgxYjcu
LmUxODAyNTI5M2MyNTFlMzVhNzUyMDgzNjQ1ZjZjM2RjYmU4NTk1ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBAIC00Mywy
MiArNDMsNTggQEAgY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgU3R5bGVJbWFnZTsKIGNsYXNzIEZs
b2F0aW5nT2JqZWN0OwogCitjbGFzcyBTaGFwZU91dHNpZGVEZWx0YXMgZmluYWwgeworcHVibGlj
OgorICAgIFNoYXBlT3V0c2lkZURlbHRhcygpCisgICAgICAgIDogbV9pc1ZhbGlkKGZhbHNlKQor
ICAgICAgICAsIG1fbGVmdE1hcmdpbkJveERlbHRhKDApCisgICAgICAgICwgbV9yaWdodE1hcmdp
bkJveERlbHRhKDApCisgICAgICAgICwgbV9saW5lT3ZlcmxhcHNTaGFwZShmYWxzZSkKKyAgICAg
ICAgLCBtX2JvcmRlckJveExpbmVUb3AoMCkKKyAgICAgICAgLCBtX2xpbmVIZWlnaHQoMCkKKyAg
ICB7CisgICAgfQorCisgICAgU2hhcGVPdXRzaWRlRGVsdGFzKExheW91dFVuaXQgbGVmdE1hcmdp
bkJveERlbHRhLCBMYXlvdXRVbml0IHJpZ2h0TWFyZ2luQm94RGVsdGEsIGJvb2wgbGluZU92ZXJs
YXBzU2hhcGUsIExheW91dFVuaXQgYm9yZGVyQm94TGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVp
Z2h0KQorICAgICAgICA6IG1faXNWYWxpZCh0cnVlKQorICAgICAgICAsIG1fbGVmdE1hcmdpbkJv
eERlbHRhKGxlZnRNYXJnaW5Cb3hEZWx0YSkKKyAgICAgICAgLCBtX3JpZ2h0TWFyZ2luQm94RGVs
dGEocmlnaHRNYXJnaW5Cb3hEZWx0YSkKKyAgICAgICAgLCBtX2xpbmVPdmVybGFwc1NoYXBlKGxp
bmVPdmVybGFwc1NoYXBlKQorICAgICAgICAsIG1fYm9yZGVyQm94TGluZVRvcChib3JkZXJCb3hM
aW5lVG9wKQorICAgICAgICAsIG1fbGluZUhlaWdodChsaW5lSGVpZ2h0KQorICAgIHsKKyAgICB9
CisKKyAgICBib29sIGlzRm9yTGluZShMYXlvdXRVbml0IGJvcmRlckJveExpbmVUb3AsIExheW91
dFVuaXQgbGluZUhlaWdodCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9i
b3JkZXJCb3hMaW5lVG9wID09IGJvcmRlckJveExpbmVUb3AgJiYgbV9saW5lSGVpZ2h0ID09IGxp
bmVIZWlnaHQ7CisgICAgfQorCisgICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV9pc1ZhbGlk
OyB9CisgICAgTGF5b3V0VW5pdCBsZWZ0TWFyZ2luQm94RGVsdGEoKSB7IEFTU0VSVChtX2lzVmFs
aWQpOyByZXR1cm4gbV9sZWZ0TWFyZ2luQm94RGVsdGE7IH0KKyAgICBMYXlvdXRVbml0IHJpZ2h0
TWFyZ2luQm94RGVsdGEoKSB7IEFTU0VSVChtX2lzVmFsaWQpOyByZXR1cm4gbV9yaWdodE1hcmdp
bkJveERlbHRhOyB9CisgICAgYm9vbCBsaW5lT3ZlcmxhcHNTaGFwZSgpIHsgQVNTRVJUKG1faXNW
YWxpZCk7IHJldHVybiBtX2xpbmVPdmVybGFwc1NoYXBlOyB9CisKK3ByaXZhdGU6CisgICAgYm9v
bCBtX2lzVmFsaWQ7CisgICAgTGF5b3V0VW5pdCBtX2xlZnRNYXJnaW5Cb3hEZWx0YTsKKyAgICBM
YXlvdXRVbml0IG1fcmlnaHRNYXJnaW5Cb3hEZWx0YTsKKyAgICBib29sIG1fbGluZU92ZXJsYXBz
U2hhcGU7CisgICAgTGF5b3V0VW5pdCBtX2JvcmRlckJveExpbmVUb3A7CisgICAgTGF5b3V0VW5p
dCBtX2xpbmVIZWlnaHQ7Cit9OworCiBjbGFzcyBTaGFwZU91dHNpZGVJbmZvIGZpbmFsIHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTaGFwZU91dHNpZGVJbmZv
KGNvbnN0IFJlbmRlckJveCYgcmVuZGVyZXIpCiAgICAgICAgIDogbV9yZW5kZXJlcihyZW5kZXJl
cikKLSAgICAgICAgLCBtX2xpbmVPdmVybGFwc1NoYXBlKGZhbHNlKQogICAgIHsKICAgICB9CiAK
ICAgICBzdGF0aWMgYm9vbCBpc0VuYWJsZWRGb3IoY29uc3QgUmVuZGVyQm94Jik7CiAKLSAgICBM
YXlvdXRVbml0IGxlZnRNYXJnaW5Cb3hEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdE1hcmdp
bkJveERlbHRhOyB9Ci0gICAgTGF5b3V0VW5pdCByaWdodE1hcmdpbkJveERlbHRhKCkgY29uc3Qg
eyByZXR1cm4gbV9yaWdodE1hcmdpbkJveERlbHRhOyB9Ci0gICAgYm9vbCBsaW5lT3ZlcmxhcHNT
aGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU92ZXJsYXBzU2hhcGU7IH0KLQotICAgIHZvaWQg
dXBkYXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cm
LCBjb25zdCBGbG9hdGluZ09iamVjdCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KTsKKyAgICBTaGFwZU91dHNpZGVEZWx0YXMgY29tcHV0ZURlbHRhc0ZvckNvbnRh
aW5pbmdCbG9ja0xpbmUoY29uc3QgUmVuZGVyQmxvY2tGbG93JiwgY29uc3QgRmxvYXRpbmdPYmpl
Y3QmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCk7CiAKICAgICB2
b2lkIHNldFJlZmVyZW5jZUJveExvZ2ljYWxTaXplKExheW91dFNpemUpOwogCkBAIC02OSwxMCAr
MTA1LDYgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgc2hhcGVMb2dpY2FsV2lkdGgoKSBjb25z
dCB7IHJldHVybiBjb21wdXRlZFNoYXBlKCkuc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3go
KS53aWR0aCgpOyB9CiAgICAgTGF5b3V0VW5pdCBzaGFwZUxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7
IHJldHVybiBjb21wdXRlZFNoYXBlKCkuc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKS5o
ZWlnaHQoKTsgfQogCi0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGluZVRvcCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmZXJlbmNlQm94TGluZVRvcCArIGxvZ2ljYWxUb3BPZmZzZXQoKTsgfQotICAgIExh
eW91dFVuaXQgbG9naWNhbExpbmVCb3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUJv
eExpbmVUb3AgKyBtX2xpbmVIZWlnaHQgKyBsb2dpY2FsVG9wT2Zmc2V0KCk7IH0KLSAgICBMYXlv
dXRVbml0IGxvZ2ljYWxMaW5lQm90dG9tKExheW91dFVuaXQgbGluZUhlaWdodCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWZlcmVuY2VCb3hMaW5lVG9wICsgbGluZUhlaWdodCArIGxvZ2ljYWxUb3BPZmZz
ZXQoKTsgfQotCiAgICAgdm9pZCBtYXJrU2hhcGVBc0RpcnR5KCkgeyBtX3NoYXBlID0gbnVsbHB0
cjsgfQogICAgIGJvb2wgaXNTaGFwZURpcnR5KCkgeyByZXR1cm4gIW1fc2hhcGU7IH0KIApAQCAt
MTEwLDEzICsxNDIsOCBAQCBwcml2YXRlOgogCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IG1fc2hhcGU7CiAgICAgTGF5b3V0U2l6ZSBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXpl
OwotICAgIExheW91dFVuaXQgbV9yZWZlcmVuY2VCb3hMaW5lVG9wOwotICAgIExheW91dFVuaXQg
bV9saW5lSGVpZ2h0OwogCi0gICAgTGF5b3V0VW5pdCBtX2xlZnRNYXJnaW5Cb3hEZWx0YTsKLSAg
ICBMYXlvdXRVbml0IG1fcmlnaHRNYXJnaW5Cb3hEZWx0YTsKLSAgICBMYXlvdXRVbml0IG1fYm9y
ZGVyQm94TGluZVRvcDsKLSAgICBib29sIG1fbGluZU92ZXJsYXBzU2hhcGU7CisgICAgU2hhcGVP
dXRzaWRlRGVsdGFzIG1fc2hhcGVPdXRzaWRlRGVsdGFzOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236454</attachid>
            <date>2014-08-12 11:01:00 -0700</date>
            <delta_ts>2014-08-12 13:12:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135781-20140812110049.patch</filename>
            <type>text/plain</type>
            <size>19365</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRmOGZjNGEwMDgxNjVm
MjEzNjBmMDc1YjVmYzU3YWI5YmExMzNiZC4uOTFmMGVhMjdiOGQ3YTkwYjI2NmE2ZTdmMDM1MDZj
NzRhMTA1MDQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTA4LTEyICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFNoYXBl
T3V0c2lkZUluZm8gc28gaXQgaXNuJ3QgbXV0YXRlZCBmb3IgZWFjaCBsaW5lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU3ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgcGVy
IGxpbmUgc3RhdGUgaW50byBhIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QuCisgICAgICAgIHVw
ZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUgaGFzIGJlZW4gcmVuYW1lZCB0bworICAg
ICAgICBjb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSwgYW5kIGl0IHJldHVybnMg
YW4gaW5zdGFuY2Ugb2YgdGhlCisgICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgZm9y
IHRoYXQgbGluZS4gVGhpcyBvYmplY3QgaXMgY2FjaGVkLCBidXQKKyAgICAgICAgbm9uZSBvZiB0
aGUgZnVuY3Rpb25hbGl0eSBvZiBTaGFwZU91dHNpZGVJbmZvIGlzIGRlcGVuZGFudCBvbiBhbnkg
bGluZQorICAgICAgICBzcGVjaWZpYyBkYXRhIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0
TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZO
ZWVkZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRvIHRha2UgYSBGbG9hdGluZ09iamVjdCByZWZl
cmVuY2UgYmVjYXVzZSB0aGUgRmxvYXRpbmdPYmplY3QgY2Fubm90IGJlIG51bGwuCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRp
bmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZCk6CisgICAgICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8Rmxv
YXRUeXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQpOiBQYXNzIEZsb2F0aW5nT2JqZWN0IHRvCisg
ICAgICAgICAgICB1cGRhdGVPZmZzZXRJZk5lZWRlZCBhcyBhIHJlZmVyZW5jZSwgc2luY2UgaXQg
Y2Fubm90IGJlIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JM
aW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0
SWZOZWVkZWQpOgorICAgICAgICAgICAgVXNlIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgdG8g
Y2FsY3VsYXRlIHRoZSBvZmZzZXQgYW5kIHRha2UgdGhlIEZsb2F0aW5nT2JqZWN0IGFzIGEKKyAg
ICAgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNl
dEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRl
T2Zmc2V0SWZOZWVkZWQpOgorICAgICAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpz
aGFwZUluZm9Gb3JGbG9hdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxl
V2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKTogVXBkYXRlIHRvIHVzZSBTaGFwZU91dHNpZGVEZWx0
YXMgb2JqZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVsdGFzRm9y
Q29udGFpbmluZ0Jsb2NrTGluZSk6IFJldHVybiBhIFNoYW9lT3V0c2lkZURlbHRhcyBvYmplY3QK
KyAgICAgICAgICAgIGluc3RlYWQgb2Ygc3RvcmluZyBsaW5lIHNwZWNpZmljIGRhdGEgaW4gaW5z
dGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6dXBk
YXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisKIDIwMTQtMDgtMTIgIEZhYmllbiBW
YWxsw6llICA8ZnZhbGxlZUBjb25uZWN0ZWQtbGFicy5jb20+CiAKICAgICAgICAgW0dTdHJlYW1l
cl0gcGxheWJhY2sgcmF0ZSBpcyByb3VuZGVkIHRvIGludGVnZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXggNWI1YmYwNmIzNWExNTYyOGMzMmNi
OTU1N2VjZGFkYWU5OTk2YmNhZS4uYjQwN2E3ZDk0N2Y2Y2RhNmYwZTdhN2ZiYzg0MWZkNjE2MGNj
MTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBvZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX29mZnNldDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIHVw
ZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCB1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYpID0gMDsK
IAogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgbV9yZW5kZXJlcjsKICAgICBMYXlvdXRVbml0
IG1fbGluZVRvcDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB0ZW1wbGF0
ZSA8RmxvYXRpbmdPYmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+Ci1jbGFzcyBDb21wdXRlRmxv
YXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXIgOiBwdWJsaWMgQ29tcHV0ZUZsb2F0T2Zmc2V0
QWRhcHRlcjxGbG9hdFR5cGVWYWx1ZT4geyAKK2NsYXNzIENvbXB1dGVGbG9hdE9mZnNldEZvckZs
b2F0TGF5b3V0QWRhcHRlciA6IHB1YmxpYyBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0
VHlwZVZhbHVlPiB7CiBwdWJsaWM6CiAgICAgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlv
dXRBZGFwdGVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcmVuZGVyZXIsIExheW91dFVuaXQgbGlu
ZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBMYXlvdXRVbml0IG9mZnNldCkKICAgICAgICAg
OiBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPihyZW5kZXJlciwgbGlu
ZVRvcCwgbGluZUJvdHRvbSwgb2Zmc2V0KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAg
ICBMYXlvdXRVbml0IGhlaWdodFJlbWFpbmluZygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBib29sIHVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0Kikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZU9mZnNldElmTmVlZGVkKGNv
bnN0IEZsb2F0aW5nT2JqZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiB9OwogCiB0ZW1wbGF0ZSA8Rmxv
YXRpbmdPYmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+CkBAIC0xNzcsNyArMTc3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkNvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVMYXlvdXRBZGFwdGVy
KCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlT2Zmc2V0SWZOZWVk
ZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGJv
b2wgdXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmKSBvdmVycmlkZSBm
aW5hbDsKIH07CiAKIGNsYXNzIEZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlciB7CkBA
IC00MjUsOSArNDI1LDkgQEAgTGF5b3V0VW5pdCBGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxSaWdo
dE9mZnNldChMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBMYXlvdXRVbmkKIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZs
b2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9h
dGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCitpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZz
ZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0
ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCkKIHsK
LSAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IG1fcmVuZGVyZXIubG9naWNhbFJpZ2h0Rm9y
RmxvYXQoZmxvYXRpbmdPYmplY3QpOworICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0ID0gbV9y
ZW5kZXJlci5sb2dpY2FsUmlnaHRGb3JGbG9hdCgmZmxvYXRpbmdPYmplY3QpOwogICAgIGlmIChs
b2dpY2FsUmlnaHQgPiBtX29mZnNldCkgewogICAgICAgICBtX29mZnNldCA9IGxvZ2ljYWxSaWdo
dDsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MzYsOSArNDM2LDkgQEAgaW5saW5lIGJvb2wg
Q29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpG
bG9hdExlZnQ+OjoKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zm
c2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBk
YXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQor
aW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0
aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRp
bmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0KQogewotICAgIExheW91dFVuaXQgbG9naWNhbExlZnQg
PSBtX3JlbmRlcmVyLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOworICAgIExh
eW91dFVuaXQgbG9naWNhbExlZnQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQoJmZs
b2F0aW5nT2JqZWN0KTsKICAgICBpZiAobG9naWNhbExlZnQgPCBtX29mZnNldCkgewogICAgICAg
ICBtX29mZnNldCA9IGxvZ2ljYWxMZWZ0OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2Mywz
NSArNDYzLDIyIEBAIGlubGluZSB2b2lkIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRU
eXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50CiAgICAgQVNTRVJUKGZsb2F0aW5n
T2JqZWN0LT5pc1BsYWNlZCgpKTsKICAgICBBU1NFUlQocmFuZ2VzSW50ZXJzZWN0KG1fcmVuZGVy
ZXIubG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9yZW5kZXJlci5sb2dpY2Fs
Qm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpLCBtX2xpbmVUb3AsIG1fbGluZUJvdHRvbSkp
OwogCi0gICAgYm9vbCBmbG9hdElzTmV3RXh0cmVtZSA9IHVwZGF0ZU9mZnNldElmTmVlZGVkKGZs
b2F0aW5nT2JqZWN0KTsKKyAgICBib29sIGZsb2F0SXNOZXdFeHRyZW1lID0gdXBkYXRlT2Zmc2V0
SWZOZWVkZWQoKmZsb2F0aW5nT2JqZWN0KTsKICAgICBpZiAoZmxvYXRJc05ld0V4dHJlbWUpCiAg
ICAgICAgIG1fb3V0ZXJtb3N0RmxvYXQgPSBmbG9hdGluZ09iamVjdDsKIH0KIAotI2lmIEVOQUJM
RShDU1NfU0hBUEVTKQotc3RhdGljIGlubGluZSBTaGFwZU91dHNpZGVJbmZvKiBzaGFwZUluZm9G
b3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QsIGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVu
aXQgbGluZUJvdHRvbSkKLXsKLSAgICBpZiAoZmxvYXRpbmdPYmplY3QpIHsKLSAgICAgICAgaWYg
KFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZSA9IGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJl
cigpLnNoYXBlT3V0c2lkZUluZm8oKSkgewotICAgICAgICAgICAgc2hhcGVPdXRzaWRlLT51cGRh
dGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKGNvbnRhaW5pbmdCbG9jaywgKmZsb2F0aW5n
T2JqZWN0LCBsaW5lVG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7Ci0gICAgICAgICAgICByZXR1
cm4gc2hhcGVPdXRzaWRlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0jZW5kaWYKLQogdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0
Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0ZU9m
ZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKK2lubGlu
ZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2Jq
ZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVj
dCYgZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtX3Jl
bmRlcmVyLmxvZ2ljYWxSaWdodEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICBMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodCA9IG1fcmVuZGVyZXIubG9naWNhbFJpZ2h0Rm9yRmxvYXQoJmZsb2F0
aW5nT2JqZWN0KTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBpZiAoU2hhcGVPdXRzaWRl
SW5mbyogc2hhcGVPdXRzaWRlID0gc2hhcGVJbmZvRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QsIG1f
cmVuZGVyZXIsIG1fbGluZVRvcCwgbV9saW5lQm90dG9tKSkgewotICAgICAgICBpZiAoIXNoYXBl
T3V0c2lkZS0+bGluZU92ZXJsYXBzU2hhcGUoKSkKKyAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyog
c2hhcGVPdXRzaWRlID0gZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZv
KCkpIHsKKyAgICAgICAgU2hhcGVPdXRzaWRlRGVsdGFzIHNoYXBlRGVsdGFzID0gc2hhcGVPdXRz
aWRlLT5jb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShtX3JlbmRlcmVyLCBmbG9h
dGluZ09iamVjdCwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20gLSBtX2xpbmVUb3ApOworICAgICAg
ICBpZiAoIXNoYXBlRGVsdGFzLmxpbmVPdmVybGFwc1NoYXBlKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgbG9naWNhbFJpZ2h0ICs9IHNoYXBlT3V0c2lkZS0+cmlnaHRN
YXJnaW5Cb3hEZWx0YSgpOworICAgICAgICBsb2dpY2FsUmlnaHQgKz0gc2hhcGVEZWx0YXMucmln
aHRNYXJnaW5Cb3hEZWx0YSgpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChsb2dpY2FsUmlnaHQg
PiBtX29mZnNldCkgewpAQCAtNTAzLDE1ICs0OTAsMTYgQEAgaW5saW5lIGJvb2wgQ29tcHV0ZUZs
b2F0T2Zmc2V0Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46
OnUKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yTGlu
ZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJ
Zk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCitpbmxpbmUgYm9v
bCBDb21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6
RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBm
bG9hdGluZ09iamVjdCkKIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gbV9yZW5kZXJl
ci5sb2dpY2FsTGVmdEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICBMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0ID0gbV9yZW5kZXJlci5sb2dpY2FsTGVmdEZvckZsb2F0KCZmbG9hdGluZ09iamVj
dCk7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNo
YXBlT3V0c2lkZSA9IHNoYXBlSW5mb0ZvckZsb2F0KGZsb2F0aW5nT2JqZWN0LCBtX3JlbmRlcmVy
LCBtX2xpbmVUb3AsIG1fbGluZUJvdHRvbSkpIHsKLSAgICAgICAgaWYgKCFzaGFwZU91dHNpZGUt
PmxpbmVPdmVybGFwc1NoYXBlKCkpCisgICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0
c2lkZSA9IGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7Cisg
ICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBzaGFwZURlbHRhcyA9IHNoYXBlT3V0c2lkZS0+Y29t
cHV0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUobV9yZW5kZXJlciwgZmxvYXRpbmdPYmpl
Y3QsIG1fbGluZVRvcCwgbV9saW5lQm90dG9tIC0gbV9saW5lVG9wKTsKKyAgICAgICAgaWYgKCFz
aGFwZURlbHRhcy5saW5lT3ZlcmxhcHNTaGFwZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIGxvZ2ljYWxMZWZ0ICs9IHNoYXBlT3V0c2lkZS0+bGVmdE1hcmdpbkJveERl
bHRhKCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IHNoYXBlRGVsdGFzLmxlZnRNYXJnaW5Cb3hE
ZWx0YSgpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChsb2dpY2FsTGVmdCA8IG1fb2Zmc2V0KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAppbmRleCA4Y2Nj
N2ZjOWZhM2EzMjMwZmVmZTNmZGViM2Y3MTY5ZDk4ZjMzMGJjLi5lNjJhZTk5OTY5ZGNiZTU0YmQy
YWNkOTk4YTdjZDMwMTBlZmJhNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lV2lkdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVXaWR0aC5jcHAKQEAgLTgzLDEwICs4MywxMCBAQCB2b2lkIExpbmVXaWR0aDo6c2hyaW5r
QXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9h
dAogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBTaGFwZU91
dHNpZGVJbmZvKiBzaGFwZU91dHNpZGVJbmZvID0gbmV3RmxvYXQtPnJlbmRlcmVyKCkuc2hhcGVP
dXRzaWRlSW5mbygpOwotICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKSB7CisgICAgU2hhcGVPdXRz
aWRlRGVsdGFzIHNoYXBlRGVsdGFzOworICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91
dHNpZGVJbmZvID0gbmV3RmxvYXQtPnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7CiAg
ICAgICAgIExheW91dFVuaXQgbGluZUhlaWdodCA9IG1fYmxvY2subGluZUhlaWdodChtX2lzRmly
c3RMaW5lLCBtX2Jsb2NrLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAgICAgICAg
c2hhcGVPdXRzaWRlSW5mby0+dXBkYXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShtX2Js
b2NrLCAqbmV3RmxvYXQsIG1fYmxvY2subG9naWNhbEhlaWdodCgpLCBsaW5lSGVpZ2h0KTsKKyAg
ICAgICAgc2hhcGVEZWx0YXMgPSBzaGFwZU91dHNpZGVJbmZvLT5jb21wdXRlRGVsdGFzRm9yQ29u
dGFpbmluZ0Jsb2NrTGluZShtX2Jsb2NrLCAqbmV3RmxvYXQsIG1fYmxvY2subG9naWNhbEhlaWdo
dCgpLCBsaW5lSGVpZ2h0KTsKICAgICB9CiAjZW5kaWYKIApAQCAtOTUsOSArOTUsOSBAQCB2b2lk
IExpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKEZsb2F0
aW5nT2JqZWN0KiBuZXdGbG9hdAogICAgICAgICBpZiAoc2hvdWxkSW5kZW50VGV4dCgpICYmIG1f
YmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBuZXdM
ZWZ0ICs9IGZsb29yVG9JbnQobV9ibG9jay50ZXh0SW5kZW50T2Zmc2V0KCkpOwogI2lmIEVOQUJM
RShDU1NfU0hBUEVTKQotICAgICAgICBpZiAoc2hhcGVPdXRzaWRlSW5mbykgewotICAgICAgICAg
ICAgaWYgKHNoYXBlT3V0c2lkZUluZm8tPmxpbmVPdmVybGFwc1NoYXBlKCkpCi0gICAgICAgICAg
ICAgICAgbmV3TGVmdCArPSBzaGFwZU91dHNpZGVJbmZvLT5yaWdodE1hcmdpbkJveERlbHRhKCk7
CisgICAgICAgIGlmIChzaGFwZURlbHRhcy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGlmIChz
aGFwZURlbHRhcy5saW5lT3ZlcmxhcHNTaGFwZSgpKQorICAgICAgICAgICAgICAgIG5ld0xlZnQg
Kz0gc2hhcGVEZWx0YXMucmlnaHRNYXJnaW5Cb3hEZWx0YSgpOwogICAgICAgICAgICAgZWxzZSAv
LyBJZiB0aGUgbGluZSBkb2Vzbid0IG92ZXJsYXAgdGhlIHNoYXBlLCB0aGVuIHdlIG5lZWQgdG8g
YWN0IGFzIGlmIHRoaXMgZmxvYXQgZGlkbid0IGV4aXN0LgogICAgICAgICAgICAgICAgIG5ld0xl
ZnQgPSBtX2xlZnQ7CiAgICAgICAgIH0KQEAgLTEwOCw5ICsxMDgsOSBAQCB2b2lkIExpbmVXaWR0
aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKEZsb2F0aW5nT2JqZWN0
KiBuZXdGbG9hdAogICAgICAgICBpZiAoc2hvdWxkSW5kZW50VGV4dCgpICYmICFtX2Jsb2NrLnN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgbmV3UmlnaHQgLT0g
Zmxvb3JUb0ludChtX2Jsb2NrLnRleHRJbmRlbnRPZmZzZXQoKSk7CiAjaWYgRU5BQkxFKENTU19T
SEFQRVMpCi0gICAgICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKSB7Ci0gICAgICAgICAgICBpZiAo
c2hhcGVPdXRzaWRlSW5mby0+bGluZU92ZXJsYXBzU2hhcGUoKSkKLSAgICAgICAgICAgICAgICBu
ZXdSaWdodCArPSBzaGFwZU91dHNpZGVJbmZvLT5sZWZ0TWFyZ2luQm94RGVsdGEoKTsKKyAgICAg
ICAgaWYgKHNoYXBlRGVsdGFzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgaWYgKHNoYXBlRGVs
dGFzLmxpbmVPdmVybGFwc1NoYXBlKCkpCisgICAgICAgICAgICAgICAgbmV3UmlnaHQgKz0gc2hh
cGVEZWx0YXMubGVmdE1hcmdpbkJveERlbHRhKCk7CiAgICAgICAgICAgICBlbHNlIC8vIElmIHRo
ZSBsaW5lIGRvZXNuJ3Qgb3ZlcmxhcCB0aGUgc2hhcGUsIHRoZW4gd2UgbmVlZCB0byBhY3QgYXMg
aWYgdGhpcyBmbG9hdCBkaWRuJ3QgZXhpc3QuCiAgICAgICAgICAgICAgICAgbmV3UmlnaHQgPSBt
X3JpZ2h0OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRleCA5NDVmN2VjMzNmMDdlNTViMjEwODExZmRh
ZDI1NGNhNTRkYTM5ZTc3Li5mNWQ1ZGFhNTFhOGNlZTdlOWNhY2U0NDQ2YTQ1Njc2M2YwNTlmNTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAKQEAgLTMwMyw0MiArMzAzLDQwIEBAIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6
aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJveCYgYm94KQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBTaGFwZU91dHNpZGVJbmZvOjp1cGRhdGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tM
aW5lKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrLCBjb25zdCBGbG9hdGlu
Z09iamVjdCYgZmxvYXRpbmdPYmplY3QsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KQorU2hhcGVPdXRzaWRlRGVsdGFzIFNoYXBlT3V0c2lkZUluZm86OmNvbXB1dGVE
ZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFp
bmluZ0Jsb2NrLCBjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QsIExheW91dFVu
aXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQogewogICAgIEFTU0VSVChsaW5lSGVp
Z2h0ID49IDApOwotCiAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3hUb3AgPSBjb250YWluaW5nQmxv
Y2subG9naWNhbFRvcEZvckZsb2F0KCZmbG9hdGluZ09iamVjdCkgKyBjb250YWluaW5nQmxvY2su
bWFyZ2luQmVmb3JlRm9yQ2hpbGQobV9yZW5kZXJlcik7CiAgICAgTGF5b3V0VW5pdCBib3JkZXJC
b3hMaW5lVG9wID0gbGluZVRvcCAtIGJvcmRlckJveFRvcDsKIAotICAgIGlmIChpc1NoYXBlRGly
dHkoKSB8fCBtX2JvcmRlckJveExpbmVUb3AgIT0gYm9yZGVyQm94TGluZVRvcCB8fCBtX2xpbmVI
ZWlnaHQgIT0gbGluZUhlaWdodCkgewotICAgICAgICBtX2JvcmRlckJveExpbmVUb3AgPSBib3Jk
ZXJCb3hMaW5lVG9wOwotICAgICAgICBtX3JlZmVyZW5jZUJveExpbmVUb3AgPSBib3JkZXJCb3hM
aW5lVG9wIC0gbG9naWNhbFRvcE9mZnNldCgpOwotICAgICAgICBtX2xpbmVIZWlnaHQgPSBsaW5l
SGVpZ2h0OwotCisgICAgaWYgKGlzU2hhcGVEaXJ0eSgpIHx8ICFtX3NoYXBlT3V0c2lkZURlbHRh
cy5pc0ZvckxpbmUoYm9yZGVyQm94TGluZVRvcCwgbGluZUhlaWdodCkpIHsKKyAgICAgICAgTGF5
b3V0VW5pdCByZWZlcmVuY2VCb3hMaW5lVG9wID0gYm9yZGVyQm94TGluZVRvcCAtIGxvZ2ljYWxU
b3BPZmZzZXQoKTsKICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdE1hcmdpbkJveFdpZHRoID0gY29u
dGFpbmluZ0Jsb2NrLmxvZ2ljYWxXaWR0aEZvckZsb2F0KCZmbG9hdGluZ09iamVjdCk7CiAKLSAg
ICAgICAgaWYgKGNvbXB1dGVkU2hhcGUoKS5saW5lT3ZlcmxhcHNTaGFwZU1hcmdpbkJvdW5kcyht
X3JlZmVyZW5jZUJveExpbmVUb3AsIG1fbGluZUhlaWdodCkpIHsKKyAgICAgICAgaWYgKGNvbXB1
dGVkU2hhcGUoKS5saW5lT3ZlcmxhcHNTaGFwZU1hcmdpbkJvdW5kcyhyZWZlcmVuY2VCb3hMaW5l
VG9wLCBsaW5lSGVpZ2h0KSkgewogICAgICAgICAgICAgTGluZVNlZ21lbnQgc2VnbWVudCA9IGNv
bXB1dGVkU2hhcGUoKS5nZXRFeGNsdWRlZEludGVydmFsKChib3JkZXJCb3hMaW5lVG9wIC0gbG9n
aWNhbFRvcE9mZnNldCgpKSwgc3RkOjptaW4obGluZUhlaWdodCwgc2hhcGVMb2dpY2FsQm90dG9t
KCkgLSBib3JkZXJCb3hMaW5lVG9wKSk7CiAgICAgICAgICAgICBpZiAoc2VnbWVudC5pc1ZhbGlk
KSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE1hcmdpbiA9IGNvbnRh
aW5pbmdCbG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbnRhaW5pbmdC
bG9jay5tYXJnaW5TdGFydEZvckNoaWxkKG1fcmVuZGVyZXIpIDogY29udGFpbmluZ0Jsb2NrLm1h
cmdpbkVuZEZvckNoaWxkKG1fcmVuZGVyZXIpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQg
cmF3TGVmdE1hcmdpbkJveERlbHRhID0gc2VnbWVudC5sb2dpY2FsTGVmdCArIGxvZ2ljYWxMZWZ0
T2Zmc2V0KCkgKyBsb2dpY2FsTGVmdE1hcmdpbjsKLSAgICAgICAgICAgICAgICBtX2xlZnRNYXJn
aW5Cb3hEZWx0YSA9IGNsYW1wVG88TGF5b3V0VW5pdD4ocmF3TGVmdE1hcmdpbkJveERlbHRhLCBM
YXlvdXRVbml0KCksIGZsb2F0TWFyZ2luQm94V2lkdGgpOworICAgICAgICAgICAgICAgIExheW91
dFVuaXQgbGVmdE1hcmdpbkJveERlbHRhID0gY2xhbXBUbzxMYXlvdXRVbml0PihyYXdMZWZ0TWFy
Z2luQm94RGVsdGEsIExheW91dFVuaXQoKSwgZmxvYXRNYXJnaW5Cb3hXaWR0aCk7CiAKICAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodE1hcmdpbiA9IGNvbnRhaW5pbmdCbG9j
ay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbnRhaW5pbmdCbG9jay5tYXJn
aW5FbmRGb3JDaGlsZChtX3JlbmRlcmVyKSA6IGNvbnRhaW5pbmdCbG9jay5tYXJnaW5TdGFydEZv
ckNoaWxkKG1fcmVuZGVyZXIpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgcmF3UmlnaHRN
YXJnaW5Cb3hEZWx0YSA9IHNlZ21lbnQubG9naWNhbFJpZ2h0ICsgbG9naWNhbExlZnRPZmZzZXQo
KSAtIGNvbnRhaW5pbmdCbG9jay5sb2dpY2FsV2lkdGhGb3JDaGlsZChtX3JlbmRlcmVyKSAtIGxv
Z2ljYWxSaWdodE1hcmdpbjsKLSAgICAgICAgICAgICAgICBtX3JpZ2h0TWFyZ2luQm94RGVsdGEg
PSBjbGFtcFRvPExheW91dFVuaXQ+KHJhd1JpZ2h0TWFyZ2luQm94RGVsdGEsIC1mbG9hdE1hcmdp
bkJveFdpZHRoLCBMYXlvdXRVbml0KCkpOwotICAgICAgICAgICAgICAgIG1fbGluZU92ZXJsYXBz
U2hhcGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IHJpZ2h0TWFyZ2luQm94RGVsdGEgPSBjbGFtcFRvPExheW91dFVuaXQ+KHJhd1Jp
Z2h0TWFyZ2luQm94RGVsdGEsIC1mbG9hdE1hcmdpbkJveFdpZHRoLCBMYXlvdXRVbml0KCkpOwor
CisgICAgICAgICAgICAgICAgbV9zaGFwZU91dHNpZGVEZWx0YXMgPSBTaGFwZU91dHNpZGVEZWx0
YXMobGVmdE1hcmdpbkJveERlbHRhLCByaWdodE1hcmdpbkJveERlbHRhLCB0cnVlLCBib3JkZXJC
b3hMaW5lVG9wLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zaGFwZU91
dHNpZGVEZWx0YXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBMaW5l
cyB0aGF0IGRvIG5vdCBvdmVybGFwIHRoZSBzaGFwZSBzaG91bGQgYWN0IGFzIGlmIHRoZSBmbG9h
dAogICAgICAgICAvLyB3YXNuJ3QgdGhlcmUgZm9yIGxheW91dCBwdXJwb3Nlcy4gU28gd2Ugc2V0
IHRoZSBkZWx0YXMgdG8gcmVtb3ZlIHRoZQogICAgICAgICAvLyBlbnRpcmUgd2lkdGggb2YgdGhl
IGZsb2F0Ci0gICAgICAgIG1fbGVmdE1hcmdpbkJveERlbHRhID0gZmxvYXRNYXJnaW5Cb3hXaWR0
aDsKLSAgICAgICAgbV9yaWdodE1hcmdpbkJveERlbHRhID0gLWZsb2F0TWFyZ2luQm94V2lkdGg7
Ci0gICAgICAgIG1fbGluZU92ZXJsYXBzU2hhcGUgPSBmYWxzZTsKKyAgICAgICAgbV9zaGFwZU91
dHNpZGVEZWx0YXMgPSBTaGFwZU91dHNpZGVEZWx0YXMoZmxvYXRNYXJnaW5Cb3hXaWR0aCwgLWZs
b2F0TWFyZ2luQm94V2lkdGgsIGZhbHNlLCBib3JkZXJCb3hMaW5lVG9wLCBsaW5lSGVpZ2h0KTsK
KyAgICAgICAgcmV0dXJuIG1fc2hhcGVPdXRzaWRlRGVsdGFzOwogICAgIH0KKworICAgIHJldHVy
biBtX3NoYXBlT3V0c2lkZURlbHRhczsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaAppbmRleCA3MWJlYjA2NDQxNTg0NjNk
ZTZhODlmOGQ1N2IxNWE1ZjNhMDY4MWI3Li43OWNlMzA5OGJhNmJjN2QyYjM5NDMzMTk1MTcyNGE1
OTdkNWQ4NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlT3V0c2lkZUluZm8uaApAQCAtNDMsMjIgKzQzLDU5IEBAIGNsYXNzIFJlbmRlckJveDsKIGNs
YXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBGbG9hdGluZ09iamVjdDsKIAorY2xhc3MgU2hhcGVPdXRz
aWRlRGVsdGFzIGZpbmFsIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBTaGFwZU91dHNpZGVEZWx0YXMoKQorICAgICAgICA6IG1fbGVmdE1hcmdpbkJveERlbHRh
KDApCisgICAgICAgICwgbV9yaWdodE1hcmdpbkJveERlbHRhKDApCisgICAgICAgICwgbV9ib3Jk
ZXJCb3hMaW5lVG9wKDApCisgICAgICAgICwgbV9saW5lSGVpZ2h0KDApCisgICAgICAgICwgbV9s
aW5lT3ZlcmxhcHNTaGFwZShmYWxzZSkKKyAgICAgICAgLCBtX2lzVmFsaWQoZmFsc2UpCisgICAg
eworICAgIH0KKworICAgIFNoYXBlT3V0c2lkZURlbHRhcyhMYXlvdXRVbml0IGxlZnRNYXJnaW5C
b3hEZWx0YSwgTGF5b3V0VW5pdCByaWdodE1hcmdpbkJveERlbHRhLCBib29sIGxpbmVPdmVybGFw
c1NoYXBlLCBMYXlvdXRVbml0IGJvcmRlckJveExpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdo
dCkKKyAgICAgICAgOiBtX2xlZnRNYXJnaW5Cb3hEZWx0YShsZWZ0TWFyZ2luQm94RGVsdGEpCisg
ICAgICAgICwgbV9yaWdodE1hcmdpbkJveERlbHRhKHJpZ2h0TWFyZ2luQm94RGVsdGEpCisgICAg
ICAgICwgbV9ib3JkZXJCb3hMaW5lVG9wKGJvcmRlckJveExpbmVUb3ApCisgICAgICAgICwgbV9s
aW5lSGVpZ2h0KGxpbmVIZWlnaHQpCisgICAgICAgICwgbV9saW5lT3ZlcmxhcHNTaGFwZShsaW5l
T3ZlcmxhcHNTaGFwZSkKKyAgICAgICAgLCBtX2lzVmFsaWQodHJ1ZSkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBpc0ZvckxpbmUoTGF5b3V0VW5pdCBib3JkZXJCb3hMaW5lVG9wLCBMYXlvdXRV
bml0IGxpbmVIZWlnaHQpCisgICAgeworICAgICAgICByZXR1cm4gbV9pc1ZhbGlkICYmIG1fYm9y
ZGVyQm94TGluZVRvcCA9PSBib3JkZXJCb3hMaW5lVG9wICYmIG1fbGluZUhlaWdodCA9PSBsaW5l
SGVpZ2h0OworICAgIH0KKworICAgIGJvb2wgaXNWYWxpZCgpIHsgcmV0dXJuIG1faXNWYWxpZDsg
fQorICAgIExheW91dFVuaXQgbGVmdE1hcmdpbkJveERlbHRhKCkgeyBBU1NFUlQobV9pc1ZhbGlk
KTsgcmV0dXJuIG1fbGVmdE1hcmdpbkJveERlbHRhOyB9CisgICAgTGF5b3V0VW5pdCByaWdodE1h
cmdpbkJveERlbHRhKCkgeyBBU1NFUlQobV9pc1ZhbGlkKTsgcmV0dXJuIG1fcmlnaHRNYXJnaW5C
b3hEZWx0YTsgfQorICAgIGJvb2wgbGluZU92ZXJsYXBzU2hhcGUoKSB7IEFTU0VSVChtX2lzVmFs
aWQpOyByZXR1cm4gbV9saW5lT3ZlcmxhcHNTaGFwZTsgfQorCitwcml2YXRlOgorICAgIExheW91
dFVuaXQgbV9sZWZ0TWFyZ2luQm94RGVsdGE7CisgICAgTGF5b3V0VW5pdCBtX3JpZ2h0TWFyZ2lu
Qm94RGVsdGE7CisgICAgTGF5b3V0VW5pdCBtX2JvcmRlckJveExpbmVUb3A7CisgICAgTGF5b3V0
VW5pdCBtX2xpbmVIZWlnaHQ7CisgICAgYm9vbCBtX2xpbmVPdmVybGFwc1NoYXBlOworICAgIGJv
b2wgbV9pc1ZhbGlkOworfTsKKwogY2xhc3MgU2hhcGVPdXRzaWRlSW5mbyBmaW5hbCB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU2hhcGVPdXRzaWRlSW5mbyhj
b25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyKQogICAgICAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIp
Ci0gICAgICAgICwgbV9saW5lT3ZlcmxhcHNTaGFwZShmYWxzZSkKICAgICB7CiAgICAgfQogCiAg
ICAgc3RhdGljIGJvb2wgaXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJveCYpOwogCi0gICAgTGF5
b3V0VW5pdCBsZWZ0TWFyZ2luQm94RGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2xlZnRNYXJnaW5C
b3hEZWx0YTsgfQotICAgIExheW91dFVuaXQgcmlnaHRNYXJnaW5Cb3hEZWx0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YTsgfQotICAgIGJvb2wgbGluZU92ZXJsYXBzU2hh
cGUoKSBjb25zdCB7IHJldHVybiBtX2xpbmVPdmVybGFwc1NoYXBlOyB9Ci0KLSAgICB2b2lkIHVw
ZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUoY29uc3QgUmVuZGVyQmxvY2tGbG93Jiwg
Y29uc3QgRmxvYXRpbmdPYmplY3QmLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGlu
ZUhlaWdodCk7CisgICAgU2hhcGVPdXRzaWRlRGVsdGFzIGNvbXB1dGVEZWx0YXNGb3JDb250YWlu
aW5nQmxvY2tMaW5lKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IEZsb2F0aW5nT2JqZWN0
JiwgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpOwogCiAgICAgdm9p
ZCBzZXRSZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZShMYXlvdXRTaXplKTsKIApAQCAtNjksMTAgKzEw
Niw2IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IHNoYXBlTG9naWNhbFdpZHRoKCkgY29uc3Qg
eyByZXR1cm4gY29tcHV0ZWRTaGFwZSgpLnNoYXBlTWFyZ2luTG9naWNhbEJvdW5kaW5nQm94KCku
d2lkdGgoKTsgfQogICAgIExheW91dFVuaXQgc2hhcGVMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gY29tcHV0ZWRTaGFwZSgpLnNoYXBlTWFyZ2luTG9naWNhbEJvdW5kaW5nQm94KCkuaGVp
Z2h0KCk7IH0KIAotICAgIExheW91dFVuaXQgbG9naWNhbExpbmVUb3AoKSBjb25zdCB7IHJldHVy
biBtX3JlZmVyZW5jZUJveExpbmVUb3AgKyBsb2dpY2FsVG9wT2Zmc2V0KCk7IH0KLSAgICBMYXlv
dXRVbml0IGxvZ2ljYWxMaW5lQm90dG9tKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3hM
aW5lVG9wICsgbV9saW5lSGVpZ2h0ICsgbG9naWNhbFRvcE9mZnNldCgpOyB9Ci0gICAgTGF5b3V0
VW5pdCBsb2dpY2FsTGluZUJvdHRvbShMYXlvdXRVbml0IGxpbmVIZWlnaHQpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmZXJlbmNlQm94TGluZVRvcCArIGxpbmVIZWlnaHQgKyBsb2dpY2FsVG9wT2Zmc2V0
KCk7IH0KLQogICAgIHZvaWQgbWFya1NoYXBlQXNEaXJ0eSgpIHsgbV9zaGFwZSA9IG51bGxwdHI7
IH0KICAgICBib29sIGlzU2hhcGVEaXJ0eSgpIHsgcmV0dXJuICFtX3NoYXBlOyB9CiAKQEAgLTEx
MCwxMyArMTQzLDggQEAgcHJpdmF0ZToKIAogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFNo
YXBlPiBtX3NoYXBlOwogICAgIExheW91dFNpemUgbV9yZWZlcmVuY2VCb3hMb2dpY2FsU2l6ZTsK
LSAgICBMYXlvdXRVbml0IG1fcmVmZXJlbmNlQm94TGluZVRvcDsKLSAgICBMYXlvdXRVbml0IG1f
bGluZUhlaWdodDsKIAotICAgIExheW91dFVuaXQgbV9sZWZ0TWFyZ2luQm94RGVsdGE7Ci0gICAg
TGF5b3V0VW5pdCBtX3JpZ2h0TWFyZ2luQm94RGVsdGE7Ci0gICAgTGF5b3V0VW5pdCBtX2JvcmRl
ckJveExpbmVUb3A7Ci0gICAgYm9vbCBtX2xpbmVPdmVybGFwc1NoYXBlOworICAgIFNoYXBlT3V0
c2lkZURlbHRhcyBtX3NoYXBlT3V0c2lkZURlbHRhczsKIH07CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236462</attachid>
            <date>2014-08-12 13:12:41 -0700</date>
            <delta_ts>2014-08-13 11:37:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135781-20140812131230.patch</filename>
            <type>text/plain</type>
            <size>19327</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyNDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjRmOGZjNGEwMDgxNjVm
MjEzNjBmMDc1YjVmYzU3YWI5YmExMzNiZC4uOTFmMGVhMjdiOGQ3YTkwYjI2NmE2ZTdmMDM1MDZj
NzRhMTA1MDQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTA4LTEyICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFNoYXBl
T3V0c2lkZUluZm8gc28gaXQgaXNuJ3QgbXV0YXRlZCBmb3IgZWFjaCBsaW5lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU3ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgcGVy
IGxpbmUgc3RhdGUgaW50byBhIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QuCisgICAgICAgIHVw
ZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUgaGFzIGJlZW4gcmVuYW1lZCB0bworICAg
ICAgICBjb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSwgYW5kIGl0IHJldHVybnMg
YW4gaW5zdGFuY2Ugb2YgdGhlCisgICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgZm9y
IHRoYXQgbGluZS4gVGhpcyBvYmplY3QgaXMgY2FjaGVkLCBidXQKKyAgICAgICAgbm9uZSBvZiB0
aGUgZnVuY3Rpb25hbGl0eSBvZiBTaGFwZU91dHNpZGVJbmZvIGlzIGRlcGVuZGFudCBvbiBhbnkg
bGluZQorICAgICAgICBzcGVjaWZpYyBkYXRhIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0
TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZO
ZWVkZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRvIHRha2UgYSBGbG9hdGluZ09iamVjdCByZWZl
cmVuY2UgYmVjYXVzZSB0aGUgRmxvYXRpbmdPYmplY3QgY2Fubm90IGJlIG51bGwuCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRp
bmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZCk6CisgICAgICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8Rmxv
YXRUeXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQpOiBQYXNzIEZsb2F0aW5nT2JqZWN0IHRvCisg
ICAgICAgICAgICB1cGRhdGVPZmZzZXRJZk5lZWRlZCBhcyBhIHJlZmVyZW5jZSwgc2luY2UgaXQg
Y2Fubm90IGJlIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JM
aW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0
SWZOZWVkZWQpOgorICAgICAgICAgICAgVXNlIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgdG8g
Y2FsY3VsYXRlIHRoZSBvZmZzZXQgYW5kIHRha2UgdGhlIEZsb2F0aW5nT2JqZWN0IGFzIGEKKyAg
ICAgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNl
dEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRl
T2Zmc2V0SWZOZWVkZWQpOgorICAgICAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpz
aGFwZUluZm9Gb3JGbG9hdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxl
V2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKTogVXBkYXRlIHRvIHVzZSBTaGFwZU91dHNpZGVEZWx0
YXMgb2JqZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVsdGFzRm9y
Q29udGFpbmluZ0Jsb2NrTGluZSk6IFJldHVybiBhIFNoYW9lT3V0c2lkZURlbHRhcyBvYmplY3QK
KyAgICAgICAgICAgIGluc3RlYWQgb2Ygc3RvcmluZyBsaW5lIHNwZWNpZmljIGRhdGEgaW4gaW5z
dGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6dXBk
YXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisKIDIwMTQtMDgtMTIgIEZhYmllbiBW
YWxsw6llICA8ZnZhbGxlZUBjb25uZWN0ZWQtbGFicy5jb20+CiAKICAgICAgICAgW0dTdHJlYW1l
cl0gcGxheWJhY2sgcmF0ZSBpcyByb3VuZGVkIHRvIGludGVnZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAKaW5kZXggNWI1YmYwNmIzNWExNTYyOGMzMmNi
OTU1N2VjZGFkYWU5OTk2YmNhZS4uYjQwN2E3ZDk0N2Y2Y2RhNmYwZTdhN2ZiYzg0MWZkNjE2MGNj
MTdmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5jcHAK
QEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBvZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX29mZnNldDsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIHVw
ZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KikgPSAwOworICAgIHZpcnR1
YWwgYm9vbCB1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYpID0gMDsK
IAogICAgIGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgbV9yZW5kZXJlcjsKICAgICBMYXlvdXRVbml0
IG1fbGluZVRvcDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB0ZW1wbGF0
ZSA8RmxvYXRpbmdPYmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+Ci1jbGFzcyBDb21wdXRlRmxv
YXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXIgOiBwdWJsaWMgQ29tcHV0ZUZsb2F0T2Zmc2V0
QWRhcHRlcjxGbG9hdFR5cGVWYWx1ZT4geyAKK2NsYXNzIENvbXB1dGVGbG9hdE9mZnNldEZvckZs
b2F0TGF5b3V0QWRhcHRlciA6IHB1YmxpYyBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0
VHlwZVZhbHVlPiB7CiBwdWJsaWM6CiAgICAgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlv
dXRBZGFwdGVyKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgcmVuZGVyZXIsIExheW91dFVuaXQgbGlu
ZVRvcCwgTGF5b3V0VW5pdCBsaW5lQm90dG9tLCBMYXlvdXRVbml0IG9mZnNldCkKICAgICAgICAg
OiBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVlPihyZW5kZXJlciwgbGlu
ZVRvcCwgbGluZUJvdHRvbSwgb2Zmc2V0KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAg
ICBMYXlvdXRVbml0IGhlaWdodFJlbWFpbmluZygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBib29sIHVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0Kikg
b3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBib29sIHVwZGF0ZU9mZnNldElmTmVlZGVkKGNv
bnN0IEZsb2F0aW5nT2JqZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiB9OwogCiB0ZW1wbGF0ZSA8Rmxv
YXRpbmdPYmplY3Q6OlR5cGUgRmxvYXRUeXBlVmFsdWU+CkBAIC0xNzcsNyArMTc3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgfkNvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVMYXlvdXRBZGFwdGVy
KCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlT2Zmc2V0SWZOZWVk
ZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIGJv
b2wgdXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmKSBvdmVycmlkZSBm
aW5hbDsKIH07CiAKIGNsYXNzIEZpbmROZXh0RmxvYXRMb2dpY2FsQm90dG9tQWRhcHRlciB7CkBA
IC00MjUsOSArNDI1LDkgQEAgTGF5b3V0VW5pdCBGbG9hdGluZ09iamVjdHM6OmxvZ2ljYWxSaWdo
dE9mZnNldChMYXlvdXRVbml0IGZpeGVkT2Zmc2V0LCBMYXlvdXRVbmkKIH0KIAogdGVtcGxhdGU8
PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZs
b2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9h
dGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCitpbmxpbmUgYm9vbCBDb21wdXRlRmxvYXRPZmZz
ZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0
ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBmbG9hdGluZ09iamVjdCkKIHsK
LSAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IG1fcmVuZGVyZXIubG9naWNhbFJpZ2h0Rm9y
RmxvYXQoZmxvYXRpbmdPYmplY3QpOworICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0ID0gbV9y
ZW5kZXJlci5sb2dpY2FsUmlnaHRGb3JGbG9hdCgmZmxvYXRpbmdPYmplY3QpOwogICAgIGlmIChs
b2dpY2FsUmlnaHQgPiBtX29mZnNldCkgewogICAgICAgICBtX29mZnNldCA9IGxvZ2ljYWxSaWdo
dDsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00MzYsOSArNDM2LDkgQEAgaW5saW5lIGJvb2wg
Q29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpG
bG9hdExlZnQ+OjoKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zm
c2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBk
YXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQor
aW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxvYXRMYXlvdXRBZGFwdGVyPEZsb2F0
aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRp
bmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0KQogewotICAgIExheW91dFVuaXQgbG9naWNhbExlZnQg
PSBtX3JlbmRlcmVyLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpOworICAgIExh
eW91dFVuaXQgbG9naWNhbExlZnQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxMZWZ0Rm9yRmxvYXQoJmZs
b2F0aW5nT2JqZWN0KTsKICAgICBpZiAobG9naWNhbExlZnQgPCBtX29mZnNldCkgewogICAgICAg
ICBtX29mZnNldCA9IGxvZ2ljYWxMZWZ0OwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQ2Mywz
NSArNDYzLDIyIEBAIGlubGluZSB2b2lkIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8RmxvYXRU
eXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQoY29uc3QgSW50CiAgICAgQVNTRVJUKGZsb2F0aW5n
T2JqZWN0LT5pc1BsYWNlZCgpKTsKICAgICBBU1NFUlQocmFuZ2VzSW50ZXJzZWN0KG1fcmVuZGVy
ZXIubG9naWNhbFRvcEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9yZW5kZXJlci5sb2dpY2Fs
Qm90dG9tRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QpLCBtX2xpbmVUb3AsIG1fbGluZUJvdHRvbSkp
OwogCi0gICAgYm9vbCBmbG9hdElzTmV3RXh0cmVtZSA9IHVwZGF0ZU9mZnNldElmTmVlZGVkKGZs
b2F0aW5nT2JqZWN0KTsKKyAgICBib29sIGZsb2F0SXNOZXdFeHRyZW1lID0gdXBkYXRlT2Zmc2V0
SWZOZWVkZWQoKmZsb2F0aW5nT2JqZWN0KTsKICAgICBpZiAoZmxvYXRJc05ld0V4dHJlbWUpCiAg
ICAgICAgIG1fb3V0ZXJtb3N0RmxvYXQgPSBmbG9hdGluZ09iamVjdDsKIH0KIAotI2lmIEVOQUJM
RShDU1NfU0hBUEVTKQotc3RhdGljIGlubGluZSBTaGFwZU91dHNpZGVJbmZvKiBzaGFwZUluZm9G
b3JGbG9hdChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QsIGNvbnN0IFJlbmRl
ckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrLCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVu
aXQgbGluZUJvdHRvbSkKLXsKLSAgICBpZiAoZmxvYXRpbmdPYmplY3QpIHsKLSAgICAgICAgaWYg
KFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0c2lkZSA9IGZsb2F0aW5nT2JqZWN0LT5yZW5kZXJl
cigpLnNoYXBlT3V0c2lkZUluZm8oKSkgewotICAgICAgICAgICAgc2hhcGVPdXRzaWRlLT51cGRh
dGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKGNvbnRhaW5pbmdCbG9jaywgKmZsb2F0aW5n
T2JqZWN0LCBsaW5lVG9wLCBsaW5lQm90dG9tIC0gbGluZVRvcCk7Ci0gICAgICAgICAgICByZXR1
cm4gc2hhcGVPdXRzaWRlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0jZW5kaWYKLQogdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0
Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46OnVwZGF0ZU9m
ZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKK2lubGlu
ZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2Jq
ZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVj
dCYgZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtX3Jl
bmRlcmVyLmxvZ2ljYWxSaWdodEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICBMYXlvdXRV
bml0IGxvZ2ljYWxSaWdodCA9IG1fcmVuZGVyZXIubG9naWNhbFJpZ2h0Rm9yRmxvYXQoJmZsb2F0
aW5nT2JqZWN0KTsKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBpZiAoU2hhcGVPdXRzaWRl
SW5mbyogc2hhcGVPdXRzaWRlID0gc2hhcGVJbmZvRm9yRmxvYXQoZmxvYXRpbmdPYmplY3QsIG1f
cmVuZGVyZXIsIG1fbGluZVRvcCwgbV9saW5lQm90dG9tKSkgewotICAgICAgICBpZiAoIXNoYXBl
T3V0c2lkZS0+bGluZU92ZXJsYXBzU2hhcGUoKSkKKyAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyog
c2hhcGVPdXRzaWRlID0gZmxvYXRpbmdPYmplY3QucmVuZGVyZXIoKS5zaGFwZU91dHNpZGVJbmZv
KCkpIHsKKyAgICAgICAgU2hhcGVPdXRzaWRlRGVsdGFzIHNoYXBlRGVsdGFzID0gc2hhcGVPdXRz
aWRlLT5jb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShtX3JlbmRlcmVyLCBmbG9h
dGluZ09iamVjdCwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20gLSBtX2xpbmVUb3ApOworICAgICAg
ICBpZiAoIXNoYXBlRGVsdGFzLmxpbmVPdmVybGFwc1NoYXBlKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgbG9naWNhbFJpZ2h0ICs9IHNoYXBlT3V0c2lkZS0+cmlnaHRN
YXJnaW5Cb3hEZWx0YSgpOworICAgICAgICBsb2dpY2FsUmlnaHQgKz0gc2hhcGVEZWx0YXMucmln
aHRNYXJnaW5Cb3hEZWx0YSgpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChsb2dpY2FsUmlnaHQg
PiBtX29mZnNldCkgewpAQCAtNTAzLDE1ICs0OTAsMTYgQEAgaW5saW5lIGJvb2wgQ29tcHV0ZUZs
b2F0T2Zmc2V0Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdD46
OnUKIH0KIAogdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yTGlu
ZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJ
Zk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCitpbmxpbmUgYm9v
bCBDb21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6
RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBm
bG9hdGluZ09iamVjdCkKIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gbV9yZW5kZXJl
ci5sb2dpY2FsTGVmdEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICBMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0ID0gbV9yZW5kZXJlci5sb2dpY2FsTGVmdEZvckZsb2F0KCZmbG9hdGluZ09iamVj
dCk7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNo
YXBlT3V0c2lkZSA9IHNoYXBlSW5mb0ZvckZsb2F0KGZsb2F0aW5nT2JqZWN0LCBtX3JlbmRlcmVy
LCBtX2xpbmVUb3AsIG1fbGluZUJvdHRvbSkpIHsKLSAgICAgICAgaWYgKCFzaGFwZU91dHNpZGUt
PmxpbmVPdmVybGFwc1NoYXBlKCkpCisgICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0
c2lkZSA9IGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7Cisg
ICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBzaGFwZURlbHRhcyA9IHNoYXBlT3V0c2lkZS0+Y29t
cHV0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUobV9yZW5kZXJlciwgZmxvYXRpbmdPYmpl
Y3QsIG1fbGluZVRvcCwgbV9saW5lQm90dG9tIC0gbV9saW5lVG9wKTsKKyAgICAgICAgaWYgKCFz
aGFwZURlbHRhcy5saW5lT3ZlcmxhcHNTaGFwZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIGxvZ2ljYWxMZWZ0ICs9IHNoYXBlT3V0c2lkZS0+bGVmdE1hcmdpbkJveERl
bHRhKCk7CisgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IHNoYXBlRGVsdGFzLmxlZnRNYXJnaW5Cb3hE
ZWx0YSgpOwogICAgIH0KICNlbmRpZgogICAgIGlmIChsb2dpY2FsTGVmdCA8IG1fb2Zmc2V0KSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lkdGguY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcAppbmRleCA4Y2Nj
N2ZjOWZhM2EzMjMwZmVmZTNmZGViM2Y3MTY5ZDk4ZjMzMGJjLi5lNjJhZTk5OTY5ZGNiZTU0YmQy
YWNkOTk4YTdjZDMwMTBlZmJhNzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvbGluZS9MaW5lV2lkdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9saW5l
L0xpbmVXaWR0aC5jcHAKQEAgLTgzLDEwICs4MywxMCBAQCB2b2lkIExpbmVXaWR0aDo6c2hyaW5r
QXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKEZsb2F0aW5nT2JqZWN0KiBuZXdGbG9h
dAogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBTaGFwZU91
dHNpZGVJbmZvKiBzaGFwZU91dHNpZGVJbmZvID0gbmV3RmxvYXQtPnJlbmRlcmVyKCkuc2hhcGVP
dXRzaWRlSW5mbygpOwotICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKSB7CisgICAgU2hhcGVPdXRz
aWRlRGVsdGFzIHNoYXBlRGVsdGFzOworICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91
dHNpZGVJbmZvID0gbmV3RmxvYXQtPnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7CiAg
ICAgICAgIExheW91dFVuaXQgbGluZUhlaWdodCA9IG1fYmxvY2subGluZUhlaWdodChtX2lzRmly
c3RMaW5lLCBtX2Jsb2NrLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGlu
ZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKLSAgICAgICAg
c2hhcGVPdXRzaWRlSW5mby0+dXBkYXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShtX2Js
b2NrLCAqbmV3RmxvYXQsIG1fYmxvY2subG9naWNhbEhlaWdodCgpLCBsaW5lSGVpZ2h0KTsKKyAg
ICAgICAgc2hhcGVEZWx0YXMgPSBzaGFwZU91dHNpZGVJbmZvLT5jb21wdXRlRGVsdGFzRm9yQ29u
dGFpbmluZ0Jsb2NrTGluZShtX2Jsb2NrLCAqbmV3RmxvYXQsIG1fYmxvY2subG9naWNhbEhlaWdo
dCgpLCBsaW5lSGVpZ2h0KTsKICAgICB9CiAjZW5kaWYKIApAQCAtOTUsOSArOTUsOSBAQCB2b2lk
IExpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKEZsb2F0
aW5nT2JqZWN0KiBuZXdGbG9hdAogICAgICAgICBpZiAoc2hvdWxkSW5kZW50VGV4dCgpICYmIG1f
YmxvY2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkpCiAgICAgICAgICAgICBuZXdM
ZWZ0ICs9IGZsb29yVG9JbnQobV9ibG9jay50ZXh0SW5kZW50T2Zmc2V0KCkpOwogI2lmIEVOQUJM
RShDU1NfU0hBUEVTKQotICAgICAgICBpZiAoc2hhcGVPdXRzaWRlSW5mbykgewotICAgICAgICAg
ICAgaWYgKHNoYXBlT3V0c2lkZUluZm8tPmxpbmVPdmVybGFwc1NoYXBlKCkpCi0gICAgICAgICAg
ICAgICAgbmV3TGVmdCArPSBzaGFwZU91dHNpZGVJbmZvLT5yaWdodE1hcmdpbkJveERlbHRhKCk7
CisgICAgICAgIGlmIChzaGFwZURlbHRhcy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGlmIChz
aGFwZURlbHRhcy5saW5lT3ZlcmxhcHNTaGFwZSgpKQorICAgICAgICAgICAgICAgIG5ld0xlZnQg
Kz0gc2hhcGVEZWx0YXMucmlnaHRNYXJnaW5Cb3hEZWx0YSgpOwogICAgICAgICAgICAgZWxzZSAv
LyBJZiB0aGUgbGluZSBkb2Vzbid0IG92ZXJsYXAgdGhlIHNoYXBlLCB0aGVuIHdlIG5lZWQgdG8g
YWN0IGFzIGlmIHRoaXMgZmxvYXQgZGlkbid0IGV4aXN0LgogICAgICAgICAgICAgICAgIG5ld0xl
ZnQgPSBtX2xlZnQ7CiAgICAgICAgIH0KQEAgLTEwOCw5ICsxMDgsOSBAQCB2b2lkIExpbmVXaWR0
aDo6c2hyaW5rQXZhaWxhYmxlV2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKEZsb2F0aW5nT2JqZWN0
KiBuZXdGbG9hdAogICAgICAgICBpZiAoc2hvdWxkSW5kZW50VGV4dCgpICYmICFtX2Jsb2NrLnN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgbmV3UmlnaHQgLT0g
Zmxvb3JUb0ludChtX2Jsb2NrLnRleHRJbmRlbnRPZmZzZXQoKSk7CiAjaWYgRU5BQkxFKENTU19T
SEFQRVMpCi0gICAgICAgIGlmIChzaGFwZU91dHNpZGVJbmZvKSB7Ci0gICAgICAgICAgICBpZiAo
c2hhcGVPdXRzaWRlSW5mby0+bGluZU92ZXJsYXBzU2hhcGUoKSkKLSAgICAgICAgICAgICAgICBu
ZXdSaWdodCArPSBzaGFwZU91dHNpZGVJbmZvLT5sZWZ0TWFyZ2luQm94RGVsdGEoKTsKKyAgICAg
ICAgaWYgKHNoYXBlRGVsdGFzLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgaWYgKHNoYXBlRGVs
dGFzLmxpbmVPdmVybGFwc1NoYXBlKCkpCisgICAgICAgICAgICAgICAgbmV3UmlnaHQgKz0gc2hh
cGVEZWx0YXMubGVmdE1hcmdpbkJveERlbHRhKCk7CiAgICAgICAgICAgICBlbHNlIC8vIElmIHRo
ZSBsaW5lIGRvZXNuJ3Qgb3ZlcmxhcCB0aGUgc2hhcGUsIHRoZW4gd2UgbmVlZCB0byBhY3QgYXMg
aWYgdGhpcyBmbG9hdCBkaWRuJ3QgZXhpc3QuCiAgICAgICAgICAgICAgICAgbmV3UmlnaHQgPSBt
X3JpZ2h0OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3No
YXBlcy9TaGFwZU91dHNpZGVJbmZvLmNwcAppbmRleCA5NDVmN2VjMzNmMDdlNTViMjEwODExZmRh
ZDI1NGNhNTRkYTM5ZTc3Li4zNGYxYmExOWMyNzBiNGVhNWUzYmNmY2U1MTQyNjcwOGI1YzZjODky
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lk
ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRz
aWRlSW5mby5jcHAKQEAgLTMwMyw0MiArMzAzLDM5IEBAIGJvb2wgU2hhcGVPdXRzaWRlSW5mbzo6
aXNFbmFibGVkRm9yKGNvbnN0IFJlbmRlckJveCYgYm94KQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBTaGFwZU91dHNpZGVJbmZvOjp1cGRhdGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tM
aW5lKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFpbmluZ0Jsb2NrLCBjb25zdCBGbG9hdGlu
Z09iamVjdCYgZmxvYXRpbmdPYmplY3QsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBs
aW5lSGVpZ2h0KQorU2hhcGVPdXRzaWRlRGVsdGFzIFNoYXBlT3V0c2lkZUluZm86OmNvbXB1dGVE
ZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYgY29udGFp
bmluZ0Jsb2NrLCBjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QsIExheW91dFVu
aXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQogewogICAgIEFTU0VSVChsaW5lSGVp
Z2h0ID49IDApOwotCiAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3hUb3AgPSBjb250YWluaW5nQmxv
Y2subG9naWNhbFRvcEZvckZsb2F0KCZmbG9hdGluZ09iamVjdCkgKyBjb250YWluaW5nQmxvY2su
bWFyZ2luQmVmb3JlRm9yQ2hpbGQobV9yZW5kZXJlcik7CiAgICAgTGF5b3V0VW5pdCBib3JkZXJC
b3hMaW5lVG9wID0gbGluZVRvcCAtIGJvcmRlckJveFRvcDsKIAotICAgIGlmIChpc1NoYXBlRGly
dHkoKSB8fCBtX2JvcmRlckJveExpbmVUb3AgIT0gYm9yZGVyQm94TGluZVRvcCB8fCBtX2xpbmVI
ZWlnaHQgIT0gbGluZUhlaWdodCkgewotICAgICAgICBtX2JvcmRlckJveExpbmVUb3AgPSBib3Jk
ZXJCb3hMaW5lVG9wOwotICAgICAgICBtX3JlZmVyZW5jZUJveExpbmVUb3AgPSBib3JkZXJCb3hM
aW5lVG9wIC0gbG9naWNhbFRvcE9mZnNldCgpOwotICAgICAgICBtX2xpbmVIZWlnaHQgPSBsaW5l
SGVpZ2h0OwotCisgICAgaWYgKGlzU2hhcGVEaXJ0eSgpIHx8ICFtX3NoYXBlT3V0c2lkZURlbHRh
cy5pc0ZvckxpbmUoYm9yZGVyQm94TGluZVRvcCwgbGluZUhlaWdodCkpIHsKKyAgICAgICAgTGF5
b3V0VW5pdCByZWZlcmVuY2VCb3hMaW5lVG9wID0gYm9yZGVyQm94TGluZVRvcCAtIGxvZ2ljYWxU
b3BPZmZzZXQoKTsKICAgICAgICAgTGF5b3V0VW5pdCBmbG9hdE1hcmdpbkJveFdpZHRoID0gY29u
dGFpbmluZ0Jsb2NrLmxvZ2ljYWxXaWR0aEZvckZsb2F0KCZmbG9hdGluZ09iamVjdCk7CiAKLSAg
ICAgICAgaWYgKGNvbXB1dGVkU2hhcGUoKS5saW5lT3ZlcmxhcHNTaGFwZU1hcmdpbkJvdW5kcyht
X3JlZmVyZW5jZUJveExpbmVUb3AsIG1fbGluZUhlaWdodCkpIHsKKyAgICAgICAgaWYgKGNvbXB1
dGVkU2hhcGUoKS5saW5lT3ZlcmxhcHNTaGFwZU1hcmdpbkJvdW5kcyhyZWZlcmVuY2VCb3hMaW5l
VG9wLCBsaW5lSGVpZ2h0KSkgewogICAgICAgICAgICAgTGluZVNlZ21lbnQgc2VnbWVudCA9IGNv
bXB1dGVkU2hhcGUoKS5nZXRFeGNsdWRlZEludGVydmFsKChib3JkZXJCb3hMaW5lVG9wIC0gbG9n
aWNhbFRvcE9mZnNldCgpKSwgc3RkOjptaW4obGluZUhlaWdodCwgc2hhcGVMb2dpY2FsQm90dG9t
KCkgLSBib3JkZXJCb3hMaW5lVG9wKSk7CiAgICAgICAgICAgICBpZiAoc2VnbWVudC5pc1ZhbGlk
KSB7CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdE1hcmdpbiA9IGNvbnRh
aW5pbmdCbG9jay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbnRhaW5pbmdC
bG9jay5tYXJnaW5TdGFydEZvckNoaWxkKG1fcmVuZGVyZXIpIDogY29udGFpbmluZ0Jsb2NrLm1h
cmdpbkVuZEZvckNoaWxkKG1fcmVuZGVyZXIpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQg
cmF3TGVmdE1hcmdpbkJveERlbHRhID0gc2VnbWVudC5sb2dpY2FsTGVmdCArIGxvZ2ljYWxMZWZ0
T2Zmc2V0KCkgKyBsb2dpY2FsTGVmdE1hcmdpbjsKLSAgICAgICAgICAgICAgICBtX2xlZnRNYXJn
aW5Cb3hEZWx0YSA9IGNsYW1wVG88TGF5b3V0VW5pdD4ocmF3TGVmdE1hcmdpbkJveERlbHRhLCBM
YXlvdXRVbml0KCksIGZsb2F0TWFyZ2luQm94V2lkdGgpOworICAgICAgICAgICAgICAgIExheW91
dFVuaXQgbGVmdE1hcmdpbkJveERlbHRhID0gY2xhbXBUbzxMYXlvdXRVbml0PihyYXdMZWZ0TWFy
Z2luQm94RGVsdGEsIExheW91dFVuaXQoKSwgZmxvYXRNYXJnaW5Cb3hXaWR0aCk7CiAKICAgICAg
ICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodE1hcmdpbiA9IGNvbnRhaW5pbmdCbG9j
ay5zdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNvbnRhaW5pbmdCbG9jay5tYXJn
aW5FbmRGb3JDaGlsZChtX3JlbmRlcmVyKSA6IGNvbnRhaW5pbmdCbG9jay5tYXJnaW5TdGFydEZv
ckNoaWxkKG1fcmVuZGVyZXIpOwogICAgICAgICAgICAgICAgIExheW91dFVuaXQgcmF3UmlnaHRN
YXJnaW5Cb3hEZWx0YSA9IHNlZ21lbnQubG9naWNhbFJpZ2h0ICsgbG9naWNhbExlZnRPZmZzZXQo
KSAtIGNvbnRhaW5pbmdCbG9jay5sb2dpY2FsV2lkdGhGb3JDaGlsZChtX3JlbmRlcmVyKSAtIGxv
Z2ljYWxSaWdodE1hcmdpbjsKLSAgICAgICAgICAgICAgICBtX3JpZ2h0TWFyZ2luQm94RGVsdGEg
PSBjbGFtcFRvPExheW91dFVuaXQ+KHJhd1JpZ2h0TWFyZ2luQm94RGVsdGEsIC1mbG9hdE1hcmdp
bkJveFdpZHRoLCBMYXlvdXRVbml0KCkpOwotICAgICAgICAgICAgICAgIG1fbGluZU92ZXJsYXBz
U2hhcGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBM
YXlvdXRVbml0IHJpZ2h0TWFyZ2luQm94RGVsdGEgPSBjbGFtcFRvPExheW91dFVuaXQ+KHJhd1Jp
Z2h0TWFyZ2luQm94RGVsdGEsIC1mbG9hdE1hcmdpbkJveFdpZHRoLCBMYXlvdXRVbml0KCkpOwor
CisgICAgICAgICAgICAgICAgbV9zaGFwZU91dHNpZGVEZWx0YXMgPSBTaGFwZU91dHNpZGVEZWx0
YXMobGVmdE1hcmdpbkJveERlbHRhLCByaWdodE1hcmdpbkJveERlbHRhLCB0cnVlLCBib3JkZXJC
b3hMaW5lVG9wLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV9zaGFwZU91
dHNpZGVEZWx0YXM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICAvLyBMaW5l
cyB0aGF0IGRvIG5vdCBvdmVybGFwIHRoZSBzaGFwZSBzaG91bGQgYWN0IGFzIGlmIHRoZSBmbG9h
dAogICAgICAgICAvLyB3YXNuJ3QgdGhlcmUgZm9yIGxheW91dCBwdXJwb3Nlcy4gU28gd2Ugc2V0
IHRoZSBkZWx0YXMgdG8gcmVtb3ZlIHRoZQogICAgICAgICAvLyBlbnRpcmUgd2lkdGggb2YgdGhl
IGZsb2F0Ci0gICAgICAgIG1fbGVmdE1hcmdpbkJveERlbHRhID0gZmxvYXRNYXJnaW5Cb3hXaWR0
aDsKLSAgICAgICAgbV9yaWdodE1hcmdpbkJveERlbHRhID0gLWZsb2F0TWFyZ2luQm94V2lkdGg7
Ci0gICAgICAgIG1fbGluZU92ZXJsYXBzU2hhcGUgPSBmYWxzZTsKKyAgICAgICAgbV9zaGFwZU91
dHNpZGVEZWx0YXMgPSBTaGFwZU91dHNpZGVEZWx0YXMoZmxvYXRNYXJnaW5Cb3hXaWR0aCwgLWZs
b2F0TWFyZ2luQm94V2lkdGgsIGZhbHNlLCBib3JkZXJCb3hMaW5lVG9wLCBsaW5lSGVpZ2h0KTsK
ICAgICB9CisKKyAgICByZXR1cm4gbV9zaGFwZU91dHNpZGVEZWx0YXM7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKaW5k
ZXggNzFiZWIwNjQ0MTU4NDYzZGU2YTg5ZjhkNTdiMTVhNWYzYTA2ODFiNy4uNzljZTMwOThiYTZi
YzdkMmIzOTQzMzE5NTE3MjRhNTk3ZDVkODczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmgKQEAgLTQzLDIyICs0Myw1OSBAQCBj
bGFzcyBSZW5kZXJCb3g7CiBjbGFzcyBTdHlsZUltYWdlOwogY2xhc3MgRmxvYXRpbmdPYmplY3Q7
CiAKK2NsYXNzIFNoYXBlT3V0c2lkZURlbHRhcyBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgU2hhcGVPdXRzaWRlRGVsdGFzKCkKKyAgICAgICAgOiBt
X2xlZnRNYXJnaW5Cb3hEZWx0YSgwKQorICAgICAgICAsIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YSgw
KQorICAgICAgICAsIG1fYm9yZGVyQm94TGluZVRvcCgwKQorICAgICAgICAsIG1fbGluZUhlaWdo
dCgwKQorICAgICAgICAsIG1fbGluZU92ZXJsYXBzU2hhcGUoZmFsc2UpCisgICAgICAgICwgbV9p
c1ZhbGlkKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICBTaGFwZU91dHNpZGVEZWx0YXMoTGF5
b3V0VW5pdCBsZWZ0TWFyZ2luQm94RGVsdGEsIExheW91dFVuaXQgcmlnaHRNYXJnaW5Cb3hEZWx0
YSwgYm9vbCBsaW5lT3ZlcmxhcHNTaGFwZSwgTGF5b3V0VW5pdCBib3JkZXJCb3hMaW5lVG9wLCBM
YXlvdXRVbml0IGxpbmVIZWlnaHQpCisgICAgICAgIDogbV9sZWZ0TWFyZ2luQm94RGVsdGEobGVm
dE1hcmdpbkJveERlbHRhKQorICAgICAgICAsIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YShyaWdodE1h
cmdpbkJveERlbHRhKQorICAgICAgICAsIG1fYm9yZGVyQm94TGluZVRvcChib3JkZXJCb3hMaW5l
VG9wKQorICAgICAgICAsIG1fbGluZUhlaWdodChsaW5lSGVpZ2h0KQorICAgICAgICAsIG1fbGlu
ZU92ZXJsYXBzU2hhcGUobGluZU92ZXJsYXBzU2hhcGUpCisgICAgICAgICwgbV9pc1ZhbGlkKHRy
dWUpCisgICAgeworICAgIH0KKworICAgIGJvb2wgaXNGb3JMaW5lKExheW91dFVuaXQgYm9yZGVy
Qm94TGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faXNWYWxpZCAmJiBtX2JvcmRlckJveExpbmVUb3AgPT0gYm9yZGVyQm94TGluZVRvcCAmJiBt
X2xpbmVIZWlnaHQgPT0gbGluZUhlaWdodDsKKyAgICB9CisKKyAgICBib29sIGlzVmFsaWQoKSB7
IHJldHVybiBtX2lzVmFsaWQ7IH0KKyAgICBMYXlvdXRVbml0IGxlZnRNYXJnaW5Cb3hEZWx0YSgp
IHsgQVNTRVJUKG1faXNWYWxpZCk7IHJldHVybiBtX2xlZnRNYXJnaW5Cb3hEZWx0YTsgfQorICAg
IExheW91dFVuaXQgcmlnaHRNYXJnaW5Cb3hEZWx0YSgpIHsgQVNTRVJUKG1faXNWYWxpZCk7IHJl
dHVybiBtX3JpZ2h0TWFyZ2luQm94RGVsdGE7IH0KKyAgICBib29sIGxpbmVPdmVybGFwc1NoYXBl
KCkgeyBBU1NFUlQobV9pc1ZhbGlkKTsgcmV0dXJuIG1fbGluZU92ZXJsYXBzU2hhcGU7IH0KKwor
cHJpdmF0ZToKKyAgICBMYXlvdXRVbml0IG1fbGVmdE1hcmdpbkJveERlbHRhOworICAgIExheW91
dFVuaXQgbV9yaWdodE1hcmdpbkJveERlbHRhOworICAgIExheW91dFVuaXQgbV9ib3JkZXJCb3hM
aW5lVG9wOworICAgIExheW91dFVuaXQgbV9saW5lSGVpZ2h0OworICAgIGJvb2wgbV9saW5lT3Zl
cmxhcHNTaGFwZTsKKyAgICBib29sIG1faXNWYWxpZDsKK307CisKIGNsYXNzIFNoYXBlT3V0c2lk
ZUluZm8gZmluYWwgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAg
IFNoYXBlT3V0c2lkZUluZm8oY29uc3QgUmVuZGVyQm94JiByZW5kZXJlcikKICAgICAgICAgOiBt
X3JlbmRlcmVyKHJlbmRlcmVyKQotICAgICAgICAsIG1fbGluZU92ZXJsYXBzU2hhcGUoZmFsc2Up
CiAgICAgewogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzRW5hYmxlZEZvcihjb25zdCBSZW5k
ZXJCb3gmKTsKIAotICAgIExheW91dFVuaXQgbGVmdE1hcmdpbkJveERlbHRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZWZ0TWFyZ2luQm94RGVsdGE7IH0KLSAgICBMYXlvdXRVbml0IHJpZ2h0TWFyZ2lu
Qm94RGVsdGEoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0TWFyZ2luQm94RGVsdGE7IH0KLSAgICBi
b29sIGxpbmVPdmVybGFwc1NoYXBlKCkgY29uc3QgeyByZXR1cm4gbV9saW5lT3ZlcmxhcHNTaGFw
ZTsgfQotCi0gICAgdm9pZCB1cGRhdGVEZWx0YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKGNvbnN0
IFJlbmRlckJsb2NrRmxvdyYsIGNvbnN0IEZsb2F0aW5nT2JqZWN0JiwgTGF5b3V0VW5pdCBsaW5l
VG9wLCBMYXlvdXRVbml0IGxpbmVIZWlnaHQpOworICAgIFNoYXBlT3V0c2lkZURlbHRhcyBjb21w
dXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBj
b25zdCBGbG9hdGluZ09iamVjdCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5l
SGVpZ2h0KTsKIAogICAgIHZvaWQgc2V0UmVmZXJlbmNlQm94TG9naWNhbFNpemUoTGF5b3V0U2l6
ZSk7CiAKQEAgLTY5LDEwICsxMDYsNiBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBzaGFwZUxv
Z2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVkU2hhcGUoKS5zaGFwZU1hcmdpbkxv
Z2ljYWxCb3VuZGluZ0JveCgpLndpZHRoKCk7IH0KICAgICBMYXlvdXRVbml0IHNoYXBlTG9naWNh
bEhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVkU2hhcGUoKS5zaGFwZU1hcmdpbkxvZ2lj
YWxCb3VuZGluZ0JveCgpLmhlaWdodCgpOyB9CiAKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMaW5l
VG9wKCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3hMaW5lVG9wICsgbG9naWNhbFRvcE9m
ZnNldCgpOyB9Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGluZUJvdHRvbSgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVmZXJlbmNlQm94TGluZVRvcCArIG1fbGluZUhlaWdodCArIGxvZ2ljYWxUb3BPZmZz
ZXQoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbExpbmVCb3R0b20oTGF5b3V0VW5pdCBsaW5l
SGVpZ2h0KSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUJveExpbmVUb3AgKyBsaW5lSGVpZ2h0
ICsgbG9naWNhbFRvcE9mZnNldCgpOyB9Ci0KICAgICB2b2lkIG1hcmtTaGFwZUFzRGlydHkoKSB7
IG1fc2hhcGUgPSBudWxscHRyOyB9CiAgICAgYm9vbCBpc1NoYXBlRGlydHkoKSB7IHJldHVybiAh
bV9zaGFwZTsgfQogCkBAIC0xMTAsMTMgKzE0Myw4IEBAIHByaXZhdGU6CiAKICAgICBtdXRhYmxl
IHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gbV9zaGFwZTsKICAgICBMYXlvdXRTaXplIG1fcmVmZXJl
bmNlQm94TG9naWNhbFNpemU7Ci0gICAgTGF5b3V0VW5pdCBtX3JlZmVyZW5jZUJveExpbmVUb3A7
Ci0gICAgTGF5b3V0VW5pdCBtX2xpbmVIZWlnaHQ7CiAKLSAgICBMYXlvdXRVbml0IG1fbGVmdE1h
cmdpbkJveERlbHRhOwotICAgIExheW91dFVuaXQgbV9yaWdodE1hcmdpbkJveERlbHRhOwotICAg
IExheW91dFVuaXQgbV9ib3JkZXJCb3hMaW5lVG9wOwotICAgIGJvb2wgbV9saW5lT3ZlcmxhcHNT
aGFwZTsKKyAgICBTaGFwZU91dHNpZGVEZWx0YXMgbV9zaGFwZU91dHNpZGVEZWx0YXM7CiB9Owog
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236538</attachid>
            <date>2014-08-13 11:37:46 -0700</date>
            <delta_ts>2014-08-13 12:05:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135781-20140813113736.patch</filename>
            <type>text/plain</type>
            <size>19289</size>
            <attacher name="Bem Jones-Bey">bjonesbe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyNTIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU5Yzc3ZDNiZmNhZWI3
OTRmZWY2ZjY5OTM2ZWNhODdhZGY3NDEwMy4uMDIwYTAwZjk4MWExMmUwNGNjZDg4Y2E1ODk1MDlm
MjE4NjIxYzMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE0LTA4LTEzICBCZW0g
Sm9uZXMtQmV5ICA8YmpvbmVzYmVAYWRvYmUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFNoYXBl
T3V0c2lkZUluZm8gc28gaXQgaXNuJ3QgbXV0YXRlZCBmb3IgZWFjaCBsaW5lCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzU3ODEKKworICAgICAgICBS
ZXZpZXdlZCBieSBab2x0YW4gSG9ydmF0aC4KKworICAgICAgICBFbmNhcHN1bGF0ZSB0aGUgcGVy
IGxpbmUgc3RhdGUgaW50byBhIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QuCisgICAgICAgIHVw
ZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUgaGFzIGJlZW4gcmVuYW1lZCB0bworICAg
ICAgICBjb21wdXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSwgYW5kIGl0IHJldHVybnMg
YW4gaW5zdGFuY2Ugb2YgdGhlCisgICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgZm9y
IHRoYXQgbGluZS4gVGhpcyBvYmplY3QgaXMgY2FjaGVkLCBidXQKKyAgICAgICAgbm9uZSBvZiB0
aGUgZnVuY3Rpb25hbGl0eSBvZiBTaGFwZU91dHNpZGVJbmZvIGlzIGRlcGVuZGFudCBvbiBhbnkg
bGluZQorICAgICAgICBzcGVjaWZpYyBkYXRhIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvRmxvYXRpbmdP
YmplY3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0
TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZO
ZWVkZWQpOgorICAgICAgICAgICAgVXBkYXRlIHRvIHRha2UgYSBGbG9hdGluZ09iamVjdCByZWZl
cmVuY2UgYmVjYXVzZSB0aGUgRmxvYXRpbmdPYmplY3QgY2Fubm90IGJlIG51bGwuCisgICAgICAg
IChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91dEFkYXB0ZXI8RmxvYXRp
bmdPYmplY3Q6OkZsb2F0UmlnaHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZCk6CisgICAgICAgICAg
ICBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8Rmxv
YXRUeXBlVmFsdWU+Ojpjb2xsZWN0SWZOZWVkZWQpOiBQYXNzIEZsb2F0aW5nT2JqZWN0IHRvCisg
ICAgICAgICAgICB1cGRhdGVPZmZzZXRJZk5lZWRlZCBhcyBhIHJlZmVyZW5jZSwgc2luY2UgaXQg
Y2Fubm90IGJlIG51bGwuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlRmxvYXRPZmZzZXRGb3JM
aW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0
SWZOZWVkZWQpOgorICAgICAgICAgICAgVXNlIFNoYXBlT3V0c2lkZURlbHRhcyBvYmplY3QgdG8g
Y2FsY3VsYXRlIHRoZSBvZmZzZXQgYW5kIHRha2UgdGhlIEZsb2F0aW5nT2JqZWN0IGFzIGEKKyAg
ICAgICAgICAgIHJlZmVyZW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVGbG9hdE9mZnNl
dEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRl
T2Zmc2V0SWZOZWVkZWQpOgorICAgICAgICAgICAgRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpz
aGFwZUluZm9Gb3JGbG9hdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVuZGVyaW5nL2xpbmUvTGlu
ZVdpZHRoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxpbmVXaWR0aDo6c2hyaW5rQXZhaWxhYmxl
V2lkdGhGb3JOZXdGbG9hdElmTmVlZGVkKTogVXBkYXRlIHRvIHVzZSBTaGFwZU91dHNpZGVEZWx0
YXMgb2JqZWN0LgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVsdGFzRm9y
Q29udGFpbmluZ0Jsb2NrTGluZSk6IFJldHVybiBhIFNoYW9lT3V0c2lkZURlbHRhcyBvYmplY3QK
KyAgICAgICAgICAgIGluc3RlYWQgb2Ygc3RvcmluZyBsaW5lIHNwZWNpZmljIGRhdGEgaW4gaW5z
dGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6dXBk
YXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZSk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmg6CisKIDIwMTQtMDgtMTMgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgZG9jdW1lbnQg
c2VuZHMgaW5jb3JyZWN0IHJlZmVyZXIgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRmxvYXRpbmdPYmplY3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GbG9hdGluZ09iamVjdHMuY3BwCmluZGV4IDViNWJmMDZiMzVhMTU2MjhjMzJjYjk1NTdlY2Rh
ZGFlOTk5NmJjYWUuLmI0MDdhN2Q5NDdmNmNkYTZmMGU3YTdmYmM4NDFmZDYxNjBjYzE3ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuY3BwCkBAIC0xNDEs
NyArMTQxLDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgb2Zmc2V0KCkgY29uc3QgeyByZXR1
cm4gbV9vZmZzZXQ7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVPZmZz
ZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmKSA9IDA7CiAKICAgICBj
b25zdCBSZW5kZXJCbG9ja0Zsb3cmIG1fcmVuZGVyZXI7CiAgICAgTGF5b3V0VW5pdCBtX2xpbmVU
b3A7CkBAIC0xNTEsNyArMTUxLDcgQEAgcHJvdGVjdGVkOgogfTsKIAogdGVtcGxhdGUgPEZsb2F0
aW5nT2JqZWN0OjpUeXBlIEZsb2F0VHlwZVZhbHVlPgotY2xhc3MgQ29tcHV0ZUZsb2F0T2Zmc2V0
Rm9yRmxvYXRMYXlvdXRBZGFwdGVyIDogcHVibGljIENvbXB1dGVGbG9hdE9mZnNldEFkYXB0ZXI8
RmxvYXRUeXBlVmFsdWU+IHsgCitjbGFzcyBDb21wdXRlRmxvYXRPZmZzZXRGb3JGbG9hdExheW91
dEFkYXB0ZXIgOiBwdWJsaWMgQ29tcHV0ZUZsb2F0T2Zmc2V0QWRhcHRlcjxGbG9hdFR5cGVWYWx1
ZT4gewogcHVibGljOgogICAgIENvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0TGF5b3V0QWRhcHRl
cihjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIHJlbmRlcmVyLCBMYXlvdXRVbml0IGxpbmVUb3AsIExh
eW91dFVuaXQgbGluZUJvdHRvbSwgTGF5b3V0VW5pdCBvZmZzZXQpCiAgICAgICAgIDogQ29tcHV0
ZUZsb2F0T2Zmc2V0QWRhcHRlcjxGbG9hdFR5cGVWYWx1ZT4ocmVuZGVyZXIsIGxpbmVUb3AsIGxp
bmVCb3R0b20sIG9mZnNldCkKQEAgLTE2Myw3ICsxNjMsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0
VW5pdCBoZWlnaHRSZW1haW5pbmcoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
Ym9vbCB1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCopIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9h
dGluZ09iamVjdCYpIG92ZXJyaWRlIGZpbmFsOwogfTsKIAogdGVtcGxhdGUgPEZsb2F0aW5nT2Jq
ZWN0OjpUeXBlIEZsb2F0VHlwZVZhbHVlPgpAQCAtMTc3LDcgKzE3Nyw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5Db21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRhcHRlcigpIHsgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIHVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0
IEZsb2F0aW5nT2JqZWN0Kikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCBib29sIHVwZGF0
ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0Jikgb3ZlcnJpZGUgZmluYWw7CiB9
OwogCiBjbGFzcyBGaW5kTmV4dEZsb2F0TG9naWNhbEJvdHRvbUFkYXB0ZXIgewpAQCAtNDI1LDkg
KzQyNSw5IEBAIExheW91dFVuaXQgRmxvYXRpbmdPYmplY3RzOjpsb2dpY2FsUmlnaHRPZmZzZXQo
TGF5b3V0VW5pdCBmaXhlZE9mZnNldCwgTGF5b3V0VW5pCiB9CiAKIHRlbXBsYXRlPD4KLWlubGlu
ZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09i
amVjdDo6RmxvYXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmpl
Y3QqIGZsb2F0aW5nT2JqZWN0KQoraW5saW5lIGJvb2wgQ29tcHV0ZUZsb2F0T2Zmc2V0Rm9yRmxv
YXRMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJ
Zk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdPYmplY3QpCiB7Ci0gICAgTGF5
b3V0VW5pdCBsb2dpY2FsUmlnaHQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxSaWdodEZvckZsb2F0KGZs
b2F0aW5nT2JqZWN0KTsKKyAgICBMYXlvdXRVbml0IGxvZ2ljYWxSaWdodCA9IG1fcmVuZGVyZXIu
bG9naWNhbFJpZ2h0Rm9yRmxvYXQoJmZsb2F0aW5nT2JqZWN0KTsKICAgICBpZiAobG9naWNhbFJp
Z2h0ID4gbV9vZmZzZXQpIHsKICAgICAgICAgbV9vZmZzZXQgPSBsb2dpY2FsUmlnaHQ7CiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDM2LDkgKzQzNiw5IEBAIGlubGluZSBib29sIENvbXB1dGVG
bG9hdE9mZnNldEZvckZsb2F0TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0
Pjo6CiB9CiAKIHRlbXBsYXRlPD4KLWlubGluZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckZs
b2F0TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNl
dElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0KiBmbG9hdGluZ09iamVjdCkKK2lubGluZSBi
b29sIENvbXB1dGVGbG9hdE9mZnNldEZvckZsb2F0TGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVj
dDo6RmxvYXRSaWdodD46OnVwZGF0ZU9mZnNldElmTmVlZGVkKGNvbnN0IEZsb2F0aW5nT2JqZWN0
JiBmbG9hdGluZ09iamVjdCkKIHsKLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gbV9yZW5k
ZXJlci5sb2dpY2FsTGVmdEZvckZsb2F0KGZsb2F0aW5nT2JqZWN0KTsKKyAgICBMYXlvdXRVbml0
IGxvZ2ljYWxMZWZ0ID0gbV9yZW5kZXJlci5sb2dpY2FsTGVmdEZvckZsb2F0KCZmbG9hdGluZ09i
amVjdCk7CiAgICAgaWYgKGxvZ2ljYWxMZWZ0IDwgbV9vZmZzZXQpIHsKICAgICAgICAgbV9vZmZz
ZXQgPSBsb2dpY2FsTGVmdDsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NjMsMzUgKzQ2Mywy
MiBAQCBpbmxpbmUgdm9pZCBDb21wdXRlRmxvYXRPZmZzZXRBZGFwdGVyPEZsb2F0VHlwZVZhbHVl
Pjo6Y29sbGVjdElmTmVlZGVkKGNvbnN0IEludAogICAgIEFTU0VSVChmbG9hdGluZ09iamVjdC0+
aXNQbGFjZWQoKSk7CiAgICAgQVNTRVJUKHJhbmdlc0ludGVyc2VjdChtX3JlbmRlcmVyLmxvZ2lj
YWxUb3BGb3JGbG9hdChmbG9hdGluZ09iamVjdCksIG1fcmVuZGVyZXIubG9naWNhbEJvdHRvbUZv
ckZsb2F0KGZsb2F0aW5nT2JqZWN0KSwgbV9saW5lVG9wLCBtX2xpbmVCb3R0b20pKTsKIAotICAg
IGJvb2wgZmxvYXRJc05ld0V4dHJlbWUgPSB1cGRhdGVPZmZzZXRJZk5lZWRlZChmbG9hdGluZ09i
amVjdCk7CisgICAgYm9vbCBmbG9hdElzTmV3RXh0cmVtZSA9IHVwZGF0ZU9mZnNldElmTmVlZGVk
KCpmbG9hdGluZ09iamVjdCk7CiAgICAgaWYgKGZsb2F0SXNOZXdFeHRyZW1lKQogICAgICAgICBt
X291dGVybW9zdEZsb2F0ID0gZmxvYXRpbmdPYmplY3Q7CiB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NI
QVBFUykKLXN0YXRpYyBpbmxpbmUgU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVJbmZvRm9yRmxvYXQo
Y29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0LCBjb25zdCBSZW5kZXJCbG9ja0Zs
b3cmIGNvbnRhaW5pbmdCbG9jaywgTGF5b3V0VW5pdCBsaW5lVG9wLCBMYXlvdXRVbml0IGxpbmVC
b3R0b20pCi17Ci0gICAgaWYgKGZsb2F0aW5nT2JqZWN0KSB7Ci0gICAgICAgIGlmIChTaGFwZU91
dHNpZGVJbmZvKiBzaGFwZU91dHNpZGUgPSBmbG9hdGluZ09iamVjdC0+cmVuZGVyZXIoKS5zaGFw
ZU91dHNpZGVJbmZvKCkpIHsKLSAgICAgICAgICAgIHNoYXBlT3V0c2lkZS0+dXBkYXRlRGVsdGFz
Rm9yQ29udGFpbmluZ0Jsb2NrTGluZShjb250YWluaW5nQmxvY2ssICpmbG9hdGluZ09iamVjdCwg
bGluZVRvcCwgbGluZUJvdHRvbSAtIGxpbmVUb3ApOwotICAgICAgICAgICAgcmV0dXJuIHNoYXBl
T3V0c2lkZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwotfQotI2Vu
ZGlmCi0KIHRlbXBsYXRlPD4KLWlubGluZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVM
YXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1cGRhdGVPZmZzZXRJZk5l
ZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCogZmxvYXRpbmdPYmplY3QpCitpbmxpbmUgYm9vbCBD
b21wdXRlRmxvYXRPZmZzZXRGb3JMaW5lTGF5b3V0QWRhcHRlcjxGbG9hdGluZ09iamVjdDo6Rmxv
YXRMZWZ0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQoY29uc3QgRmxvYXRpbmdPYmplY3QmIGZsb2F0
aW5nT2JqZWN0KQogewotICAgIExheW91dFVuaXQgbG9naWNhbFJpZ2h0ID0gbV9yZW5kZXJlci5s
b2dpY2FsUmlnaHRGb3JGbG9hdChmbG9hdGluZ09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsUmlnaHQgPSBtX3JlbmRlcmVyLmxvZ2ljYWxSaWdodEZvckZsb2F0KCZmbG9hdGluZ09iamVj
dCk7CiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNo
YXBlT3V0c2lkZSA9IHNoYXBlSW5mb0ZvckZsb2F0KGZsb2F0aW5nT2JqZWN0LCBtX3JlbmRlcmVy
LCBtX2xpbmVUb3AsIG1fbGluZUJvdHRvbSkpIHsKLSAgICAgICAgaWYgKCFzaGFwZU91dHNpZGUt
PmxpbmVPdmVybGFwc1NoYXBlKCkpCisgICAgaWYgKFNoYXBlT3V0c2lkZUluZm8qIHNoYXBlT3V0
c2lkZSA9IGZsb2F0aW5nT2JqZWN0LnJlbmRlcmVyKCkuc2hhcGVPdXRzaWRlSW5mbygpKSB7Cisg
ICAgICAgIFNoYXBlT3V0c2lkZURlbHRhcyBzaGFwZURlbHRhcyA9IHNoYXBlT3V0c2lkZS0+Y29t
cHV0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUobV9yZW5kZXJlciwgZmxvYXRpbmdPYmpl
Y3QsIG1fbGluZVRvcCwgbV9saW5lQm90dG9tIC0gbV9saW5lVG9wKTsKKyAgICAgICAgaWYgKCFz
aGFwZURlbHRhcy5saW5lT3ZlcmxhcHNTaGFwZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgICAgIGxvZ2ljYWxSaWdodCArPSBzaGFwZU91dHNpZGUtPnJpZ2h0TWFyZ2luQm94
RGVsdGEoKTsKKyAgICAgICAgbG9naWNhbFJpZ2h0ICs9IHNoYXBlRGVsdGFzLnJpZ2h0TWFyZ2lu
Qm94RGVsdGEoKTsKICAgICB9CiAjZW5kaWYKICAgICBpZiAobG9naWNhbFJpZ2h0ID4gbV9vZmZz
ZXQpIHsKQEAgLTUwMywxNSArNDkwLDE2IEBAIGlubGluZSBib29sIENvbXB1dGVGbG9hdE9mZnNl
dEZvckxpbmVMYXlvdXRBZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQ+Ojp1CiB9CiAK
IHRlbXBsYXRlPD4KLWlubGluZSBib29sIENvbXB1dGVGbG9hdE9mZnNldEZvckxpbmVMYXlvdXRB
ZGFwdGVyPEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0Pjo6dXBkYXRlT2Zmc2V0SWZOZWVkZWQo
Y29uc3QgRmxvYXRpbmdPYmplY3QqIGZsb2F0aW5nT2JqZWN0KQoraW5saW5lIGJvb2wgQ29tcHV0
ZUZsb2F0T2Zmc2V0Rm9yTGluZUxheW91dEFkYXB0ZXI8RmxvYXRpbmdPYmplY3Q6OkZsb2F0Umln
aHQ+Ojp1cGRhdGVPZmZzZXRJZk5lZWRlZChjb25zdCBGbG9hdGluZ09iamVjdCYgZmxvYXRpbmdP
YmplY3QpCiB7Ci0gICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IG1fcmVuZGVyZXIubG9naWNh
bExlZnRGb3JGbG9hdChmbG9hdGluZ09iamVjdCk7CisgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dCA9IG1fcmVuZGVyZXIubG9naWNhbExlZnRGb3JGbG9hdCgmZmxvYXRpbmdPYmplY3QpOwogI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQotICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNp
ZGUgPSBzaGFwZUluZm9Gb3JGbG9hdChmbG9hdGluZ09iamVjdCwgbV9yZW5kZXJlciwgbV9saW5l
VG9wLCBtX2xpbmVCb3R0b20pKSB7Ci0gICAgICAgIGlmICghc2hhcGVPdXRzaWRlLT5saW5lT3Zl
cmxhcHNTaGFwZSgpKQorICAgIGlmIChTaGFwZU91dHNpZGVJbmZvKiBzaGFwZU91dHNpZGUgPSBm
bG9hdGluZ09iamVjdC5yZW5kZXJlcigpLnNoYXBlT3V0c2lkZUluZm8oKSkgeworICAgICAgICBT
aGFwZU91dHNpZGVEZWx0YXMgc2hhcGVEZWx0YXMgPSBzaGFwZU91dHNpZGUtPmNvbXB1dGVEZWx0
YXNGb3JDb250YWluaW5nQmxvY2tMaW5lKG1fcmVuZGVyZXIsIGZsb2F0aW5nT2JqZWN0LCBtX2xp
bmVUb3AsIG1fbGluZUJvdHRvbSAtIG1fbGluZVRvcCk7CisgICAgICAgIGlmICghc2hhcGVEZWx0
YXMubGluZU92ZXJsYXBzU2hhcGUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBsb2dpY2FsTGVmdCArPSBzaGFwZU91dHNpZGUtPmxlZnRNYXJnaW5Cb3hEZWx0YSgpOwor
ICAgICAgICBsb2dpY2FsTGVmdCArPSBzaGFwZURlbHRhcy5sZWZ0TWFyZ2luQm94RGVsdGEoKTsK
ICAgICB9CiAjZW5kaWYKICAgICBpZiAobG9naWNhbExlZnQgPCBtX29mZnNldCkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUvTGluZVdpZHRoLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKaW5kZXggOGNjYzdmYzlmYTNh
MzIzMGZlZmUzZmRlYjNmNzE2OWQ5OGYzMzBiYy4uZTYyYWU5OTk2OWRjYmU1NGJkMmFjZDk5OGE3
Y2QzMDEwZWZiYTc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL2xpbmUv
TGluZVdpZHRoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbGluZS9MaW5lV2lk
dGguY3BwCkBAIC04MywxMCArODMsMTAgQEAgdm9pZCBMaW5lV2lkdGg6OnNocmlua0F2YWlsYWJs
ZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChGbG9hdGluZ09iamVjdCogbmV3RmxvYXQKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgU2hhcGVPdXRzaWRlSW5m
byogc2hhcGVPdXRzaWRlSW5mbyA9IG5ld0Zsb2F0LT5yZW5kZXJlcigpLnNoYXBlT3V0c2lkZUlu
Zm8oKTsKLSAgICBpZiAoc2hhcGVPdXRzaWRlSW5mbykgeworICAgIFNoYXBlT3V0c2lkZURlbHRh
cyBzaGFwZURlbHRhczsKKyAgICBpZiAoU2hhcGVPdXRzaWRlSW5mbyogc2hhcGVPdXRzaWRlSW5m
byA9IG5ld0Zsb2F0LT5yZW5kZXJlcigpLnNoYXBlT3V0c2lkZUluZm8oKSkgewogICAgICAgICBM
YXlvdXRVbml0IGxpbmVIZWlnaHQgPSBtX2Jsb2NrLmxpbmVIZWlnaHQobV9pc0ZpcnN0TGluZSwg
bV9ibG9jay5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0
aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7Ci0gICAgICAgIHNoYXBlT3V0
c2lkZUluZm8tPnVwZGF0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUobV9ibG9jaywgKm5l
d0Zsb2F0LCBtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgbGluZUhlaWdodCk7CisgICAgICAgIHNo
YXBlRGVsdGFzID0gc2hhcGVPdXRzaWRlSW5mby0+Y29tcHV0ZURlbHRhc0ZvckNvbnRhaW5pbmdC
bG9ja0xpbmUobV9ibG9jaywgKm5ld0Zsb2F0LCBtX2Jsb2NrLmxvZ2ljYWxIZWlnaHQoKSwgbGlu
ZUhlaWdodCk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCBMaW5lV2lk
dGg6OnNocmlua0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChGbG9hdGluZ09iamVj
dCogbmV3RmxvYXQKICAgICAgICAgaWYgKHNob3VsZEluZGVudFRleHQoKSAmJiBtX2Jsb2NrLnN0
eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQogICAgICAgICAgICAgbmV3TGVmdCArPSBm
bG9vclRvSW50KG1fYmxvY2sudGV4dEluZGVudE9mZnNldCgpKTsKICNpZiBFTkFCTEUoQ1NTX1NI
QVBFUykKLSAgICAgICAgaWYgKHNoYXBlT3V0c2lkZUluZm8pIHsKLSAgICAgICAgICAgIGlmIChz
aGFwZU91dHNpZGVJbmZvLT5saW5lT3ZlcmxhcHNTaGFwZSgpKQotICAgICAgICAgICAgICAgIG5l
d0xlZnQgKz0gc2hhcGVPdXRzaWRlSW5mby0+cmlnaHRNYXJnaW5Cb3hEZWx0YSgpOworICAgICAg
ICBpZiAoc2hhcGVEZWx0YXMuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICBpZiAoc2hhcGVEZWx0
YXMubGluZU92ZXJsYXBzU2hhcGUoKSkKKyAgICAgICAgICAgICAgICBuZXdMZWZ0ICs9IHNoYXBl
RGVsdGFzLnJpZ2h0TWFyZ2luQm94RGVsdGEoKTsKICAgICAgICAgICAgIGVsc2UgLy8gSWYgdGhl
IGxpbmUgZG9lc24ndCBvdmVybGFwIHRoZSBzaGFwZSwgdGhlbiB3ZSBuZWVkIHRvIGFjdCBhcyBp
ZiB0aGlzIGZsb2F0IGRpZG4ndCBleGlzdC4KICAgICAgICAgICAgICAgICBuZXdMZWZ0ID0gbV9s
ZWZ0OwogICAgICAgICB9CkBAIC0xMDgsOSArMTA4LDkgQEAgdm9pZCBMaW5lV2lkdGg6OnNocmlu
a0F2YWlsYWJsZVdpZHRoRm9yTmV3RmxvYXRJZk5lZWRlZChGbG9hdGluZ09iamVjdCogbmV3Rmxv
YXQKICAgICAgICAgaWYgKHNob3VsZEluZGVudFRleHQoKSAmJiAhbV9ibG9jay5zdHlsZSgpLmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKICAgICAgICAgICAgIG5ld1JpZ2h0IC09IGZsb29yVG9J
bnQobV9ibG9jay50ZXh0SW5kZW50T2Zmc2V0KCkpOwogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQot
ICAgICAgICBpZiAoc2hhcGVPdXRzaWRlSW5mbykgewotICAgICAgICAgICAgaWYgKHNoYXBlT3V0
c2lkZUluZm8tPmxpbmVPdmVybGFwc1NoYXBlKCkpCi0gICAgICAgICAgICAgICAgbmV3UmlnaHQg
Kz0gc2hhcGVPdXRzaWRlSW5mby0+bGVmdE1hcmdpbkJveERlbHRhKCk7CisgICAgICAgIGlmIChz
aGFwZURlbHRhcy5pc1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGlmIChzaGFwZURlbHRhcy5saW5l
T3ZlcmxhcHNTaGFwZSgpKQorICAgICAgICAgICAgICAgIG5ld1JpZ2h0ICs9IHNoYXBlRGVsdGFz
LmxlZnRNYXJnaW5Cb3hEZWx0YSgpOwogICAgICAgICAgICAgZWxzZSAvLyBJZiB0aGUgbGluZSBk
b2Vzbid0IG92ZXJsYXAgdGhlIHNoYXBlLCB0aGVuIHdlIG5lZWQgdG8gYWN0IGFzIGlmIHRoaXMg
ZmxvYXQgZGlkbid0IGV4aXN0LgogICAgICAgICAgICAgICAgIG5ld1JpZ2h0ID0gbV9yaWdodDsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9T
aGFwZU91dHNpZGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHAKaW5kZXggOTQ1ZjdlYzMzZjA3ZTU1YjIxMDgxMWZkYWQyNTRjYTU0
ZGEzOWU3Ny4uMzRmMWJhMTljMjcwYjRlYTVlM2JjZmNlNTE0MjY3MDhiNWM2Yzg5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8u
Y3BwCkBAIC0zMDMsNDIgKzMwMywzOSBAQCBib29sIFNoYXBlT3V0c2lkZUluZm86OmlzRW5hYmxl
ZEZvcihjb25zdCBSZW5kZXJCb3gmIGJveCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
U2hhcGVPdXRzaWRlSW5mbzo6dXBkYXRlRGVsdGFzRm9yQ29udGFpbmluZ0Jsb2NrTGluZShjb25z
dCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9jaywgY29uc3QgRmxvYXRpbmdPYmplY3Qm
IGZsb2F0aW5nT2JqZWN0LCBMYXlvdXRVbml0IGxpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdo
dCkKK1NoYXBlT3V0c2lkZURlbHRhcyBTaGFwZU91dHNpZGVJbmZvOjpjb21wdXRlRGVsdGFzRm9y
Q29udGFpbmluZ0Jsb2NrTGluZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGNvbnRhaW5pbmdCbG9j
aywgY29uc3QgRmxvYXRpbmdPYmplY3QmIGZsb2F0aW5nT2JqZWN0LCBMYXlvdXRVbml0IGxpbmVU
b3AsIExheW91dFVuaXQgbGluZUhlaWdodCkKIHsKICAgICBBU1NFUlQobGluZUhlaWdodCA+PSAw
KTsKLQogICAgIExheW91dFVuaXQgYm9yZGVyQm94VG9wID0gY29udGFpbmluZ0Jsb2NrLmxvZ2lj
YWxUb3BGb3JGbG9hdCgmZmxvYXRpbmdPYmplY3QpICsgY29udGFpbmluZ0Jsb2NrLm1hcmdpbkJl
Zm9yZUZvckNoaWxkKG1fcmVuZGVyZXIpOwogICAgIExheW91dFVuaXQgYm9yZGVyQm94TGluZVRv
cCA9IGxpbmVUb3AgLSBib3JkZXJCb3hUb3A7CiAKLSAgICBpZiAoaXNTaGFwZURpcnR5KCkgfHwg
bV9ib3JkZXJCb3hMaW5lVG9wICE9IGJvcmRlckJveExpbmVUb3AgfHwgbV9saW5lSGVpZ2h0ICE9
IGxpbmVIZWlnaHQpIHsKLSAgICAgICAgbV9ib3JkZXJCb3hMaW5lVG9wID0gYm9yZGVyQm94TGlu
ZVRvcDsKLSAgICAgICAgbV9yZWZlcmVuY2VCb3hMaW5lVG9wID0gYm9yZGVyQm94TGluZVRvcCAt
IGxvZ2ljYWxUb3BPZmZzZXQoKTsKLSAgICAgICAgbV9saW5lSGVpZ2h0ID0gbGluZUhlaWdodDsK
LQorICAgIGlmIChpc1NoYXBlRGlydHkoKSB8fCAhbV9zaGFwZU91dHNpZGVEZWx0YXMuaXNGb3JM
aW5lKGJvcmRlckJveExpbmVUb3AsIGxpbmVIZWlnaHQpKSB7CisgICAgICAgIExheW91dFVuaXQg
cmVmZXJlbmNlQm94TGluZVRvcCA9IGJvcmRlckJveExpbmVUb3AgLSBsb2dpY2FsVG9wT2Zmc2V0
KCk7CiAgICAgICAgIExheW91dFVuaXQgZmxvYXRNYXJnaW5Cb3hXaWR0aCA9IGNvbnRhaW5pbmdC
bG9jay5sb2dpY2FsV2lkdGhGb3JGbG9hdCgmZmxvYXRpbmdPYmplY3QpOwogCi0gICAgICAgIGlm
IChjb21wdXRlZFNoYXBlKCkubGluZU92ZXJsYXBzU2hhcGVNYXJnaW5Cb3VuZHMobV9yZWZlcmVu
Y2VCb3hMaW5lVG9wLCBtX2xpbmVIZWlnaHQpKSB7CisgICAgICAgIGlmIChjb21wdXRlZFNoYXBl
KCkubGluZU92ZXJsYXBzU2hhcGVNYXJnaW5Cb3VuZHMocmVmZXJlbmNlQm94TGluZVRvcCwgbGlu
ZUhlaWdodCkpIHsKICAgICAgICAgICAgIExpbmVTZWdtZW50IHNlZ21lbnQgPSBjb21wdXRlZFNo
YXBlKCkuZ2V0RXhjbHVkZWRJbnRlcnZhbCgoYm9yZGVyQm94TGluZVRvcCAtIGxvZ2ljYWxUb3BP
ZmZzZXQoKSksIHN0ZDo6bWluKGxpbmVIZWlnaHQsIHNoYXBlTG9naWNhbEJvdHRvbSgpIC0gYm9y
ZGVyQm94TGluZVRvcCkpOwogICAgICAgICAgICAgaWYgKHNlZ21lbnQuaXNWYWxpZCkgewogICAg
ICAgICAgICAgICAgIExheW91dFVuaXQgbG9naWNhbExlZnRNYXJnaW4gPSBjb250YWluaW5nQmxv
Y2suc3R5bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb250YWluaW5nQmxvY2subWFy
Z2luU3RhcnRGb3JDaGlsZChtX3JlbmRlcmVyKSA6IGNvbnRhaW5pbmdCbG9jay5tYXJnaW5FbmRG
b3JDaGlsZChtX3JlbmRlcmVyKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJhd0xlZnRN
YXJnaW5Cb3hEZWx0YSA9IHNlZ21lbnQubG9naWNhbExlZnQgKyBsb2dpY2FsTGVmdE9mZnNldCgp
ICsgbG9naWNhbExlZnRNYXJnaW47Ci0gICAgICAgICAgICAgICAgbV9sZWZ0TWFyZ2luQm94RGVs
dGEgPSBjbGFtcFRvPExheW91dFVuaXQ+KHJhd0xlZnRNYXJnaW5Cb3hEZWx0YSwgTGF5b3V0VW5p
dCgpLCBmbG9hdE1hcmdpbkJveFdpZHRoKTsKKyAgICAgICAgICAgICAgICBMYXlvdXRVbml0IGxl
ZnRNYXJnaW5Cb3hEZWx0YSA9IGNsYW1wVG88TGF5b3V0VW5pdD4ocmF3TGVmdE1hcmdpbkJveERl
bHRhLCBMYXlvdXRVbml0KCksIGZsb2F0TWFyZ2luQm94V2lkdGgpOwogCiAgICAgICAgICAgICAg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHRNYXJnaW4gPSBjb250YWluaW5nQmxvY2suc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBjb250YWluaW5nQmxvY2subWFyZ2luRW5kRm9y
Q2hpbGQobV9yZW5kZXJlcikgOiBjb250YWluaW5nQmxvY2subWFyZ2luU3RhcnRGb3JDaGlsZCht
X3JlbmRlcmVyKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJhd1JpZ2h0TWFyZ2luQm94
RGVsdGEgPSBzZWdtZW50LmxvZ2ljYWxSaWdodCArIGxvZ2ljYWxMZWZ0T2Zmc2V0KCkgLSBjb250
YWluaW5nQmxvY2subG9naWNhbFdpZHRoRm9yQ2hpbGQobV9yZW5kZXJlcikgLSBsb2dpY2FsUmln
aHRNYXJnaW47Ci0gICAgICAgICAgICAgICAgbV9yaWdodE1hcmdpbkJveERlbHRhID0gY2xhbXBU
bzxMYXlvdXRVbml0PihyYXdSaWdodE1hcmdpbkJveERlbHRhLCAtZmxvYXRNYXJnaW5Cb3hXaWR0
aCwgTGF5b3V0VW5pdCgpKTsKLSAgICAgICAgICAgICAgICBtX2xpbmVPdmVybGFwc1NoYXBlID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgTGF5b3V0VW5p
dCByaWdodE1hcmdpbkJveERlbHRhID0gY2xhbXBUbzxMYXlvdXRVbml0PihyYXdSaWdodE1hcmdp
bkJveERlbHRhLCAtZmxvYXRNYXJnaW5Cb3hXaWR0aCwgTGF5b3V0VW5pdCgpKTsKKworICAgICAg
ICAgICAgICAgIG1fc2hhcGVPdXRzaWRlRGVsdGFzID0gU2hhcGVPdXRzaWRlRGVsdGFzKGxlZnRN
YXJnaW5Cb3hEZWx0YSwgcmlnaHRNYXJnaW5Cb3hEZWx0YSwgdHJ1ZSwgYm9yZGVyQm94TGluZVRv
cCwgbGluZUhlaWdodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fc2hhcGVPdXRzaWRlRGVs
dGFzOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gTGluZXMgdGhhdCBk
byBub3Qgb3ZlcmxhcCB0aGUgc2hhcGUgc2hvdWxkIGFjdCBhcyBpZiB0aGUgZmxvYXQKICAgICAg
ICAgLy8gd2Fzbid0IHRoZXJlIGZvciBsYXlvdXQgcHVycG9zZXMuIFNvIHdlIHNldCB0aGUgZGVs
dGFzIHRvIHJlbW92ZSB0aGUKICAgICAgICAgLy8gZW50aXJlIHdpZHRoIG9mIHRoZSBmbG9hdAot
ICAgICAgICBtX2xlZnRNYXJnaW5Cb3hEZWx0YSA9IGZsb2F0TWFyZ2luQm94V2lkdGg7Ci0gICAg
ICAgIG1fcmlnaHRNYXJnaW5Cb3hEZWx0YSA9IC1mbG9hdE1hcmdpbkJveFdpZHRoOwotICAgICAg
ICBtX2xpbmVPdmVybGFwc1NoYXBlID0gZmFsc2U7CisgICAgICAgIG1fc2hhcGVPdXRzaWRlRGVs
dGFzID0gU2hhcGVPdXRzaWRlRGVsdGFzKGZsb2F0TWFyZ2luQm94V2lkdGgsIC1mbG9hdE1hcmdp
bkJveFdpZHRoLCBmYWxzZSwgYm9yZGVyQm94TGluZVRvcCwgbGluZUhlaWdodCk7CiAgICAgfQor
CisgICAgcmV0dXJuIG1fc2hhcGVPdXRzaWRlRGVsdGFzOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCmluZGV4IDcxYmVi
MDY0NDE1ODQ2M2RlNmE4OWY4ZDU3YjE1YTVmM2EwNjgxYjcuLmE0OGQ5YzliNjY2MDJlYzRjMjAy
Y2FiNzJjMTFhN2RjZGExNDc0NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5oCkBAIC00MywyMiArNDMsNTggQEAgY2xhc3MgUmVu
ZGVyQm94OwogY2xhc3MgU3R5bGVJbWFnZTsKIGNsYXNzIEZsb2F0aW5nT2JqZWN0OwogCitjbGFz
cyBTaGFwZU91dHNpZGVEZWx0YXMgZmluYWwgeworcHVibGljOgorICAgIFNoYXBlT3V0c2lkZURl
bHRhcygpCisgICAgICAgIDogbV9sZWZ0TWFyZ2luQm94RGVsdGEoMCkKKyAgICAgICAgLCBtX3Jp
Z2h0TWFyZ2luQm94RGVsdGEoMCkKKyAgICAgICAgLCBtX2JvcmRlckJveExpbmVUb3AoMCkKKyAg
ICAgICAgLCBtX2xpbmVIZWlnaHQoMCkKKyAgICAgICAgLCBtX2xpbmVPdmVybGFwc1NoYXBlKGZh
bHNlKQorICAgICAgICAsIG1faXNWYWxpZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgU2hh
cGVPdXRzaWRlRGVsdGFzKExheW91dFVuaXQgbGVmdE1hcmdpbkJveERlbHRhLCBMYXlvdXRVbml0
IHJpZ2h0TWFyZ2luQm94RGVsdGEsIGJvb2wgbGluZU92ZXJsYXBzU2hhcGUsIExheW91dFVuaXQg
Ym9yZGVyQm94TGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KQorICAgICAgICA6IG1fbGVm
dE1hcmdpbkJveERlbHRhKGxlZnRNYXJnaW5Cb3hEZWx0YSkKKyAgICAgICAgLCBtX3JpZ2h0TWFy
Z2luQm94RGVsdGEocmlnaHRNYXJnaW5Cb3hEZWx0YSkKKyAgICAgICAgLCBtX2JvcmRlckJveExp
bmVUb3AoYm9yZGVyQm94TGluZVRvcCkKKyAgICAgICAgLCBtX2xpbmVIZWlnaHQobGluZUhlaWdo
dCkKKyAgICAgICAgLCBtX2xpbmVPdmVybGFwc1NoYXBlKGxpbmVPdmVybGFwc1NoYXBlKQorICAg
ICAgICAsIG1faXNWYWxpZCh0cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIGlzRm9yTGlu
ZShMYXlvdXRVbml0IGJvcmRlckJveExpbmVUb3AsIExheW91dFVuaXQgbGluZUhlaWdodCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2lzVmFsaWQgJiYgbV9ib3JkZXJCb3hMaW5lVG9wID09IGJv
cmRlckJveExpbmVUb3AgJiYgbV9saW5lSGVpZ2h0ID09IGxpbmVIZWlnaHQ7CisgICAgfQorCisg
ICAgYm9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbV9pc1ZhbGlkOyB9CisgICAgTGF5b3V0VW5pdCBs
ZWZ0TWFyZ2luQm94RGVsdGEoKSB7IEFTU0VSVChtX2lzVmFsaWQpOyByZXR1cm4gbV9sZWZ0TWFy
Z2luQm94RGVsdGE7IH0KKyAgICBMYXlvdXRVbml0IHJpZ2h0TWFyZ2luQm94RGVsdGEoKSB7IEFT
U0VSVChtX2lzVmFsaWQpOyByZXR1cm4gbV9yaWdodE1hcmdpbkJveERlbHRhOyB9CisgICAgYm9v
bCBsaW5lT3ZlcmxhcHNTaGFwZSgpIHsgQVNTRVJUKG1faXNWYWxpZCk7IHJldHVybiBtX2xpbmVP
dmVybGFwc1NoYXBlOyB9CisKK3ByaXZhdGU6CisgICAgTGF5b3V0VW5pdCBtX2xlZnRNYXJnaW5C
b3hEZWx0YTsKKyAgICBMYXlvdXRVbml0IG1fcmlnaHRNYXJnaW5Cb3hEZWx0YTsKKyAgICBMYXlv
dXRVbml0IG1fYm9yZGVyQm94TGluZVRvcDsKKyAgICBMYXlvdXRVbml0IG1fbGluZUhlaWdodDsK
KyAgICBib29sIG1fbGluZU92ZXJsYXBzU2hhcGU7CisgICAgYm9vbCBtX2lzVmFsaWQ7Cit9Owor
CiBjbGFzcyBTaGFwZU91dHNpZGVJbmZvIGZpbmFsIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKICAgICBTaGFwZU91dHNpZGVJbmZvKGNvbnN0IFJlbmRlckJveCYgcmVu
ZGVyZXIpCiAgICAgICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKLSAgICAgICAgLCBtX2xpbmVP
dmVybGFwc1NoYXBlKGZhbHNlKQogICAgIHsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0Vu
YWJsZWRGb3IoY29uc3QgUmVuZGVyQm94Jik7CiAKLSAgICBMYXlvdXRVbml0IGxlZnRNYXJnaW5C
b3hEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdE1hcmdpbkJveERlbHRhOyB9Ci0gICAgTGF5
b3V0VW5pdCByaWdodE1hcmdpbkJveERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9yaWdodE1hcmdp
bkJveERlbHRhOyB9Ci0gICAgYm9vbCBsaW5lT3ZlcmxhcHNTaGFwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZU92ZXJsYXBzU2hhcGU7IH0KLQotICAgIHZvaWQgdXBkYXRlRGVsdGFzRm9yQ29udGFp
bmluZ0Jsb2NrTGluZShjb25zdCBSZW5kZXJCbG9ja0Zsb3cmLCBjb25zdCBGbG9hdGluZ09iamVj
dCYsIExheW91dFVuaXQgbGluZVRvcCwgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KTsKKyAgICBTaGFw
ZU91dHNpZGVEZWx0YXMgY29tcHV0ZURlbHRhc0ZvckNvbnRhaW5pbmdCbG9ja0xpbmUoY29uc3Qg
UmVuZGVyQmxvY2tGbG93JiwgY29uc3QgRmxvYXRpbmdPYmplY3QmLCBMYXlvdXRVbml0IGxpbmVU
b3AsIExheW91dFVuaXQgbGluZUhlaWdodCk7CiAKICAgICB2b2lkIHNldFJlZmVyZW5jZUJveExv
Z2ljYWxTaXplKExheW91dFNpemUpOwogCkBAIC02OSwxMCArMTA1LDYgQEAgcHVibGljOgogICAg
IExheW91dFVuaXQgc2hhcGVMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZFNo
YXBlKCkuc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKS53aWR0aCgpOyB9CiAgICAgTGF5
b3V0VW5pdCBzaGFwZUxvZ2ljYWxIZWlnaHQoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZFNoYXBl
KCkuc2hhcGVNYXJnaW5Mb2dpY2FsQm91bmRpbmdCb3goKS5oZWlnaHQoKTsgfQogCi0gICAgTGF5
b3V0VW5pdCBsb2dpY2FsTGluZVRvcCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVmZXJlbmNlQm94TGlu
ZVRvcCArIGxvZ2ljYWxUb3BPZmZzZXQoKTsgfQotICAgIExheW91dFVuaXQgbG9naWNhbExpbmVC
b3R0b20oKSBjb25zdCB7IHJldHVybiBtX3JlZmVyZW5jZUJveExpbmVUb3AgKyBtX2xpbmVIZWln
aHQgKyBsb2dpY2FsVG9wT2Zmc2V0KCk7IH0KLSAgICBMYXlvdXRVbml0IGxvZ2ljYWxMaW5lQm90
dG9tKExheW91dFVuaXQgbGluZUhlaWdodCkgY29uc3QgeyByZXR1cm4gbV9yZWZlcmVuY2VCb3hM
aW5lVG9wICsgbGluZUhlaWdodCArIGxvZ2ljYWxUb3BPZmZzZXQoKTsgfQotCiAgICAgdm9pZCBt
YXJrU2hhcGVBc0RpcnR5KCkgeyBtX3NoYXBlID0gbnVsbHB0cjsgfQogICAgIGJvb2wgaXNTaGFw
ZURpcnR5KCkgeyByZXR1cm4gIW1fc2hhcGU7IH0KIApAQCAtMTEwLDEzICsxNDIsOCBAQCBwcml2
YXRlOgogCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IG1fc2hhcGU7CiAgICAg
TGF5b3V0U2l6ZSBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplOwotICAgIExheW91dFVuaXQgbV9y
ZWZlcmVuY2VCb3hMaW5lVG9wOwotICAgIExheW91dFVuaXQgbV9saW5lSGVpZ2h0OwogCi0gICAg
TGF5b3V0VW5pdCBtX2xlZnRNYXJnaW5Cb3hEZWx0YTsKLSAgICBMYXlvdXRVbml0IG1fcmlnaHRN
YXJnaW5Cb3hEZWx0YTsKLSAgICBMYXlvdXRVbml0IG1fYm9yZGVyQm94TGluZVRvcDsKLSAgICBi
b29sIG1fbGluZU92ZXJsYXBzU2hhcGU7CisgICAgU2hhcGVPdXRzaWRlRGVsdGFzIG1fc2hhcGVP
dXRzaWRlRGVsdGFzOwogfTsKIAogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>