<?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>135066</bug_id>
          
          <creation_ts>2014-07-18 13:29:06 -0700</creation_ts>
          <short_desc>Remove JSPropertyNameIterator</short_desc>
          <delta_ts>2014-07-25 14:27:11 -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>JavaScriptCore</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>
          <dependson>134142</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023339</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-18 13:29:06 -0700</bug_when>
    <thetext>After bug 134142 is fixed, JSPropertyNameEnumerator will have supplanted JSPropertyNameIterator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024908</commentid>
    <comment_count>1</comment_count>
      <attachid>235541</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-25 13:59:09 -0700</bug_when>
    <thetext>Created attachment 235541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024909</commentid>
    <comment_count>2</comment_count>
      <attachid>235541</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-07-25 14:00:20 -0700</bug_when>
    <thetext>Comment on attachment 235541
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024912</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2014-07-25 14:27:11 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/171614</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235541</attachid>
            <date>2014-07-25 13:59:09 -0700</date>
            <delta_ts>2014-07-25 14:00:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135066-20140725135855.patch</filename>
            <type>text/plain</type>
            <size>63503</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTcxNjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg0IEBA
CisyMDE0LTA3LTI1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3ZlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTA2NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IEpT
UHJvcGVydHlOYW1lRW51bWVyYXRvci4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVy
OgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OmlzQnJhbmNoKToKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbjoKKyAg
ICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlNDOjpjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURlZnNGb3JCeXRl
Y29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAqIGJ5dGVjb2RlL1ByZWNp
c2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0M6OmdldEp1bXBUYXJnZXRzRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0UHJvcGVydHlOYW1lcyk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV4dFByb3Bl
cnR5TmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAq
IGludGVycHJldGVyL1JlZ2lzdGVyLmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAg
KiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfcG5h
bWVzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25leHRfcG5hbWUpOiBE
ZWxldGVkLgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3BfZ2V0X3BuYW1lcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9uZXh0X3BuYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2dldF9ieV9wbmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3BuYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklU
UHJvcGVydHlBY2Nlc3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRf
YnlfcG5hbWUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2dldF9i
eV9wbmFtZSk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcDoKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6
OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6IERlbGV0ZWQuCisgICAgICAgICogbGxpbnQv
TExJbnRTbG93UGF0aHMuaDoKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpkZXN0cm95KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6Z2V0KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OnNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpzZXRDYWNoZWRTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjpjYWNoZWRTdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpzZXRDYWNoZWRQcm90b3R5cGVDaGFpbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OkpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNhY2hlZFByb3Rv
dHlwZUNoYWluKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6ZmluaXNoQ3JlYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpSZWdpc3Rlcjo6cHJv
cGVydHlOYW1lSXRlcmF0b3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVSYXJl
RGF0YTo6ZW51bWVyYXRpb25DYWNoZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVJhcmVEYXRhOjpzZXRFbnVtZXJhdGlvbkNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpzZXRFbnVtZXJhdGlvbkNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjplbnVtZXJhdGlvbkNhY2hlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZVJhcmVEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlUmFyZURhdGE6OnZpc2l0
Q2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlUmFyZURhdGEuaDoKKyAgICAg
ICAgKiBydW50aW1lL1ZNLmNwcDoKKyAgICAgICAgKEpTQzo6Vk06OlZNKToKKwogMjAxNC0wNy0y
NSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggMzItYml0
IGJ1aWxkIGJyZWFrYWdlIGZvciB0eXBlIHByb2ZpbGluZwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLm9yZGVyCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjM4LDEzICsxNjM4LDEwIEBAIF9fWk4zSlNDM0pJVDE5ZW1pdF9jb21wYXJlQW5kSnVtcEVOU184
T3AKIF9fWk4zSlNDM0pJVDE3ZW1pdF9vcF9sb29wX2hpbnRFUE5TXzExSW5zdHJ1Y3Rpb25FCiBf
X1pOM0pTQzhXYXRjaGRvZzlpc0VuYWJsZWRFdgogX19aTjNKU0MzSklUMTZlbWl0X29wX2plcV9u
dWxsRVBOU18xMUluc3RydWN0aW9uRQotX19aTjNKU0MzSklUMThlbWl0X29wX2dldF9wbmFtZXNF
UE5TXzExSW5zdHJ1Y3Rpb25FCiBfX1pOM0pTQzNKSVQxMWVtaXRfb3Bfam1wRVBOU18xMUluc3Ry
dWN0aW9uRQotX19aTjNKU0MzSklUMjBlbWl0X29wX2dldF9ieV9wbmFtZUVQTlNfMTFJbnN0cnVj
dGlvbkUKIF9fWk4zSlNDM0pJVDIyY29tcGlsZUdldERpcmVjdE9mZnNldEVOU18xMlg4NlJlZ2lz
dGVyczEwUmVnaXN0ZXJJREVTMl9TMl9TMl9OUzBfMTVGaW5hbE9iamVjdE1vZGVFCiBfX1pOM0pT
QzNKSVQxN2VtaXRfb3BfbmV3X2FycmF5RVBOU18xMUluc3RydWN0aW9uRQogX19aTjNKU0MzSklU
MTdlbWl0X29wX25zdHJpY3RlcUVQTlNfMTFJbnN0cnVjdGlvbkUKLV9fWk4zSlNDM0pJVDE4ZW1p
dF9vcF9uZXh0X3BuYW1lRVBOU18xMUluc3RydWN0aW9uRQogX19aTjNKU0MzSklUMTFlbWl0X29w
X2luY0VQTlNfMTFJbnN0cnVjdGlvbkUKIF9fWk4zSlNDM0pJVDEzZW1pdF9vcF9qbGVzc0VQTlNf
MTFJbnN0cnVjdGlvbkUKIF9fWk4zSlNDM0pJVDI0ZW1pdFNsb3dfb3BfY29udmVydF90aGlzRVBO
U18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93Q2FzZUVudHJ5RQpAQCAtMTY2Myw3ICsxNjYwLDYg
QEAgX19aTjNKU0MzSklUMjNlbWl0X2NvbXBhcmVBbmRKdW1wU2xvd0VqagogX19aTjNKU0MxMlg4
NkFzc2VtYmxlcjIzWDg2SW5zdHJ1Y3Rpb25Gb3JtYXR0ZXIxMXR3b0J5dGVPcDY0RU5TMF8xNVR3
b0J5dGVPcGNvZGVJREVpTlNfMTJYODZSZWdpc3RlcnMxMFJlZ2lzdGVySURFCiBfX1pOM0pTQzIz
TWFjcm9Bc3NlbWJsZXJYODZDb21tb24xMmJyYW5jaERvdWJsZUVOUzBfMTVEb3VibGVDb25kaXRp
b25FTlNfMTJYODZSZWdpc3RlcnMxM1hNTVJlZ2lzdGVySURFUzNfCiBfX1pOM0pTQzEyWDg2QXNz
ZW1ibGVyMjNYODZJbnN0cnVjdGlvbkZvcm1hdHRlcjl0d29CeXRlT3BFTlMwXzE1VHdvQnl0ZU9w
Y29kZUlERWlOU18xMlg4NlJlZ2lzdGVyczEwUmVnaXN0ZXJJREUKLV9fWk4zSlNDM0pJVDI0ZW1p
dFNsb3dfb3BfZ2V0X2J5X3BuYW1lRVBOU18xMUluc3RydWN0aW9uRVJQTlNfMTNTbG93Q2FzZUVu
dHJ5RQogX19aTjNKU0MzSklUMjFlbWl0U2xvd19vcF9uc3RyaWN0ZXFFUE5TXzExSW5zdHJ1Y3Rp
b25FUlBOU18xM1Nsb3dDYXNlRW50cnlFCiBfX1pOM0pTQzNKSVQxNWVtaXRTbG93X29wX2luY0VQ
TlNfMTFJbnN0cnVjdGlvbkVSUE5TXzEzU2xvd0Nhc2VFbnRyeUUKIF9fWk4zSlNDM0pJVDE3ZW1p
dFNsb3dfb3Bfamxlc3NFUE5TXzExSW5zdHJ1Y3Rpb25FUlBOU18xM1Nsb3dDYXNlRW50cnlFCkBA
IC0xNjc1LDcgKzE2NzEsNiBAQCBfX1pOM0pTQ0w4Z2V0QnlWYWxFUE5TXzlFeGVjU3RhdGVFTlNf
N0pTCiBfY3RpX29wX3N0cmljdGVxCiBfY3RpX29wX2p0cnVlCiBfY3RpX29wX2lzX29iamVjdAot
X2N0aV9vcF9nZXRfcG5hbWVzCiBfX1pOM0pTQzhKU1N0cmluZzEydG9UaGlzT2JqZWN0RVBOU182
SlNDZWxsRVBOU185RXhlY1N0YXRlRQogX19aTjNKU0MxMlN0cmluZ09iamVjdEMxRVJOU18yVk1F
UE5TXzlTdHJ1Y3R1cmVFCiBfX1pOSzNKU0M2SlNDZWxsMTF0b1ByaW1pdGl2ZUVQTlNfOUV4ZWNT
dGF0ZUVOU18yMlByZWZlcnJlZFByaW1pdGl2ZVR5cGVFCkBAIC00OTQyLDcgKzQ5MzcsNiBAQCBf
bGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pZAogX2xsaW50X3Nsb3dfcGF0aF9kZWxfYnlfaWQKIF9s
bGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbAogX2xsaW50X3Nsb3dfcGF0aF9nZXRfYXJndW1lbnRf
YnlfdmFsCi1fbGxpbnRfc2xvd19wYXRoX2dldF9ieV9wbmFtZQogX2xsaW50X3Nsb3dfcGF0aF9w
dXRfYnlfdmFsCiBfbGxpbnRfc2xvd19wYXRoX2RlbF9ieV92YWwKIF9sbGludF9zbG93X3BhdGhf
cHV0X2J5X2luZGV4CkBAIC00OTcwLDggKzQ5NjQsNiBAQCBfbGxpbnRfc2xvd19wYXRoX3RlYXJf
b2ZmX2FjdGl2YXRpb24KIF9sbGludF9zbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzCiBfbGxp
bnRfc2xvd19wYXRoX3N0cmNhdAogX2xsaW50X3Nsb3dfcGF0aF90b19wcmltaXRpdmUKLV9sbGlu
dF9zbG93X3BhdGhfZ2V0X3BuYW1lcwotX2xsaW50X3Nsb3dfcGF0aF9uZXh0X3BuYW1lCiBfbGxp
bnRfc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZQogX2xsaW50X3Nsb3dfcGF0aF9wb3Bfc2NvcGUK
IF9sbGludF9zbG93X3BhdGhfcHVzaF9uYW1lX3Njb3BlCkBAIC01MDM4LDcgKzUwMzAsNiBAQCBf
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsCiBfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsX291dF9vZl9saW5lCiBfbGxpbnRfb3BfZ2V0X2J5X3ZhbAogX2xs
aW50X29wX2dldF9hcmd1bWVudF9ieV92YWwKLV9sbGludF9vcF9nZXRfYnlfcG5hbWUKIF9sbGlu
dF9vcF9wdXRfYnlfdmFsCiBfbGxpbnRfb3Bfam1wCiBfbGxpbnRfb3BfamVxX251bGwKQEAgLTUw
NTMsNyArNTA0NCw2IEBAIF9sbGludF9vcF9yZXQKIF9sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQK
IF9sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXMKIF9sbGludF9vcF90b19wcmltaXRpdmUKLV9s
bGludF9vcF9uZXh0X3BuYW1lCiBfbGxpbnRfb3BfY2F0Y2gKIF9sbGludF9vcF9nZXRfc2NvcGVk
X3ZhcgogX2xsaW50X29wX3B1dF9zY29wZWRfdmFyCkBAIC01MTExLDcgKzUxMDEsNiBAQCBfbGxp
bnRfb3BfY2FsbF92YXJhcmdzCiBfbGxpbnRfb3BfY2FsbF9ldmFsCiBfbGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQKIF9sbGludF9vcF9zdHJjYXQKLV9sbGludF9vcF9nZXRfcG5hbWVzCiBfbGxp
bnRfb3BfcHVzaF93aXRoX3Njb3BlCiBfbGxpbnRfb3BfcG9wX3Njb3BlCiBfbGxpbnRfb3BfcHVz
aF9uYW1lX3Njb3BlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQmFzaWNCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDggKzUyLDYgQEAgc3RhdGljIGJvb2wgaXNCcmFuY2goT3Bjb2RlSUQgb3Bj
b2RlSUQpCiAgICAgY2FzZSBvcF9zd2l0Y2hfaW1tOgogICAgIGNhc2Ugb3Bfc3dpdGNoX2NoYXI6
CiAgICAgY2FzZSBvcF9zd2l0Y2hfc3RyaW5nOgotICAgIGNhc2Ugb3BfZ2V0X3BuYW1lczoKLSAg
ICBjYXNlIG9wX25leHRfcG5hbWU6CiAgICAgY2FzZSBvcF9jaGVja19oYXNfaW5zdGFuY2U6CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5qc29uCShyZXZpc2lvbiAxNzE2MDgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24JKHdv
cmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDYgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2RlbF9ieV9pZCIsICJsZW5ndGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Z2V0X2J5X3ZhbCIsICJsZW5ndGgiIDogNiB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bf
Z2V0X2FyZ3VtZW50X2J5X3ZhbCIsICJsZW5ndGgiIDogNiB9LAotICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfZ2V0X2J5X3BuYW1lIiwgImxlbmd0aCIgOiA3IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wdXRfYnlfdmFsIiwgImxlbmd0aCIgOiA1IH0sCiAgICAgICAgICAgICB7ICJu
YW1lIiA6ICJvcF9wdXRfYnlfdmFsX2RpcmVjdCIsICJsZW5ndGgiIDogNSB9LAogICAgICAgICAg
ICAgeyAibmFtZSIgOiAib3BfZGVsX2J5X3ZhbCIsICJsZW5ndGgiIDogNCB9LApAQCAtMTA4LDgg
KzEwNyw2IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9jb25zdHJ1Y3RfdmFyYXJncyIs
ICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3Bfc3RyY2F0IiwgImxl
bmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF90b19wcmltaXRpdmUiLCAi
bGVuZ3RoIiA6IDMgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9wbmFtZXMiLCAi
bGVuZ3RoIiA6IDYgfSwKLSAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25leHRfcG5hbWUiLCAi
bGVuZ3RoIiA6IDcgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX3Jlc29sdmVfc2NvcGUi
LCAibGVuZ3RoIiA6IDYgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX2dldF9mcm9tX3Nj
b3BlIiwgImxlbmd0aCIgOiA4IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9nZXRfZnJv
bV9zY29wZV93aXRoX3Byb2ZpbGUiLCAibGVuZ3RoIiA6IDkgfSwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCShyZXZpc2lvbiAxNzE2
MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQ2LDcgKzE0Niw2IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRl
Y29kZU9mZnNldCgKICAgICBjYXNlIG9wX2NhcHR1cmVkX21vdjoKICAgICBjYXNlIG9wX25ld19h
cnJheV93aXRoX3NpemU6CiAgICAgY2FzZSBvcF9jcmVhdGVfdGhpczoKLSAgICBjYXNlIG9wX2dl
dF9wbmFtZXM6CiAgICAgY2FzZSBvcF9kZWxfYnlfaWQ6CiAgICAgY2FzZSBvcF91bnNpZ25lZDog
ewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpOwpAQCAtMTk0LDIwICsxOTMsMTEgQEAgdm9pZCBjb21wdXRl
VXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1
Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGNhc2Ugb3BfZ2V0X2RpcmVjdF9wbmFtZToKLSAgICBjYXNlIG9wX25l
eHRfcG5hbWU6IHsKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNv
ZGVJRCwgaW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxv
Y2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKLSAg
ICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9uLCBvcGNvZGVJRCwgaW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kKTsKLSAgICAgICAgZnVuY3Rvcihjb2RlQmxvY2ssIGluc3RydWN0aW9u
LCBvcGNvZGVJRCwgaW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBjYXNlIG9wX2dldF9ieV9wbmFtZTogeworICAgIGNhc2Ugb3BfZ2V0X2RpcmVj
dF9wbmFtZTogewogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29k
ZUlELCBpbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9j
aywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAg
ICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQpOwogICAgICAgICBmdW5jdG9yKGNvZGVCbG9jaywgaW5zdHJ1Y3Rpb24s
IG9wY29kZUlELCBpbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQpOwotICAgICAgICBmdW5jdG9yKGNv
ZGVCbG9jaywgaW5zdHJ1Y3Rpb24sIG9wY29kZUlELCBpbnN0cnVjdGlvbls2XS51Lm9wZXJhbmQp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2Ugb3Bfc3dpdGNoX3N0cmluZzoKQEAg
LTMxNiw3ICszMDYsNiBAQCB2b2lkIGNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJs
CiAgICAgY2FzZSBvcF9nZXRfZGlyZWN0X3BuYW1lOgogICAgIGNhc2Ugb3BfZ2V0X3N0cnVjdHVy
ZV9wcm9wZXJ0eV9lbnVtZXJhdG9yOgogICAgIGNhc2Ugb3BfbmV4dF9lbnVtZXJhdG9yX3BuYW1l
OgotICAgIGNhc2Ugb3BfbmV4dF9wbmFtZToKICAgICBjYXNlIG9wX3Jlc29sdmVfc2NvcGU6CiAg
ICAgY2FzZSBvcF9zdHJjYXQ6CiAgICAgY2FzZSBvcF90ZWFyX29mZl9hY3RpdmF0aW9uOgpAQCAt
MzQ0LDcgKzMzMyw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2RlQmwK
ICAgICBjYXNlIG9wX2luc3RhbmNlb2Y6CiAgICAgY2FzZSBvcF9nZXRfYnlfdmFsOgogICAgIGNh
c2Ugb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKLSAgICBjYXNlIG9wX2dldF9ieV9wbmFtZToKICAg
ICBjYXNlIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAgIGNhc2Ugb3BfdHlwZW9mOgogICAg
IGNhc2Ugb3BfaXNfdW5kZWZpbmVkOgpAQCAtMzk0LDEyICszODIsNiBAQCB2b2lkIGNvbXB1dGVE
ZWZzRm9yQnl0ZWNvZGVPZmZzZXQoQ29kZUJsCiAgICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgY2FzZSBvcF9nZXRfcG5hbWVzOiB7Ci0gICAgICAgIGZ1bmN0
b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQs
IGluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7Ci0gICAgICAgIGZ1bmN0b3IoY29kZUJsb2NrLCBp
bnN0cnVjdGlvbiwgb3Bjb2RlSUQsIGluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgY2FzZSBvcF9lbnRlcjogewogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsgaS0tOykKICAgICAgICAgICAgIGZ1bmN0b3Io
Y29kZUJsb2NrLCBpbnN0cnVjdGlvbiwgb3Bjb2RlSUQsIHZpcnR1YWxSZWdpc3RlckZvckxvY2Fs
KGkpLm9mZnNldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExOSwxNyArMTExOSw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoCiAgICAgICAgICAgICBkdW1wVmFsdWVQ
cm9maWxpbmcob3V0LCBpdCwgaGFzUHJpbnRlZFByb2ZpbGluZyk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9ieV9wbmFtZTogewotICAgICAgICAg
ICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgcjEgPSAoKytp
dCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwot
ICAgICAgICAgICAgaW50IHIzID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQg
cjQgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByNSA9ICgrK2l0KS0+dS5v
cGVyYW5kOwotICAgICAgICAgICAgcHJpbnRMb2NhdGlvbkFuZE9wKG91dCwgZXhlYywgbG9jYXRp
b24sIGl0LCAiZ2V0X2J5X3BuYW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywgJXMs
ICVzLCAlcywgJXMsICVzIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShy
MSkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjIpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIzKS5kYXRh
KCksIHJlZ2lzdGVyTmFtZShyNCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjUpLmRhdGEoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6
IHsKICAgICAgICAgICAgIGludCByMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAg
aW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CkBAIC0xMzc2LDI5ICsxMzY1LDYgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXBCeXRlY29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcyIs
IHJlZ2lzdGVyTmFtZShyMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUocjEpLmRhdGEoKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX2dldF9wbmFtZXM6IHsK
LSAgICAgICAgICAgIGludCByMCA9IGl0WzFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBy
MSA9IGl0WzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9IGl0WzNdLnUub3BlcmFu
ZDsKLSAgICAgICAgICAgIGludCByMyA9IGl0WzRdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGlu
dCBvZmZzZXQgPSBpdFs1XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5k
T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJnZXRfcG5hbWVzIik7Ci0gICAgICAgICAgICBv
dXQucHJpbnRmKCIlcywgJXMsICVzLCAlcywgJWQoLT4lZCkiLCByZWdpc3Rlck5hbWUocjApLmRh
dGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMikuZGF0YSgpLCBy
ZWdpc3Rlck5hbWUocjMpLmRhdGEoKSwgb2Zmc2V0LCBsb2NhdGlvbiArIG9mZnNldCk7Ci0gICAg
ICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpIC0gMTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfbmV4dF9wbmFtZTogewotICAg
ICAgICAgICAgaW50IGRlc3QgPSBpdFsxXS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBpbnQgYmFz
ZSA9IGl0WzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBpID0gaXRbM10udS5vcGVyYW5k
OwotICAgICAgICAgICAgaW50IHNpemUgPSBpdFs0XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBp
bnQgaXRlciA9IGl0WzVdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBpdFs2
XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBs
b2NhdGlvbiwgaXQsICJuZXh0X3BuYW1lIik7Ci0gICAgICAgICAgICBvdXQucHJpbnRmKCIlcywg
JXMsICVzLCAlcywgJXMsICVkKC0+JWQpIiwgcmVnaXN0ZXJOYW1lKGRlc3QpLmRhdGEoKSwgcmVn
aXN0ZXJOYW1lKGJhc2UpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGkpLmRhdGEoKSwgcmVnaXN0ZXJO
YW1lKHNpemUpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGl0ZXIpLmRhdGEoKSwgb2Zmc2V0LCBsb2Nh
dGlvbiArIG9mZnNldCk7Ci0gICAgICAgICAgICBpdCArPSBPUENPREVfTEVOR1RIKG9wX25leHRf
cG5hbWUpIC0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfZ2V0X2VudW1lcmFibGVfbGVuZ3RoOiB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gaXRbMV0u
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGJhc2UgPSBpdFsyXS51Lm9wZXJhbmQ7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBU
YXJnZXRzLmNwcAkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDEyICs3
Myw2IEBAIHN0YXRpYyB2b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmYKICAgICAgICAg
b3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2Ugb3BfZ2V0X3BuYW1lczoKLSAgICAgICAgb3V0LmFw
cGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbNV0udS5vcGVyYW5kKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBvcF9uZXh0X3BuYW1lOgotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgY3VycmVudFs2XS51Lm9wZXJhbmQpOwotICAgICAgICBicmVhazsKICAgICBjYXNl
IG9wX2NoZWNrX2hhc19pbnN0YW5jZToKICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIGN1cnJlbnRbNF0udS5vcGVyYW5kKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyODYsMzMg
KzIyODYsNiBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGVzKGluCiAgICAg
ZW1pdENvbXBsZXhQb3BTY29wZXMoJm1fc2NvcGVDb250ZXh0U3RhY2subGFzdCgpLCAmbV9zY29w
ZUNvbnRleHRTdGFjay5sYXN0KCkgLSBzY29wZURlbHRhKTsKIH0KIAotUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRQcm9wZXJ0eU5hbWVzKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogaSwgUmVnaXN0ZXJJRCogc2l6ZSwgTGFiZWwqIGJy
ZWFrVGFyZ2V0KQotewotICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsK
LQotICAgIGVtaXRPcGNvZGUob3BfZ2V0X3BuYW1lcyk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChpLT5pbmRleCgpKTsKLSAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoc2l6ZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGJyZWFrVGFyZ2V0LT5iaW5kKGJlZ2luLCBpbnN0cnVjdGlvbnMoKS5zaXplKCkpKTsKLSAgICBy
ZXR1cm4gZHN0OwotfQotCi1SZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5leHRQ
cm9wZXJ0eU5hbWUoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklE
KiBpLCBSZWdpc3RlcklEKiBzaXplLCBSZWdpc3RlcklEKiBpdGVyLCBMYWJlbCogdGFyZ2V0KQot
ewotICAgIHNpemVfdCBiZWdpbiA9IGluc3RydWN0aW9ucygpLnNpemUoKTsKLQotICAgIGVtaXRP
cGNvZGUob3BfbmV4dF9wbmFtZSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5k
ZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwotICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChpLT5pbmRleCgpKTsKLSAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoc2l6ZS0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGl0ZXItPmluZGV4
KCkpOwotICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0YXJnZXQtPmJpbmQoYmVnaW4sIGluc3Ry
dWN0aW9ucygpLnNpemUoKSkpOwotICAgIHJldHVybiBkc3Q7Ci19Ci0KIFRyeURhdGEqIEJ5dGVj
b2RlR2VuZXJhdG9yOjpwdXNoVHJ5KExhYmVsKiBzdGFydCkKIHsKICAgICBUcnlEYXRhIHRyeURh
dGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ4Nyw5ICs0ODcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUGFzc1JlZlB0cjxM
YWJlbD4gZW1pdEp1bXBJZk5vdEZ1bmN0aW9uQXBwbHkoUmVnaXN0ZXJJRCogY29uZCwgTGFiZWwq
IHRhcmdldCk7CiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlcyhpbnQgdGFyZ2V0U2NvcGVEZXB0
aCk7CiAKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldFByb3BlcnR5TmFtZXMoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBpLCBSZWdpc3RlcklEKiBzaXpl
LCBMYWJlbCogYnJlYWtUYXJnZXQpOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0TmV4dFByb3Bl
cnR5TmFtZShSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZ2lzdGVySUQqIGks
IFJlZ2lzdGVySUQqIHNpemUsIFJlZ2lzdGVySUQqIGl0ZXIsIExhYmVsKiB0YXJnZXQpOwotCiAg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRIYXNJbmRleGVkUHJvcGVydHkoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0SGFzU3RydWN0dXJlUHJvcGVydHkoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBSZWdpc3RlcklEKiBwcm9wZXJ0eU5hbWUsIFJlZ2lzdGVySUQqIGVudW1l
cmF0b3IpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0SGFzR2VuZXJpY1Byb3BlcnR5KFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVnaXN0ZXJJRCogcHJvcGVydHlOYW1lKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNiBAQAog
I2luY2x1ZGUgIkpTQm91bmRGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgiCiAj
aW5jbHVkZSAiSlNOb3RBbk9iamVjdC5oIgotI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCIKICNpbmNsdWRlICJKU1N0YWNrSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9SZWdpc3Rlci5oCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NyArMzksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xh
c3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTT2JqZWN0OwotICAgIGNsYXNzIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I7CiAgICAgY2xhc3MgSlNTY29wZTsKIAogICAgIHR5cGVkZWYgRXhlY1N0
YXRlIENhbGxGcmFtZTsKQEAgLTYzLDcgKzYyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lKCkgY29uc3Q7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrKCkgY29uc3Q7CiAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlvbigpIGNvbnN0OwotICAgICAg
ICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBwcm9wZXJ0eU5hbWVJdGVyYXRvcigpIGNvbnN0Owog
ICAgICAgICBKU1Njb3BlKiBzY29wZSgpIGNvbnN0OwogICAgICAgICBpbnQzMl90IHVuYm94ZWRJ
bnQzMigpIGNvbnN0OwogICAgICAgICBpbnQ2NF90IHVuYm94ZWRJbnQ1MigpIGNvbnN0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksOCArMjE5
LDYgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCiAgICAgICAgIERFRklORV9PUChvcF9nZXRfYnlf
dmFsKQogICAgICAgICBERUZJTkVfT1Aob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKLSAgICAgICAg
REVGSU5FX09QKG9wX2dldF9ieV9wbmFtZSkKLSAgICAgICAgREVGSU5FX09QKG9wX2dldF9wbmFt
ZXMpCiAgICAgICAgIERFRklORV9PUChvcF9jaGVja19oYXNfaW5zdGFuY2UpCiAgICAgICAgIERF
RklORV9PUChvcF9pbnN0YW5jZW9mKQogICAgICAgICBERUZJTkVfT1Aob3BfaXNfdW5kZWZpbmVk
KQpAQCAtMjU4LDcgKzI1Niw2IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX25ld19mdW5jX2V4cCkKICAgICAgICAgREVGSU5FX09QKG9w
X25ld19vYmplY3QpCiAgICAgICAgIERFRklORV9PUChvcF9uZXdfcmVnZXhwKQotICAgICAgICBE
RUZJTkVfT1Aob3BfbmV4dF9wbmFtZSkKICAgICAgICAgREVGSU5FX09QKG9wX25vdCkKICAgICAg
ICAgREVGSU5FX09QKG9wX25zdHJpY3RlcSkKICAgICAgICAgREVGSU5FX09QKG9wX3BvcF9zY29w
ZSkKQEAgLTM5MSw3ICszODgsNiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9nZXRfYnlfdmFsKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKLSAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX2dldF9ieV9wbmFtZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2No
ZWNrX2hhc19pbnN0YW5jZSkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX2luc3RhbmNl
b2YpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9qZmFsc2UpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmgJKHJldmlzaW9uIDE3MTYwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
ICAgICBjbGFzcyBKSVQ7Ci0gICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKICAgICBj
bGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTU2Nv
cGU7CkBAIC00ODMsNyArNDgyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1p
dF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVt
aXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhbChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0
X2J5X3BuYW1lKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9pbml0X2xhenlf
cmVnKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9jaGVja19oYXNfaW5zdGFu
Y2UoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX2luc3RhbmNlb2YoSW5zdHJ1
Y3Rpb24qKTsKQEAgLTUyMSw4ICs1MTksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBlbWl0X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRf
b3BfbmV3X29iamVjdChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X3Jl
Z2V4cChJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfZ2V0X3BuYW1lcyhJbnN0
cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbiop
OwogICAgICAgICB2b2lkIGVtaXRfb3Bfbm90KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQg
ZW1pdF9vcF9uc3RyaWN0ZXEoSW5zdHJ1Y3Rpb24qKTsKICAgICAgICAgdm9pZCBlbWl0X29wX3Bv
cF9zY29wZShJbnN0cnVjdGlvbiopOwpAQCAtNTg0LDcgKzU4MCw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKEluc3RydWN0
aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYpOwogICAgICAgICB2b2lkIGVt
aXRTbG93X29wX2dldF9ieV92YWwoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bChJbnN0cnVjdGlvbiosIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImKTsKLSAgICAg
ICAgdm9pZCBlbWl0U2xvd19vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qLCBWZWN0b3I8U2xv
d0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3dfb3BfY2hlY2tf
aGFzX2luc3RhbmNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRTbG93X29wX2luc3RhbmNlb2YoSW5zdHJ1Y3Rpb24qLCBW
ZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJik7CiAgICAgICAgIHZvaWQgZW1pdFNsb3df
b3BfamZhbHNlKEluc3RydWN0aW9uKiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNw
cAkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lRW51bWVyYXRvci5oIgotI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNp
bmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2lu
Y2x1ZGUgIk1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsLmgiCkBAIC03NjksMTA1ICs3Njgs
NiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90aHJvdyhJbnN0cnVjdGlvbiogY3VyCiAgICAganVtcFRv
RXhjZXB0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIEpJVDo6ZW1pdF9vcF9nZXRfcG5hbWVzKElu
c3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgaW50IGRzdCA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwotICAgIGludCBpID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKLSAgICBpbnQgc2l6ZSA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7Ci0g
ICAgaW50IGJyZWFrVGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzVdLnUub3BlcmFuZDsKLQot
ICAgIEp1bXBMaXN0IGlzTm90T2JqZWN0OwotCi0gICAgZW1pdExvYWQoYmFzZSwgcmVnVDEsIHJl
Z1QwKTsKLSAgICBpZiAoIW1fY29kZUJsb2NrLT5pc0tub3duTm90SW1tZWRpYXRlKGJhc2UpKQot
ICAgICAgICBpc05vdE9iamVjdC5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKLSAgICBpZiAoVmlydHVhbFJlZ2lzdGVyKGJh
c2UpICE9IG1fY29kZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSB8fCBtX2NvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCi0gICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmQ2VsbE5vdE9i
amVjdChyZWdUMCkpOwotCi0gICAgLy8gV2UgY291bGQgaW5saW5lIHRoZSBjYXNlIHdoZXJlIHlv
dSBoYXZlIGEgdmFsaWQgY2FjaGUsIGJ1dAotICAgIC8vIHRoaXMgY2FsbCBkb2Vzbid0IHNlZW0g
dG8gYmUgaG90LgotICAgIExhYmVsIGlzT2JqZWN0KHRoaXMpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uR2V0UE5hbWVzLCByZWdUMCk7Ci0gICAgZW1pdFN0b3JlQ2VsbChkc3QsIHJldHVy
blZhbHVlR1BSKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgT0JKRUNUX09GRlNFVE9GKEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fanNTdHJpbmdzU2l6ZSkpLCByZWdUMyk7Ci0gICAgc3Rv
cmUzMihUcnVzdGVkSW1tMzIoSW50MzJUYWcpLCBpbnRUYWdGb3IoaSkpOwotICAgIHN0b3JlMzIo
VHJ1c3RlZEltbTMyKDApLCBpbnRQYXlsb2FkRm9yKGkpKTsKLSAgICBzdG9yZTMyKFRydXN0ZWRJ
bW0zMihJbnQzMlRhZyksIGludFRhZ0ZvcihzaXplKSk7Ci0gICAgc3RvcmUzMihyZWdUMywgcGF5
bG9hZEZvcihzaXplKSk7Ci0gICAgSnVtcCBlbmQgPSBqdW1wKCk7Ci0KLSAgICBpc05vdE9iamVj
dC5saW5rKHRoaXMpOwotICAgIGFkZEp1bXAoYnJhbmNoMzIoRXF1YWwsIHJlZ1QxLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpLCBicmVha1RhcmdldCk7Ci0gICAgYWRkSnVtcChicmFu
Y2gzMihFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpVbmRlZmluZWRUYWcpKSwg
YnJlYWtUYXJnZXQpOwotICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uVG9PYmplY3QsIGJhc2Us
IHJlZ1QxLCByZWdUMCk7Ci0gICAganVtcCgpLmxpbmtUbyhpc09iamVjdCwgdGhpcyk7Ci0KLSAg
ICBlbmQubGluayh0aGlzKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfbmV4dF9wbmFtZShJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGludCBiYXNlID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKLSAgICBpbnQgaSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQ7Ci0gICAgaW50IHNpemUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwotICAg
IGludCBpdCA9IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQ7Ci0gICAgaW50IHRhcmdl
dCA9IGN1cnJlbnRJbnN0cnVjdGlvbls2XS51Lm9wZXJhbmQ7Ci0KLSAgICBKdW1wTGlzdCBjYWxs
SGFzUHJvcGVydHk7Ci0KLSAgICBMYWJlbCBiZWdpbih0aGlzKTsKLSAgICBsb2FkMzIoaW50UGF5
bG9hZEZvcihpKSwgcmVnVDApOwotICAgIEp1bXAgZW5kID0gYnJhbmNoMzIoRXF1YWwsIHJlZ1Qw
LCBpbnRQYXlsb2FkRm9yKHNpemUpKTsKLQotICAgIC8vIEdyYWIga2V5IEAgaQotICAgIGxvYWRQ
dHIocGF5bG9hZEZvcihpdCksIHJlZ1QxKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2pzU3RyaW5ncykpLCByZWdU
Mik7Ci0gICAgbG9hZDMyKEJhc2VJbmRleChyZWdUMiwgcmVnVDAsIFRpbWVzRWlnaHQpLCByZWdU
Mik7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIHRhZ0Zvcihk
c3QpKTsKLSAgICBzdG9yZTMyKHJlZ1QyLCBwYXlsb2FkRm9yKGRzdCkpOwotCi0gICAgLy8gSW5j
cmVtZW50IGkKLSAgICBhZGQzMihUcnVzdGVkSW1tMzIoMSksIHJlZ1QwKTsKLSAgICBzdG9yZTMy
KHJlZ1QwLCBpbnRQYXlsb2FkRm9yKGkpKTsKLQotICAgIC8vIFZlcmlmeSB0aGF0IGkgaXMgdmFs
aWQ6Ci0gICAgbG9hZFB0cihwYXlsb2FkRm9yKGJhc2UpLCByZWdUMCk7Ci0KLSAgICAvLyBUZXN0
IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6c3Ry
dWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKLSAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGJy
YW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09G
RlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKSk7Ci0K
LSAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hhaW4KLSAgICBsb2FkUHRyKEFkZHJlc3Mo
QWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4pKSksIHJlZ1QzKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDMsIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVDaGFpbiwgbV92ZWN0b3IpKSwgcmVnVDMpOwot
ICAgIGFkZEp1bXAoYnJhbmNoVGVzdFB0cihaZXJvLCBBZGRyZXNzKHJlZ1QzKSksIHRhcmdldCk7
Ci0KLSAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKLSAgICBjYWxsSGFzUHJvcGVydHku
YXBwZW5kKGJyYW5jaDMyKEVxdWFsLCBBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnByb3RvdHlw
ZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCBUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIs
IFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwg
dS5hc0JpdHMucGF5bG9hZCkpLCByZWdUMik7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBK
U0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMik7Ci0gICAgY2FsbEhhc1Byb3BlcnR5
LmFwcGVuZChicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QyLCBBZGRyZXNzKHJlZ1QzKSkpOwotICAg
IGFkZFB0cihUcnVzdGVkSW1tMzIoc2l6ZW9mKFN0cnVjdHVyZSopKSwgcmVnVDMpOwotICAgIGJy
YW5jaFRlc3RQdHIoTm9uWmVybywgQWRkcmVzcyhyZWdUMykpLmxpbmtUbyhjaGVja1Byb3RvdHlw
ZSwgdGhpcyk7Ci0KLSAgICAvLyBDb250aW51ZSBsb29wLgotICAgIGFkZEp1bXAoanVtcCgpLCB0
YXJnZXQpOwotCi0gICAgLy8gU2xvdyBjYXNlOiBBc2sgdGhlIG9iamVjdCBpZiBpIGlzIHZhbGlk
LgotICAgIGNhbGxIYXNQcm9wZXJ0eS5saW5rKHRoaXMpOwotICAgIGxvYWRQdHIoYWRkcmVzc0Zv
cihkc3QpLCByZWdUMSk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25IYXNQcm9wZXJ0eSwg
cmVnVDAsIHJlZ1QxKTsKLQotICAgIC8vIFRlc3QgZm9yIHZhbGlkIGtleS4KLSAgICBhZGRKdW1w
KGJyYW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0gICAganVtcCgpLmxpbmtU
byhiZWdpbiwgdGhpcyk7Ci0KLSAgICAvLyBFbmQgb2YgbG9vcC4KLSAgICBlbmQubGluayh0aGlz
KTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF93aXRoX3Njb3BlKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdExvYWQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgcmVnVDEsIHJlZ1QwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRPcGNvZGVzLmNwcAkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNiBAQAog
I2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgogI2luY2x1ZGUgIk1heEZyYW1lRXh0ZW50
Rm9yU2xvd1BhdGhDYWxsLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgpAQCAtNDU5LDEw
NiArNDU4LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdGhyb3coSW5zdHJ1Y3Rpb24qIGN1cgogICAg
IGp1bXBUb0V4Y2VwdGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X3Bu
YW1lcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGludCBkc3QgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGludCBiYXNlID0gY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICBpbnQgaSA9IGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQ7Ci0gICAgaW50IHNpemUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kOwotICAgIGludCBicmVha1RhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9wZXJh
bmQ7Ci0KLSAgICBKdW1wTGlzdCBpc05vdE9iamVjdDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIoYmFzZSwgcmVnVDApOwotICAgIGlmICghbV9jb2RlQmxvY2stPmlzS25vd25Ob3RJbW1l
ZGlhdGUoYmFzZSkpCi0gICAgICAgIGlzTm90T2JqZWN0LmFwcGVuZChlbWl0SnVtcElmTm90SlND
ZWxsKHJlZ1QwKSk7Ci0gICAgaWYgKGJhc2UgIT0gbV9jb2RlQmxvY2stPnRoaXNSZWdpc3Rlcigp
Lm9mZnNldCgpIHx8IG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgaXNOb3RP
YmplY3QuYXBwZW5kKGVtaXRKdW1wSWZDZWxsTm90T2JqZWN0KHJlZ1QwKSk7Ci0KLSAgICAvLyBX
ZSBjb3VsZCBpbmxpbmUgdGhlIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSB2YWxpZCBjYWNoZSwgYnV0
Ci0gICAgLy8gdGhpcyBjYWxsIGRvZXNuJ3Qgc2VlbSB0byBiZSBob3QuCi0gICAgTGFiZWwgaXNP
YmplY3QodGhpcyk7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRQTmFtZXMsIHJlZ1Qw
KTsKLSAgICBlbWl0U3RvcmVDZWxsKGRzdCwgcmV0dXJuVmFsdWVHUFIpOwotICAgIGxvYWQzMihB
ZGRyZXNzKHJlZ1QwLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9q
c1N0cmluZ3NTaXplKSksIHJlZ1QzKTsKLSAgICBzdG9yZTY0KHRhZ1R5cGVOdW1iZXJSZWdpc3Rl
ciwgYWRkcmVzc0ZvcihpKSk7Ci0gICAgc3RvcmUzMihUcnVzdGVkSW1tMzIoSW50MzJUYWcpLCBp
bnRUYWdGb3Ioc2l6ZSkpOwotICAgIHN0b3JlMzIocmVnVDMsIGludFBheWxvYWRGb3Ioc2l6ZSkp
OwotICAgIEp1bXAgZW5kID0ganVtcCgpOwotCi0gICAgaXNOb3RPYmplY3QubGluayh0aGlzKTsK
LSAgICBtb3ZlKHJlZ1QwLCByZWdUMSk7Ci0gICAgYW5kMzIoVHJ1c3RlZEltbTMyKH5UYWdCaXRV
bmRlZmluZWQpLCByZWdUMSk7Ci0gICAgYWRkSnVtcChicmFuY2gzMihFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihWYWx1ZU51bGwpKSwgYnJlYWtUYXJnZXQpOwotICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVG9PYmplY3QsIGJhc2UsIHJlZ1QwKTsKLSAgICBqdW1wKCkubGlua1RvKGlzT2Jq
ZWN0LCB0aGlzKTsKLSAgICAKLSAgICBlbmQubGluayh0aGlzKTsKLX0KLQotdm9pZCBKSVQ6OmVt
aXRfb3BfbmV4dF9wbmFtZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAg
IGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGludCBiYXNl
ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICBpbnQgaSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgaW50IHNpemUgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kOwotICAgIGludCBpdCA9IGN1cnJlbnRJbnN0cnVjdGlvbls1XS51Lm9w
ZXJhbmQ7Ci0gICAgaW50IHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvbls2XS51Lm9wZXJhbmQ7
Ci0gICAgCi0gICAgSnVtcExpc3QgY2FsbEhhc1Byb3BlcnR5OwotCi0gICAgTGFiZWwgYmVnaW4o
dGhpcyk7Ci0gICAgbG9hZDMyKGludFBheWxvYWRGb3IoaSksIHJlZ1QwKTsKLSAgICBKdW1wIGVu
ZCA9IGJyYW5jaDMyKEVxdWFsLCByZWdUMCwgaW50UGF5bG9hZEZvcihzaXplKSk7Ci0KLSAgICAv
LyBHcmFiIGtleSBAIGkKLSAgICBsb2FkUHRyKGFkZHJlc3NGb3IoaXQpLCByZWdUMSk7Ci0gICAg
bG9hZFB0cihBZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciwgbV9qc1N0cmluZ3MpKSwgcmVnVDIpOwotCi0gICAgbG9hZDY0KEJhc2VJbmRleChyZWdU
MiwgcmVnVDAsIFRpbWVzRWlnaHQpLCByZWdUMik7Ci0KLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lz
dGVyKGRzdCwgcmVnVDIpOwotCi0gICAgLy8gSW5jcmVtZW50IGkKLSAgICBhZGQzMihUcnVzdGVk
SW1tMzIoMSksIHJlZ1QwKTsKLSAgICBzdG9yZTMyKHJlZ1QwLCBpbnRQYXlsb2FkRm9yKGkpKTsK
LQotICAgIC8vIFZlcmlmeSB0aGF0IGkgaXMgdmFsaWQ6Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdp
c3RlcihiYXNlLCByZWdUMCk7Ci0KLSAgICAvLyBUZXN0IGJhc2UncyBzdHJ1Y3R1cmUKLSAgICBl
bWl0TG9hZFN0cnVjdHVyZShyZWdUMCwgcmVnVDIsIHJlZ1QzKTsKLSAgICBjYWxsSGFzUHJvcGVy
dHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MoQWRkcmVzcyhyZWdU
MSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0
dXJlKSkpKSk7Ci0KLSAgICAvLyBUZXN0IGJhc2UncyBwcm90b3R5cGUgY2hhaW4KLSAgICBsb2Fk
UHRyKEFkZHJlc3MoQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IsIG1fY2FjaGVkUHJvdG90eXBlQ2hhaW4pKSksIHJlZ1QzKTsKLSAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDMsIE9CSkVDVF9PRkZTRVRPRihTdHJ1Y3R1cmVDaGFpbiwgbV92ZWN0b3Ip
KSwgcmVnVDMpOwotICAgIGFkZEp1bXAoYnJhbmNoVGVzdFB0cihaZXJvLCBBZGRyZXNzKHJlZ1Qz
KSksIHRhcmdldCk7Ci0KLSAgICBMYWJlbCBjaGVja1Byb3RvdHlwZSh0aGlzKTsKLSAgICBsb2Fk
NjQoQWRkcmVzcyhyZWdUMiwgU3RydWN0dXJlOjpwcm90b3R5cGVPZmZzZXQoKSksIHJlZ1QyKTsK
LSAgICBjYWxsSGFzUHJvcGVydHkuYXBwZW5kKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDIpKTsK
LSAgICBlbWl0TG9hZFN0cnVjdHVyZShyZWdUMiwgcmVnVDIsIHJlZ1QxKTsKLSAgICBjYWxsSGFz
UHJvcGVydHkuYXBwZW5kKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDIsIEFkZHJlc3MocmVnVDMp
KSk7Ci0gICAgYWRkUHRyKFRydXN0ZWRJbW0zMihzaXplb2YoU3RydWN0dXJlKikpLCByZWdUMyk7
Ci0gICAgYnJhbmNoVGVzdFB0cihOb25aZXJvLCBBZGRyZXNzKHJlZ1QzKSkubGlua1RvKGNoZWNr
UHJvdG90eXBlLCB0aGlzKTsKLQotICAgIC8vIENvbnRpbnVlIGxvb3AuCi0gICAgYWRkSnVtcChq
dW1wKCksIHRhcmdldCk7Ci0KLSAgICAvLyBTbG93IGNhc2U6IEFzayB0aGUgb2JqZWN0IGlmIGkg
aXMgdmFsaWQuCi0gICAgY2FsbEhhc1Byb3BlcnR5LmxpbmsodGhpcyk7Ci0gICAgZW1pdEdldFZp
cnR1YWxSZWdpc3Rlcihkc3QsIHJlZ1QxKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkhh
c1Byb3BlcnR5LCByZWdUMCwgcmVnVDEpOwotCi0gICAgLy8gVGVzdCBmb3IgdmFsaWQga2V5Lgot
ICAgIGFkZEp1bXAoYnJhbmNoVGVzdDMyKE5vblplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKLSAgICBq
dW1wKCkubGlua1RvKGJlZ2luLCB0aGlzKTsKLQotICAgIC8vIEVuZCBvZiBsb29wLgotICAgIGVu
ZC5saW5rKHRoaXMpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXNoX3dpdGhfc2NvcGUoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTcxNjA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCiAjaW5j
bHVkZSAiSlNTdGFja0lubGluZXMuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5oIgogI2luY2x1
ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCkBAIC0xNjE2LDE4ICsxNjE1LDYgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25EZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KTsKIH0KIAotSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFBOYW1l
cyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmopCi17Ci0gICAgVk0mIHZtID0gZXhlYy0+
dm0oKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7Ci0KLSAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG9iai0+c3RydWN0dXJlKHZtKTsKLSAgICBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVt
ZXJhdGlvbkNhY2hlKCk7Ci0gICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJv
cGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5w
cm90b3R5cGVDaGFpbihleGVjKSkKLSAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvYmopOwotICAgIHJldHVybiBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yOwotfQotCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkluc3RhbmNlT2YoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm90bykKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vz
czMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKICNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgpAQCAtNjA2LDU0ICs2MDUsNiBA
QCB2b2lkIEpJVDo6Y29tcGlsZUdldERpcmVjdE9mZnNldChSZWdpc3RlCiAgICAgbG9hZDMyKEJh
c2VJbmRleChiYXNlLCBvZmZzZXQsIFRpbWVzRWlnaHQsIE9CSkVDVF9PRkZTRVRPRihKU1ZhbHVl
LCB1LmFzQml0cy50YWcpICsgKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0IC0gMikgKiBzaXplb2YoRW5j
b2RlZEpTVmFsdWUpKSwgcmVzdWx0VGFnKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5
X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgaW50IGRzdCA9
IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IGJhc2UgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIGludCBwcm9wZXJ0eSA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgZXhwZWN0ZWQgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kOwotICAgIGludCBpdGVyID0gY3VycmVudEluc3RydWN0aW9u
WzVdLnUub3BlcmFuZDsKLSAgICBpbnQgaSA9IGN1cnJlbnRJbnN0cnVjdGlvbls2XS51Lm9wZXJh
bmQ7Ci0gICAgCi0gICAgZW1pdExvYWQyKHByb3BlcnR5LCByZWdUMSwgcmVnVDAsIGJhc2UsIHJl
Z1QzLCByZWdUMik7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHByb3BlcnR5LCBy
ZWdUMSk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcGF5bG9h
ZEZvcihleHBlY3RlZCkpKTsKLSAgICAvLyBQcm9wZXJ0eSByZWdpc3RlcnMgYXJlIG5vdyBhdmFp
bGFibGUgYXMgdGhlIHByb3BlcnR5IGlzIGtub3duCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SlNDZWxsKGJhc2UsIHJlZ1QzKTsKLSAgICBlbWl0TG9hZFBheWxvYWQoaXRlciwgcmVnVDEpOwot
ICAgIAotICAgIC8vIFRlc3QgYmFzZSdzIHN0cnVjdHVyZQotICAgIGxvYWRQdHIoQWRkcmVzcyhy
ZWdUMiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgIGFkZFNsb3dD
YXNlKGJyYW5jaFB0cihOb3RFcXVhbCwgcmVnVDAsIEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZT
RVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX2NhY2hlZFN0cnVjdHVyZSkpKSk7Ci0gICAg
bG9hZDMyKGFkZHJlc3NGb3IoaSksIHJlZ1QzKTsKLSAgICBzdWIzMihUcnVzdGVkSW1tMzIoMSks
IHJlZ1QzKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2gzMihBYm92ZU9yRXF1YWwsIHJlZ1QzLCBB
ZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9u
dW1DYWNoZWFibGVTbG90cykpKSk7Ci0gICAgSnVtcCBpbmxpbmVQcm9wZXJ0eSA9IGJyYW5jaDMy
KEJlbG93LCByZWdUMywgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlSW5saW5lQ2FwYWNpdHkpKSk7Ci0gICAgYWRk
MzIoVHJ1c3RlZEltbTMyKGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KSwgcmVnVDMpOwotICAgIHN1YjMy
KEFkZHJlc3MocmVnVDEsIE9CSkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBt
X2NhY2hlZFN0cnVjdHVyZUlubGluZUNhcGFjaXR5KSksIHJlZ1QzKTsKLSAgICBpbmxpbmVQcm9w
ZXJ0eS5saW5rKHRoaXMpOwotICAgIGNvbXBpbGVHZXREaXJlY3RPZmZzZXQocmVnVDIsIHJlZ1Qx
LCByZWdUMCwgcmVnVDMpOyAgICAKLSAgICAKLSAgICBlbWl0U3RvcmUoZHN0LCByZWdUMSwgcmVn
VDApOwotfQotCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCi17Ci0gICAgaW50IGRzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0g
ICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIGludCBw
cm9wZXJ0eSA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgCi0gICAgbGlu
a1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgcHJvcGVydHkpOwotICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKLSAgICBsaW5rU2xvd0Nhc2VJZk5vdEpTQ2VsbChpdGVyLCBiYXNlKTsKLSAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7Ci0gICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgIAotICAgIGVtaXRM
b2FkKGJhc2UsIHJlZ1QxLCByZWdUMCk7Ci0gICAgZW1pdExvYWQocHJvcGVydHksIHJlZ1QzLCBy
ZWdUMik7Ci0gICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25HZXRCeVZhbEdlbmVyaWMsIGRzdCwg
cmVnVDEsIHJlZ1QwLCByZWdUMywgcmVnVDIpOwotfQotCiB2b2lkIEpJVDo6ZW1pdFZhckluamVj
dGlvbkNoZWNrKGJvb2wgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpCiB7CiAgICAgaWYgKCFuZWVk
c1ZhckluamVjdGlvbkNoZWNrcykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkpJVElubGluZXMuaCIKICNpbmNsdWRlICJKU0FycmF5
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaCIKICNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCiAjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKQEAgLTI2Miw1MSArMjYxLDYgQEAg
dm9pZCBKSVQ6OmNvbXBpbGVHZXREaXJlY3RPZmZzZXQoUmVnaXN0ZQogICAgIGxvYWQ2NChCYXNl
SW5kZXgoc2NyYXRjaCwgb2Zmc2V0LCBUaW1lc0VpZ2h0LCAoZmlyc3RPdXRPZkxpbmVPZmZzZXQg
LSAyKSAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCByZXN1bHQpOwogfQogCi12b2lkIEpJVDo6
ZW1pdF9vcF9nZXRfYnlfcG5hbWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsK
LSAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICBpbnQg
YmFzZSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgaW50IHByb3BlcnR5
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBleHBlY3Rl
ZCA9IGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQ7Ci0gICAgaW50IGl0ZXIgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kOwotICAgIGludCBpID0gY3VycmVudEluc3RydWN0
aW9uWzZdLnUub3BlcmFuZDsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHks
IHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2g2NChOb3RFcXVhbCwgcmVnVDAsIGFkZHJl
c3NGb3IoZXhwZWN0ZWQpKSk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVn
VDAsIGl0ZXIsIHJlZ1QxKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2UpOwotCi0gICAgLy8gVGVzdCBiYXNlJ3Mgc3RydWN0dXJlCi0gICAgZW1pdExvYWRTdHJ1
Y3R1cmUocmVnVDAsIHJlZ1QyLCByZWdUMyk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5v
dEVxdWFsLCByZWdUMiwgQWRkcmVzcyhyZWdUMSwgT0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJlKSkpKTsKLSAgICBsb2FkMzIoYWRkcmVzc0Zv
cihpKSwgcmVnVDMpOwotICAgIHN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVnVDMpOwotICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDMsIEFkZHJlc3MocmVnVDEsIE9C
SkVDVF9PRkZTRVRPRihKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLCBtX251bUNhY2hlYWJsZVNsb3Rz
KSkpKTsKLSAgICBKdW1wIGlubGluZVByb3BlcnR5ID0gYnJhbmNoMzIoQmVsb3csIHJlZ1QzLCBB
ZGRyZXNzKHJlZ1QxLCBPQkpFQ1RfT0ZGU0VUT0YoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciwgbV9j
YWNoZWRTdHJ1Y3R1cmVJbmxpbmVDYXBhY2l0eSkpKTsKLSAgICBhZGQzMihUcnVzdGVkSW1tMzIo
Zmlyc3RPdXRPZkxpbmVPZmZzZXQpLCByZWdUMyk7Ci0gICAgc3ViMzIoQWRkcmVzcyhyZWdUMSwg
T0JKRUNUX09GRlNFVE9GKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IsIG1fY2FjaGVkU3RydWN0dXJl
SW5saW5lQ2FwYWNpdHkpKSwgcmVnVDMpOwotICAgIGlubGluZVByb3BlcnR5LmxpbmsodGhpcyk7
Ci0gICAgY29tcGlsZUdldERpcmVjdE9mZnNldChyZWdUMCwgcmVnVDAsIHJlZ1QzLCByZWdUMSk7
Ci0KLSAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCwgcmVnVDApOwotfQotCi12b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3BuYW1lKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgaW50IGRz
dCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAgaW50IGJhc2UgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIGludCBwcm9wZXJ0eSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0KLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAg
bGlua1Nsb3dDYXNlSWZOb3RKU0NlbGwoaXRlciwgYmFzZSk7Ci0gICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOwotICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLQotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIoYmFzZSwgcmVnVDApOwotICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJl
Z1QxKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYywgZHN0LCBy
ZWdUMCwgcmVnVDEpOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgaW50IGJhc2UgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDE3MTYwOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiVk0uaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0jaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2suaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTcxNjA4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIkpTTmFtZVNjb3BlLmgi
Ci0jaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgogI2luY2x1ZGUgIkpTU3RhY2tJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1dpdGhTY29wZS5o
IgpAQCAtNzY4LDEyICs3NjcsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0
X2FyZ3VtCiAgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9hcmd1bWVudF9ieV92YWws
IGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKIH0K
IAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9wbmFtZSkKLXsKLSAgICBM
TElOVF9CRUdJTigpOwotICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKLX0KLQogTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsK
QEAgLTEyODIsNDIgKzEyNzUsNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9f
cHJpbWl0CiAgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0
aXZlKGV4ZWMpKTsKIH0KIAotTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wbmFt
ZXMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCk7Ci0gICAgaWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgewotICAgICAgICBwYyAr
PSBwY1s1XS51Lm9wZXJhbmQ7Ci0gICAgICAgIExMSU5UX0VORCgpOwotICAgIH0KLSAgICAKLSAg
ICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7Ci0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKLSAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7Ci0gICAgaWYg
KCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hl
ZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKLSAg
ICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNy
ZWF0ZShleGVjLCBvKTsKLSAgICAKLSAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0
eU5hbWVJdGVyYXRvcik7Ci0gICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOwotICAgIExMSU5U
X09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQoMCk7Ci0gICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rl
cjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOwotICAgIAotICAgIHBj
ICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7Ci0gICAgTExJTlRfRU5EKCk7Ci19Ci0K
LUxMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXh0X3BuYW1lKQotewotICAgIExMSU5U
X0JFR0lOKCk7Ci0gICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1Zh
bHVlKCkpOwotICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7Ci0gICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKLSAgICAgICAgLy8gR28gdG8gdGFyZ2V0Lgot
ICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7Ci0gICAgfSAvLyBFbHNlLCBkb24ndCBjaGFu
Z2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCi0gICAgTExJTlRfRU5E
KCk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXNoX3dpdGhfc2NvcGUp
CiB7CiAgICAgTExJTlRfQkVHSU4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyAr
NzgsNiBAQCBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1CiBMTElOVF9T
TE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCk7CiBMTElOVF9TTE9XX1BB
VEhfSElEREVOX0RFQ0woc2xvd19wYXRoX2dldF9ieV92YWwpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKLUxMSU5UX1NMT1dfUEFU
SF9ISURERU5fREVDTChzbG93X3BhdGhfZ2V0X2J5X3BuYW1lKTsKIExMSU5UX1NMT1dfUEFUSF9I
SURERU5fREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVO
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWxfZGlyZWN0KTsKIExMSU5UX1NMT1dfUEFUSF9ISURE
RU5fREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CkBAIC0xMDksOCArMTA4LDYgQEAgTExJTlRf
U0xPV19QQVRIX0hJRERFTl9ERUNMKHNsb3dfcGF0aF90ZQogTExJTlRfU0xPV19QQVRIX0hJRERF
Tl9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hcmd1bWVudHMpOwogTExJTlRfU0xPV19QQVRIX0hJ
RERFTl9ERUNMKHNsb3dfcGF0aF9zdHJjYXQpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNM
KHNsb3dfcGF0aF90b19wcmltaXRpdmUpOwotTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9nZXRfcG5hbWVzKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfbmV4dF9wbmFtZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1
c2hfd2l0aF9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3Bv
cF9zY29wZSk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX3B1c2hfbmFt
ZV9zY29wZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlcjMyXzY0LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkocmV2aXNpb24gMTcxNjA4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHdv
cmtpbmcgY29weSkKQEAgLTE2MTMsMzcgKzE2MTMsNiBAQCBfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbDoKICAgICBkaXNwYXRjaCg2KQogCiAKLV9sbGludF9vcF9nZXRfYnlfcG5hbWU6Ci0g
ICAgdHJhY2VFeGVjdXRpb24oKQotICAgIGxvYWRpIDEyW1BDXSwgdDAKLSAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQot
ICAgIGxvYWRpIDE2W1BDXSwgdDAKLSAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkaSA4W1BDXSwgdDAKLSAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93
KQotICAgIGxvYWRpIDIwW1BDXSwgdDAKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MwotICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0Ml0sIHQwCi0gICAgYnBu
ZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9w
R2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkaSAyNFtQQ10sIHQwCi0gICAgbG9hZGkgW2NmciwgdDAs
IDhdLCB0MAotICAgIHN1YmkgMSwgdDAKLSAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93Ci0gICAgYmls
dCB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVJbmxpbmVDYXBh
Y2l0eVt0M10sIC5vcEdldEJ5UG5hbWVJbmxpbmVQcm9wZXJ0eQotICAgIGFkZGkgZmlyc3RPdXRP
ZkxpbmVPZmZzZXQsIHQwCi0gICAgc3ViaSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hl
ZFN0cnVjdHVyZUlubGluZUNhcGFjaXR5W3QzXSwgdDAKLS5vcEdldEJ5UG5hbWVJbmxpbmVQcm9w
ZXJ0eToKLSAgICBsb2FkUHJvcGVydHlBdFZhcmlhYmxlT2Zmc2V0KHQwLCB0MiwgdDEsIHQzKQot
ICAgIGxvYWRpIDRbUENdLCB0MAotICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
Ci0gICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCi0gICAgZGlzcGF0Y2go
NykKLQotLm9wR2V0QnlQbmFtZVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ2V0X2J5X3BuYW1lKQotICAgIGRpc3BhdGNoKDcpCi0KLQogbWFjcm8gY29udGlndW91c1B1
dEJ5VmFsKHN0b3JlQ2FsbGJhY2spCiAgICAgYmlhZXEgdDMsIC1zaXplb2YgSW5kZXhpbmdIZWFk
ZXIgKyBJbmRleGluZ0hlYWRlcjo6dS5sZW5ndGhzLnB1YmxpY0xlbmd0aFt0MF0sIC5vdXRPZkJv
dW5kcwogLnN0b3JlUmVzdWx0OgpAQCAtMjA0MSw0NiArMjAxMCw2IEBAIF9sbGludF9vcF90b19w
cmltaXRpdmU6CiAgICAgZGlzcGF0Y2goMykKIAogCi1fbGxpbnRfb3BfbmV4dF9wbmFtZToKLSAg
ICB0cmFjZUV4ZWN1dGlvbigpCi0gICAgbG9hZGkgMTJbUENdLCB0MQotICAgIGxvYWRpIDE2W1BD
XSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAotICAgIGJpZXEg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAotICAgIGxvYWRp
IDIwW1BDXSwgdDIKLSAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgotICAg
IGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKLSAgICBs
b2FkaSBbdDMsIHQwLCA4XSwgdDMKLSAgICBhZGRpIDEsIHQwCi0gICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCi0gICAgbG9hZGkgNFtQQ10sIHQxCi0gICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQotICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQotICAgIGxvYWRpIDhbUENdLCB0MwotICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0sIHQzCi0gICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QzXSwg
dDEKLSAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1
cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93Ci0gICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCi0gICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yW3QwXSwgdDAKLSAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAot
Lm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgotICAgIGJpZXEgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKLSAgICBs
b2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCi0gICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QyXSwgdDEKLSAgICBicG5lcSB0MSwgW3QwXSwg
Lm9wTmV4dFBuYW1lU2xvdwotICAgIGFkZHAgNCwgdDAKLSAgICBidHBueiBbdDBdLCAub3BOZXh0
UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKLS5vcE5leHRQbmFtZVRhcmdldDoKLSAgICBkaXNwYXRj
aEJyYW5jaCgyNFtQQ10pCi0KLS5vcE5leHRQbmFtZUVuZDoKLSAgICBkaXNwYXRjaCg3KQotCi0u
b3BOZXh0UG5hbWVTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25leHRf
cG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1
cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KLSAgICBkaXNwYXRjaCgwKQotCi0KIF9s
bGludF9vcF9jYXRjaDoKICAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJ
VCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCiAgICAgIyBtYWNoaW5lIGNvZGUgcmV0
dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTQ0Nywz
OCArMTQ0Nyw2IEBAIF9sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgogICAgIGRpc3BhdGNo
KDYpCiAKIAotX2xsaW50X29wX2dldF9ieV9wbmFtZToKLSAgICB0cmFjZUV4ZWN1dGlvbigpCi0g
ICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDMsIHQxKQotICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDEsIHQwKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbig0LCB0MSkKLSAgICBhc3NlcnRO
b3RDb25zdGFudCh0MSkKLSAgICBicW5lcSB0MCwgW2NmciwgdDEsIDhdLCAub3BHZXRCeVBuYW1l
U2xvdwotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigyLCB0MikKLSAgICBsb2FkaXNGcm9tSW5z
dHJ1Y3Rpb24oNSwgdDMpCi0gICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwodDIsIHQwLCAu
b3BHZXRCeVBuYW1lU2xvdykKLSAgICBhc3NlcnROb3RDb25zdGFudCh0MykKLSAgICBsb2FkcSBb
Y2ZyLCB0MywgOF0sIHQxCi0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MiwgdDMp
Ci0gICAgYnBuZXEgdDIsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJl
W3QxXSwgLm9wR2V0QnlQbmFtZVNsb3cKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNiwgdDMp
Ci0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKLSAgICBzdWJpIDEsIHQz
Ci0gICAgYmlhZXEgdDMsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xv
dHNbdDFdLCAub3BHZXRCeVBuYW1lU2xvdwotICAgIGJpbHQgdDMsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlSW5saW5lQ2FwYWNpdHlbdDFdLCAub3BHZXRCeVBuYW1l
SW5saW5lUHJvcGVydHkKLSAgICBhZGRpIGZpcnN0T3V0T2ZMaW5lT2Zmc2V0LCB0MwotICAgIHN1
YmkgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVJbmxpbmVDYXBhY2l0
eVt0MV0sIHQzCi0ub3BHZXRCeVBuYW1lSW5saW5lUHJvcGVydHk6Ci0gICAgbG9hZFByb3BlcnR5
QXRWYXJpYWJsZU9mZnNldCh0MywgdDAsIHQwKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigx
LCB0MSkKLSAgICBzdG9yZXEgdDAsIFtjZnIsIHQxLCA4XQotICAgIGRpc3BhdGNoKDcpCi0KLS5v
cEdldEJ5UG5hbWVTbG93OgotICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9i
eV9wbmFtZSkKLSAgICBkaXNwYXRjaCg3KQotCi0KIG1hY3JvIGNvbnRpZ3VvdXNQdXRCeVZhbChz
dG9yZUNhbGxiYWNrKQogICAgIGJpYWVxIHQzLCAtc2l6ZW9mIEluZGV4aW5nSGVhZGVyICsgSW5k
ZXhpbmdIZWFkZXI6OnUubGVuZ3Rocy5wdWJsaWNMZW5ndGhbdDBdLCAub3V0T2ZCb3VuZHMKIC5z
dG9yZVJlc3VsdDoKQEAgLTE4NzQsNDkgKzE4NDIsNiBAQCBfbGxpbnRfb3BfdG9fcHJpbWl0aXZl
OgogICAgIGRpc3BhdGNoKDMpCiAKIAotX2xsaW50X29wX25leHRfcG5hbWU6Ci0gICAgdHJhY2VF
eGVjdXRpb24oKQotICAgIGxvYWRpc0Zyb21JbnN0cnVjdGlvbigzLCB0MSkKLSAgICBsb2FkaXNG
cm9tSW5zdHJ1Y3Rpb24oNCwgdDIpCi0gICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCi0gICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDIpCi0gICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwg
dDAKLSAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVF
bmQKLSAgICBsb2FkaXNGcm9tSW5zdHJ1Y3Rpb24oNSwgdDIpCi0gICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDIpCi0gICAgbG9hZHAgW2NmciwgdDIsIDhdLCB0MgotICAgIGxvYWRwIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKLSAgICBsb2FkcSBbdDMsIHQwLCA4XSwg
dDMKLSAgICBhZGRpIDEsIHQwCi0gICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQotICAgIHN0b3JlcSB0MywgW2Nm
ciwgdDEsIDhdCi0gICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDIsIHQzKQotICAgIGFzc2VydE5v
dENvbnN0YW50KHQzKQotICAgIGxvYWRxIFtjZnIsIHQzLCA4XSwgdDMKLSAgICBsb2FkU3RydWN0
dXJlV2l0aFNjcmF0Y2godDMsIHQxLCB0MCkKLSAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93Ci0gICAgbG9h
ZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQw
Ci0gICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKLSAgICBidHB6IFt0
MF0sIC5vcE5leHRQbmFtZVRhcmdldAotLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgot
ICAgIGJxZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZVt0MV0sIFZhbHVlTnVsbCwgLm9wTmV4dFBu
YW1lU2xvdwotICAgIGxvYWRxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGVbdDFdLCB0MgotICAgIGxv
YWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MiwgdDEsIHQzKQotICAgIGJwbmVxIHQxLCBbdDBdLCAu
b3BOZXh0UG5hbWVTbG93Ci0gICAgYWRkcCA4LCB0MAotICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQ
bmFtZUNoZWNrUHJvdG90eXBlTG9vcAotLm9wTmV4dFBuYW1lVGFyZ2V0OgotICAgIGRpc3BhdGNo
SW50SW5kaXJlY3QoNikKLQotLm9wTmV4dFBuYW1lRW5kOgotICAgIGRpc3BhdGNoKDcpCi0KLS5v
cE5leHRQbmFtZVNsb3c6Ci0gICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV4dF9w
bmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVz
IHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgotICAgIGRpc3BhdGNoKDApCi0KLQogX2xs
aW50X29wX2NhdGNoOgogICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklU
J3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKICAgICAjIG1hY2hpbmUgY29kZSByZXR1
cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQkocmV2aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM1LDEyICsxMTM1
LDYgQEAgX2xsaW50X29wX3N0cmNhdDoKICAgICBkaXNwYXRjaCg0KQogCiAKLV9sbGludF9vcF9n
ZXRfcG5hbWVzOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9nZXRfcG5hbWVzKQotICAgIGRpc3BhdGNoKDApICMgVGhlIHNsb3dfcGF0aCBl
aXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgotCi0K
IF9sbGludF9vcF9wdXNoX3dpdGhfc2NvcGU6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1c2hfd2l0aF9zY29wZSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAkocmV2
aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkpT
R2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCiAjaW5jbHVkZSAiSlNOYW1lU2NvcGUuaCIKICNpbmNs
dWRlICJKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1dpdGhTY29w
ZS5oIgogI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkocmV2
aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDg3ICsyOCwzIEBACiAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCi0K
LSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0jaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKLSNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBD
bGFzc0luZm8gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6c19pbmZvID0geyAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvciIsIDAsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcikgfTsKLQotaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3Bl
cnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3RzKQotICAgIDogSlNDZWxs
KGV4ZWMtPnZtKCksIGV4ZWMtPnZtKCkucHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuZ2V0
KCkpCi0gICAgLCBtX251bUNhY2hlYWJsZVNsb3RzKG51bUNhY2hlYWJsZVNsb3RzKQotICAgICwg
bV9qc1N0cmluZ3NTaXplKHByb3BlcnR5TmFtZUFycmF5RGF0YS0+cHJvcGVydHlOYW1lVmVjdG9y
KCkuc2l6ZSgpKQotICAgICwgbV9qc1N0cmluZ3MobV9qc1N0cmluZ3NTaXplID8gc3RkOjptYWtl
X3VuaXF1ZTxXcml0ZUJhcnJpZXI8VW5rbm93bj5bXT4obV9qc1N0cmluZ3NTaXplKSA6IG51bGxw
dHIpCi17Ci19Ci0KLUpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvKQotewotICAgIEFTU0VSVCgh
by0+c3RydWN0dXJlKCktPmVudW1lcmF0aW9uQ2FjaGUoKSB8fAotICAgICAgICAgICAgby0+c3Ry
dWN0dXJlKCktPmVudW1lcmF0aW9uQ2FjaGUoKS0+Y2FjaGVkU3RydWN0dXJlKCkgIT0gby0+c3Ry
dWN0dXJlKCkgfHwKLSAgICAgICAgICAgIG8tPnN0cnVjdHVyZSgpLT5lbnVtZXJhdGlvbkNhY2hl
KCktPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gby0+c3RydWN0dXJlKCktPnByb3RvdHlwZUNo
YWluKGV4ZWMpKTsKLQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0KLSAgICBQcm9wZXJ0eU5h
bWVBcnJheSBwcm9wZXJ0eU5hbWVzKGV4ZWMpOwotICAgIG8tPm1ldGhvZFRhYmxlKCktPmdldFBy
b3BlcnR5TmFtZXMobywgZXhlYywgcHJvcGVydHlOYW1lcywgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcyk7Ci0gICAgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3RzID0gMDsKLSAgICBpZiAoIW8tPnN0
cnVjdHVyZSgpLT5oYXNOb25FbnVtZXJhYmxlUHJvcGVydGllcygpICYmICFvLT5zdHJ1Y3R1cmUo
KS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpCi0gICAgICAgICYmICFvLT5zdHJ1Y3R1cmUo
KS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSAmJiAhby0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQotICAgICAgICBudW1DYWNoZWFibGVTbG90
cyA9IHByb3BlcnR5TmFtZXMubnVtQ2FjaGVhYmxlU2xvdHMoKTsKLSAgICAKLSAgICBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4odm0uaGVhcCkpIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoZXhlYywgcHJvcGVydHlOYW1lcy5kYXRhKCksIG51bUNhY2hlYWJsZVNsb3Rz
KTsKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcHJvcGVy
dHlOYW1lcy5kYXRhKCksIG8pOwotCi0gICAgaWYgKG8tPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkKLSAgICAgICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7Ci0KLSAgICBpZiAo
by0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQot
ICAgICAgICByZXR1cm4ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKLSAgICAKLSAgICBpZiAoaGFz
SW5kZXhlZFByb3BlcnRpZXMoby0+aW5kZXhpbmdUeXBlKCkpKQotICAgICAgICByZXR1cm4ganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjsKLSAgICAKLSAgICBzaXplX3QgY291bnQgPSBub3JtYWxpemVQ
cm90b3R5cGVDaGFpbihleGVjLCBvKTsKLSAgICBTdHJ1Y3R1cmVDaGFpbiogc3RydWN0dXJlQ2hh
aW4gPSBvLT5zdHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7Ci0gICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4qIHN0cnVjdHVyZSA9IHN0cnVjdHVyZUNoYWluLT5oZWFkKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChzdHJ1Y3R1
cmVbaV0tPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcygpKQotICAgICAgICAg
ICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7Ci0gICAgfQotCi0gICAganNQcm9wZXJ0
eU5hbWVJdGVyYXRvci0+c2V0Q2FjaGVkUHJvdG90eXBlQ2hhaW4odm0sIHN0cnVjdHVyZUNoYWlu
KTsKLSAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zZXRDYWNoZWRTdHJ1Y3R1cmUodm0sIG8t
PnN0cnVjdHVyZSgpKTsKLSAgICBvLT5zdHJ1Y3R1cmUoKS0+c2V0RW51bWVyYXRpb25DYWNoZSh2
bSwganNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7Ci0gICAgcmV0dXJuIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3I7Ci19Ci0KLXZvaWQgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6ZGVzdHJveShKU0NlbGwq
IGNlbGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGNlbGwp
LT5KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjp+SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcigpOwotfQot
Ci1KU1ZhbHVlIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmdldChFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBiYXNlLCBzaXplX3QgaSkKLXsKLSAgICBKU1ZhbHVlIGlkZW50aWZpZXIgPSBtX2pz
U3RyaW5nc1tpXS5nZXQoKTsKLSAgICBpZiAobV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkgPT0gYmFz
ZS0+c3RydWN0dXJlKCkgJiYgbV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSA9PSBiYXNlLT5z
dHJ1Y3R1cmUoKS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCi0gICAgICAgIHJldHVybiBpZGVudGlm
aWVyOwotCi0gICAgaWYgKCFiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IGFzU3RyaW5nKGlkZW50aWZpZXIpLT52YWx1ZShleGVjKSkpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZSgpOwotICAgIHJldHVybiBpZGVudGlmaWVyOwotfQotCi12b2lkIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKLXsKLSAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqPihjZWxsKTsKLSAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0gICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXModGhpc09iamVjdC0+bV9qc1N0cmluZ3MuZ2V0KCksIHRoaXNPYmplY3QtPm1f
anNTdHJpbmdzU2l6ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4pOwotfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgJKHJldmlzaW9uIDE3MTYwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjksOTIgKzI5LDQgQEAK
ICNpZm5kZWYgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcl9oCiAjZGVmaW5lIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3JfaAogCi0jaW5jbHVkZSAiSlNPYmplY3QuaCIKLSNpbmNsdWRlICJKU1N0cmluZy5o
IgotI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCi0jaW5jbHVkZSA8bWVtb3J5PgotCi1u
YW1lc3BhY2UgSlNDIHsKLQotICAgIGNsYXNzIElkZW50aWZpZXI7Ci0gICAgY2xhc3MgSlNPYmpl
Y3Q7Ci0gICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwotCi0gICAgY2xhc3MgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewotICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwotCi0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwotCi0gICAg
ICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNP
YmplY3QqKTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
dHJ1ZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0
cnVlOwotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwotICAgICAgIAotICAg
ICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oQ2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKLQotICAgICAgICBKU1ZhbHVlIGdldChFeGVjU3RhdGUqLCBKU09iamVjdCosIHNpemVf
dCBpKTsKLSAgICAgICAgc2l6ZV90IHNpemUoKSB7IHJldHVybiBtX2pzU3RyaW5nc1NpemU7IH0K
LQotICAgICAgICB2b2lkIHNldENhY2hlZFN0cnVjdHVyZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoIW1fY2FjaGVkU3RydWN0dXJl
KTsKLSAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9jYWNoZWRT
dHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBzdHJ1Y3R1cmUpOwotICAgICAgICB9Ci0gICAgICAgIFN0
cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0
KCk7IH0KLQotICAgICAgICB2b2lkIHNldENhY2hlZFByb3RvdHlwZUNoYWluKFZNJiB2bSwgU3Ry
dWN0dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKSB7IG1fY2FjaGVkUHJvdG90eXBlQ2hh
aW4uc2V0KHZtLCB0aGlzLCBjYWNoZWRQcm90b3R5cGVDaGFpbik7IH0KLSAgICAgICAgU3RydWN0
dXJlQ2hhaW4qIGNhY2hlZFByb3RvdHlwZUNoYWluKCkgeyByZXR1cm4gbV9jYWNoZWRQcm90b3R5
cGVDaGFpbi5nZXQoKTsgfQotICAgICAgICAKLSAgICAgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsK
LQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IFN0cnVjdHVyZUlzSW1tb3J0YWw7Ci0K
LSAgICAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFByb3BlcnR5TmFtZUFycmF5RGF0
YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBKU09iamVjdCogb2JqZWN0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgICAgICBQcm9wZXJ0
eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJvcGVydHlOYW1lVmVjdG9yID0g
cHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKTsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9qc1N0cmluZ3NTaXplOyArK2kpCi0gICAgICAgICAg
ICAgICAgbV9qc1N0cmluZ3NbaV0uc2V0KHZtLCB0aGlzLCBqc093bmVkU3RyaW5nKCZ2bSwgcHJv
cGVydHlOYW1lVmVjdG9yW2ldLnN0cmluZygpKSk7Ci0gICAgICAgICAgICBtX2NhY2hlZFN0cnVj
dHVyZUlubGluZUNhcGFjaXR5ID0gb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5saW5lQ2FwYWNpdHko
KTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKLSAgICAgICAgCi0gICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURh
dGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKLQotICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKLSAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZUNoYWluPiBtX2NhY2hlZFByb3RvdHlwZUNoYWluOwotICAgICAgICB1aW50MzJfdCBtX251bUNh
Y2hlYWJsZVNsb3RzOwotICAgICAgICB1aW50MzJfdCBtX2pzU3RyaW5nc1NpemU7Ci0gICAgICAg
IHVuc2lnbmVkIG1fY2FjaGVkU3RydWN0dXJlSW5saW5lQ2FwYWNpdHk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj5bXT4gbV9qc1N0cmluZ3M7Ci0gICAgfTsK
LQotICAgIEFMV0FZU19JTkxJTkUgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogUmVnaXN0ZXI6OnBy
b3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBqc0Nhc3Q8
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcio+KGpzVmFsdWUoKS5hc0NlbGwoKSk7Ci0gICAgfQotCi0g
ICAgaW5saW5lIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIFN0cnVjdHVyZVJhcmVEYXRhOjplbnVt
ZXJhdGlvbkNhY2hlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2VudW1lcmF0aW9uQ2FjaGUu
Z2V0KCk7Ci0gICAgfQotICAgIAotICAgIGlubGluZSB2b2lkIFN0cnVjdHVyZVJhcmVEYXRhOjpz
ZXRFbnVtZXJhdGlvbkNhY2hlKFZNJiB2bSwgY29uc3QgU3RydWN0dXJlKiwgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvciogdmFsdWUpCi0gICAgewotICAgICAgICBtX2VudW1lcmF0aW9uQ2FjaGUuc2V0
KHZtLCB0aGlzLCB2YWx1ZSk7Ci0gICAgfQotCi19IC8vIG5hbWVzcGFjZSBKU0MKLQogI2VuZGlm
IC8vIEpTUHJvcGVydHlOYW1lSXRlcmF0b3JfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTYs
OCArNzE2LDYgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5UwogCiBQ
cm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oVk0m
IHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewot
ICAgIEFTU0VSVCghZW51bWVyYXRpb25DYWNoZSgpKTsKLQogICAgIERlZmVyR0MgZGVmZXJHQyh2
bS5oZWFwKTsKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnlGb3JQaW5uaW5n
KHZtLCBkZWZlckdDKTsKICAgICAKQEAgLTcyOSw3ICs3MjcsNiBAQCBQcm9wZXJ0eU9mZnNldCBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0CiBQcm9wZXJ0eU9mZnNldCBTdHJ1Y3R1cmU6OnJlbW92
ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oVk0mIHZtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKLSAgICBBU1NF
UlQoIWVudW1lcmF0aW9uQ2FjaGUoKSk7CiAKICAgICBEZWZlckdDIGRlZmVyR0Modm0uaGVhcCk7
CiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9yUGlubmluZyh2bSwgZGVm
ZXJHQyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
cmV2aXNpb24gMTcxNjA4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4MSw5ICsyODEsNiBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAhSlNDOjppc1ZhbGlkT2Zmc2V0KG1fb2Zmc2V0KTsKICAgICB9CiAKLSAgICB2b2lk
IHNldEVudW1lcmF0aW9uQ2FjaGUoVk0mLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJh
dGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCi0gICAg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSgpOyAvLyBEZWZpbmVkIGlu
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KLQogICAgIHZvaWQgc2V0Q2FjaGVkU3RydWN0dXJl
UHJvcGVydHlOYW1lRW51bWVyYXRvcihWTSYsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciopOwog
ICAgIHZvaWQgc2V0Q2FjaGVkR2VuZXJpY1Byb3BlcnR5TmFtZUVudW1lcmF0b3IoVk0mLCBKU1By
b3BlcnR5TmFtZUVudW1lcmF0b3IqKTsKICAgICBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3IqIGNh
Y2hlZFN0cnVjdHVyZVByb3BlcnR5TmFtZUVudW1lcmF0b3IoKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlubGluZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmgJKHJldmlz
aW9uIDE3MTYwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDIxICsxMzAsNiBAQCBpbmxpbmUgYm9vbCBT
dHJ1Y3R1cmU6OnRyYW5zaXRpdmVseVRyYW5zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbmxp
bmUgdm9pZCBTdHJ1Y3R1cmU6OnNldEVudW1lcmF0aW9uQ2FjaGUoVk0mIHZtLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKQotewotICAgIEFTU0VSVCghaXNEaWN0aW9u
YXJ5KCkpOwotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAgICAgICAgYWxsb2NhdGVSYXJlRGF0
YSh2bSk7Ci0gICAgcmFyZURhdGEoKS0+c2V0RW51bWVyYXRpb25DYWNoZSh2bSwgdGhpcywgZW51
bWVyYXRpb25DYWNoZSk7Ci19Ci0KLWlubGluZSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBTdHJ1
Y3R1cmU6OmVudW1lcmF0aW9uQ2FjaGUoKQotewotICAgIGlmICghaGFzUmFyZURhdGEoKSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHJhcmVEYXRhKCktPmVudW1lcmF0aW9uQ2FjaGUo
KTsKLX0KLQogaW5saW5lIEpTVmFsdWUgU3RydWN0dXJlOjpwcm90b3R5cGVGb3JMb29rdXAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBpZiAoaXNPYmplY3QoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVS
YXJlRGF0YS5jcHAJKHJldmlzaW9uIDE3MTYwOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZVJhcmVEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NiBAQAogI2luY2x1ZGUgIlN0cnVjdHVyZVJhcmVEYXRhLmgiCiAKICNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUVudW1lcmF0b3IuaCIKLSNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAKQEAgLTY4
LDcgKzY3LDYgQEAgdm9pZCBTdHJ1Y3R1cmVSYXJlRGF0YTo6dmlzaXRDaGlsZHJlbihKUwogICAg
IEpTQ2VsbDo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9wcmV2aW91cyk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fb2JqZWN0VG9TdHJpbmdWYWx1ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZW51bWVyYXRpb25DYWNoZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fY2FjaGVkU3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcik7CiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fY2FjaGVkR2VuZXJpY1Byb3BlcnR5TmFtZUVudW1l
cmF0b3IpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
UmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVSYXJlRGF0YS5oCShyZXZpc2lvbiAxNzE2MDgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVSYXJlRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw2IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNQcm9wZXJ0eU5hbWVFbnVtZXJh
dG9yOwotY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKIGNsYXNzIFN0cnVjdHVyZTsKIAog
Y2xhc3MgU3RydWN0dXJlUmFyZURhdGEgOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTU3LDkgKzU2LDYg
QEAgcHVibGljOgogICAgIEpTU3RyaW5nKiBvYmplY3RUb1N0cmluZ1ZhbHVlKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRPYmplY3RUb1N0cmluZ1ZhbHVlKFZNJiwgY29uc3QgSlNDZWxsKiBvd25lciwg
SlNTdHJpbmcqIHZhbHVlKTsKIAotICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0
aW9uQ2FjaGUoKTsKLSAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoVk0mLCBjb25zdCBTdHJ1
Y3R1cmUqIG93bmVyLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiB2YWx1ZSk7Ci0gICAgCiAgICAg
REVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvciogY2Fj
aGVkU3RydWN0dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcigpIGNvbnN0OwpAQCAtNzYsNyArNzIs
NiBAQCBwcml2YXRlOgogCiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9wcmV2aW91czsK
ICAgICBXcml0ZUJhcnJpZXI8SlNTdHJpbmc+IG1fb2JqZWN0VG9TdHJpbmdWYWx1ZTsKLSAgICBX
cml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcj4gbV9lbnVtZXJhdGlvbkNhY2hlOwog
ICAgIFdyaXRlQmFycmllcjxKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I+IG1fY2FjaGVkU3RydWN0
dXJlUHJvcGVydHlOYW1lRW51bWVyYXRvcjsKICAgICBXcml0ZUJhcnJpZXI8SlNQcm9wZXJ0eU5h
bWVFbnVtZXJhdG9yPiBtX2NhY2hlZEdlbmVyaWNQcm9wZXJ0eU5hbWVFbnVtZXJhdG9yOwogICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkocmV2aXNpb24gMTcxNjA4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw3ICs2NSw2IEBACiAjaW5jbHVkZSAiSlNQcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJKU1Byb21pc2VSZWFjdGlvbi5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVy
YXRvci5oIgotI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKICNpbmNsdWRlICJK
U1dpdGhTY29wZS5oIgogI2luY2x1ZGUgIkxleGVyLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCkBA
IC0yNTgsNyArMjU3LDYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBl
KQogICAgIHRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZS5zZXQoKnRoaXMsIFRlcm1p
bmF0ZWRFeGVjdXRpb25FcnJvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwogICAgIHN0cmluZ1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgbm90QW5PYmplY3RTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU05vdEFuT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
Ci0gICAgcHJvcGVydHlOYW1lSXRlcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAg
cHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTUHJvcGVydHlOYW1l
RW51bWVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGdl
dHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIGFwaVdyYXBwZXJTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU0FQSVZhbHVlV3JhcHBlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwo=
</data>
<flag name="review"
          id="260111"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>