<?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>158249</bug_id>
          
          <creation_ts>2016-05-31 21:23:31 -0700</creation_ts>
          <short_desc>REGRESSION:(r201481, r201523): 0.3% regression in Octane code-load</short_desc>
          <delta_ts>2016-05-31 21:29:44 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198060</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-31 21:23:31 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198061</commentid>
    <comment_count>1</comment_count>
      <attachid>280210</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-31 21:28:11 -0700</bug_when>
    <thetext>Created attachment 280210
Patch

Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198063</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-05-31 21:29:44 -0700</bug_when>
    <thetext>Committed r201542: &lt;http://trac.webkit.org/changeset/201542&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280210</attachid>
            <date>2016-05-31 21:28:11 -0700</date>
            <delta_ts>2016-05-31 21:29:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158249-20160601132927.patch</filename>
            <type>text/plain</type>
            <size>268962</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZGNmYjZhODBhZDY4ZjkyZTEzYjQ0NzVlYWFjNzZlNjc3NWQzYTNhLi44ODA4MzcxMDY0OTVkMjk3
M2QyNzkxZGQ1OTcwODA0ZjU4M2Q3YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMDggQEAKKzIwMTYtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjIwMTQ4MSwgcjIwMTUyMzog
MC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2RlLWxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI0OQorCisgICAgICAgICogQVBJL0pTU2Ny
aXB0UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVpbHRpbnMvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5qczogUmVtb3ZlZC4KKyAgICAgICAgKGFzeW5jRnVuY3Rpb25S
ZXN1bWUpOiBEZWxldGVkLgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHA6CisgICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZSk6
CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb246CisgICAgICAgICogYnl0ZWNv
ZGUvQnl0ZWNvZGVVc2VEZWYuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVVzZXNGb3JCeXRlY29k
ZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmNvbXB1dGVEZWZzRm9yQnl0ZWNvZGVP
ZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmR1bXBCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmlzQXJyb3dG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjppc09yZGluYXJ5QXJy
b3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpp
c0FzeW5jQXJyb3dGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZVVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZTo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUpOgorICAgICAgICAoSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IpOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROZXdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TmV3TWV0aG9kRGVmaW5pdGlvbik6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZEFycm93RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uRXhwcmVz
c2lvbkNvbW1vbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TmV3RnVuY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0
aW9uKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpwYXJzZSk6CisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6IERlbGV0ZWQu
CisgICAgICAgICogaml0L0pJVC5oOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0TmV3RnVuY0NvbW1vbik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9uZXdfYXN5bmNfZnVuYyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdE5ld0Z1bmNFeHByQ29tbW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cCk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJ
VE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAg
ICoganNjLmNwcDoKKyAgICAgICAgKHJ1bkludGVyYWN0aXZlKToKKyAgICAgICAgKHByaW50VXNh
Z2VTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKTogRGVsZXRlZC4K
KyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5oOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvS2V5d29yZHMudGFibGU6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+Ojppc0Fycm93RnVuY3Rpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdEl0ZW0pOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VJbXBvcnREZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVByb3BlcnR5TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRVbmV4cGVjdGVkVG9rZW5UZXh0KToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRz
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFi
bGVEZWNsYXJhdGlvbkxpc3QpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb25TdGF0ZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJh
bWV0ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXN5bmNGdW5j
dGlvbkRlY2xhcmF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRXhwcmVzc2lvbk9yTGFiZWxTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBd2FpdEV4cHJlc3Npb24pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3luY0Z1bmN0aW9uRXhwcmVz
c2lvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVu
YXJ5RXhwcmVzc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAg
ICAgICAoSlNDOjpTY29wZTo6U2NvcGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OkV4cHJlc3Np
b25FcnJvckNsYXNzaWZpZXI6OnByb3BhZ2F0ZUV4cHJlc3Npb25FcnJvckNsYXNzKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyOjpjbG9zZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxT
Y29wZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6cHVzaFNjb3BlKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyOjpwb3BTY29wZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjptYXRjaFNw
ZWNJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6cGFyc2UpOgorICAgICAgICAoSlNDOjpTY29w
ZTo6c2V0U291cmNlUGFyc2VNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6U2NvcGU6Omlz
QXN5bmNGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNjb3BlOjppc0FzeW5jRnVu
Y3Rpb25Cb3VuZGFyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNjb3BlOjppc01vZHVsZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlNjb3BlOjpzZXRJc0Z1bmN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzQXN5bmNBcnJvd0Z1bmN0aW9uKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6U2NvcGU6OnNldElzQXN5bmNGdW5jdGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlNjb3BlOjpzZXRJc0FzeW5jRnVuY3Rpb25Cb2R5KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6U2NvcGU6OnNldElzQXN5bmNBcnJvd0Z1bmN0aW9uQm9keSk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlBhcnNlcjo6RXhwcmVzc2lvbkVycm9yQ2xhc3NpZmllcjo6Zm9yY2VDbGFz
c2lmeUV4cHJlc3Npb25FcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcnNlcjo6RXhw
cmVzc2lvbkVycm9yQ2xhc3NpZmllcjo6aW5kaWNhdGVzUG9zc2libGVBc3luY0Fycm93RnVuY3Rp
b24pOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJzZXI6OmZvcmNlQ2xhc3NpZnlFeHByZXNz
aW9uRXJyb3IpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJzZXI6OmRlY2xhcmF0aW9uVHlw
ZVRvVmFyaWFibGVLaW5kKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyOjp1cHBlclNj
b3BlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UGFyc2VyOjppc0Rpc2FsbG93ZWRJZGVudGlm
aWVyQXdhaXQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpQYXJzZXI6OmRpc2FsbG93ZWRJZGVu
dGlmaWVyQXdhaXRSZWFzb24pOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rl
cy5oOgorICAgICAgICAoSlNDOjppc0Z1bmN0aW9uUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6
aXNNb2R1bGVQYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc1Byb2dyYW1QYXJzZU1vZGUpOgor
ICAgICAgICAoSlNDOjpTb3VyY2VQYXJzZU1vZGVTZXQ6OlNvdXJjZVBhcnNlTW9kZVNldCk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlNvdXJjZVBhcnNlTW9kZVNldDo6Y29udGFpbnMpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpTb3VyY2VQYXJzZU1vZGVTZXQ6Om1lcmdlU291cmNlUGFyc2VN
b2Rlcyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmlzQXN5bmNBcnJvd0Z1bmN0aW9uUGFyc2VNb2RlKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6aXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OmlzQXN5bmNGdW5jdGlvbkJvZHlQYXJzZU1vZGUpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBYmlsaXR5Rm9yUGFyc2VNb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAgICAgICogcGFyc2Vy
L1NvdXJjZUNvZGVLZXkuaDoKKyAgICAgICAgKEpTQzo6U291cmNlQ29kZUtleTo6U291cmNlQ29k
ZUtleSk6CisgICAgICAgIChKU0M6OlNvdXJjZUNvZGVLZXk6Om9wZXJhdG9yPT0pOgorICAgICAg
ICAoSlNDOjpTb3VyY2VDb2RlS2V5OjpydW50aW1lRmxhZ3MpOiBEZWxldGVkLgorICAgICAgICAq
IHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0FzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OmNhbGxBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmdldENhbGxE
YXRhKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpn
ZXRDb25zdHJ1Y3REYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0FzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5oOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOiBSZW1vdmVkLgorICAgICAgICAoSlNDOjpBc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlOjpBc3luY0Z1bmN0aW9uUHJvdG90eXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvblByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oOiBSZW1vdmVk
LgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUp
OiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZUNhY2hlLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUNhY2hlOjpnZXRHbG9iYWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQ2Fj
aGU6OmdldFByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEV2
YWxDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldE1vZHVsZVByb2dyYW1D
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJs
ZUZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50aW1lL0NvZGVDYWNoZS5oOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBs
ZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVja1N5bnRheCk6CisgICAgICAgIChKU0M6OmNo
ZWNrTW9kdWxlU3ludGF4KToKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uaDoKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjpuZXdDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
Y2hlY2tTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVj
dEZ1bmN0aW9uU2tpcHBpbmdFdmFsRW5hYmxlZENoZWNrKToKKyAgICAgICAgKiBydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQXN5bmNGdW5jdGlvbi5j
cHA6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGVJbXBs
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNBc3luY0Z1bmN0aW9uOjpjcmVhdGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgIChKU0M6OkpTQXN5bmNGdW5jdGlvbjo6
YWxsb2NhdGlvblNpemUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0FzeW5jRnVuY3Rpb246
OmNyZWF0ZVN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmNyZWF0ZVByb2dyYW1Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0OjpjcmVhdGVNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXN5bmNGdW5jdGlv
blN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Nb2R1bGVMb2FkZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoSlNDOjptb2R1bGVMb2FkZXJPYmplY3RQYXJzZU1vZHVsZSk6Cisg
ICAgICAgICogcnVudGltZS9SdW50aW1lRmxhZ3MuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUZs
YWdzOjpvcGVyYXRvcj09KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UnVudGltZUZsYWdzOjpv
cGVyYXRvciE9KTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQt
YmFzaWMuanM6IFJlbW92ZWQuCisgICAgICAgIChzaG91bGRCZSk6IERlbGV0ZWQuCisgICAgICAg
IChzaG91bGRCZUFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KTogRGVsZXRl
ZC4KKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoc2hvdWxk
VGhyb3dTeW50YXhFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChsZXQuQXN5bmNGdW5jdGlvbi5h
c3luYyk6IERlbGV0ZWQuCisgICAgICAgIChhc3luYy5hc3luY0Z1bmN0aW9uRm9yUHJvdG8pOiBE
ZWxldGVkLgorICAgICAgICAoT2JqZWN0LmdldFByb3RvdHlwZU9mLmFzeW5jKTogRGVsZXRlZC4K
KyAgICAgICAgKE9iamVjdC5nZXRQcm90b3R5cGVPZi5hc3luYy5tZXRob2QpOiBEZWxldGVkLgor
ICAgICAgICAoYXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoYXN5bmMubWV0aG9kKTogRGVsZXRl
ZC4KKyAgICAgICAgKGFzeW5jLmFzeW5jTm9uQ29uc3RydWN0b3JEZWNsKTogRGVsZXRlZC4KKyAg
ICAgICAgKHNob3VsZFRocm93Lm5ldy5hc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChzaG91bGRU
aHJvdy5uZXcuYXN5bmMubm9uQ29uc3RydWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoYXN5bmMu
YXN5bmNEZWNsKTogRGVsZXRlZC4KKyAgICAgICAgKGFzeW5jLmYpOiBEZWxldGVkLgorICAgICAg
ICAoTXlFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChhc3luYy5hc3luY0RlY2xUaHJvd2VyKTog
RGVsZXRlZC4KKyAgICAgICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMpOiBEZWxldGVkLgorICAg
ICAgICAocmVzb2x2ZUxhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKHJlamVjdExhdGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKGFzeW5jLnJlc3VtZUFmdGVyTm9ybWFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJOb3JtYWwpOiBEZWxldGVkLgorICAgICAgICAocmVzdW1l
QWZ0ZXJOb3JtYWxBcnJvdy5hc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChhc3luYy5yZXN1bWVB
ZnRlclRocm93KTogRGVsZXRlZC4KKyAgICAgICAgKE8uYXN5bmMucmVzdW1lQWZ0ZXJUaHJvdyk6
IERlbGV0ZWQuCisgICAgICAgIChyZXN1bWVBZnRlclRocm93QXJyb3cuYXN5bmMpOiBEZWxldGVk
LgorICAgICAgICAoY2F0Y2gpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hc3lu
Yy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qczogUmVtb3ZlZC4KKyAgICAgICAgKHNob3Vs
ZFRocm93KTogRGVsZXRlZC4KKyAgICAgICAgKFN5bnRheEVycm9yLkNhbnN0cmluZ19hcHBlYXJl
ZF9oZXJlYXdhaXQuY2hlY2tNb2R1bGVTeW50YXhFcnJvci5TdHJpbmcucmF3LmF3YWl0KTogRGVs
ZXRlZC4KKyAgICAgICAgKGNoZWNrTW9kdWxlU3ludGF4RXJyb3IuU3RyaW5nLnJhdy5hd2FpdCk6
IERlbGV0ZWQuCisgICAgICAgIChjaGVja01vZHVsZVN5bnRheEVycm9yLlN0cmluZy5yYXcuYXN5
bmMuYXdhaXQpOiBEZWxldGVkLgorICAgICAgICAoU3ludGF4RXJyb3IuQ2Fubm90LmRlY2xhcmUu
bmFtZWQpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb3pp
bGxhLmpzOiBSZW1vdmVkLgorICAgICAgICAoc2hvdWxkQmUpOiBEZWxldGVkLgorICAgICAgICAo
c2hvdWxkQmVBc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChzaG91bGRUaHJvdyk6IERlbGV0ZWQu
CisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKGFzc2VydCk6
IERlbGV0ZWQuCisgICAgICAgIChzaG91bGRUaHJvd1N5bnRheEVycm9yKTogRGVsZXRlZC4KKyAg
ICAgICAgKG1velNlbWFudGljcy5hc3luYy5lbXB0eSk6IERlbGV0ZWQuCisgICAgICAgIChtb3pT
ZW1hbnRpY3MuYXN5bmMuc2ltcGxlUmV0dXJuKTogRGVsZXRlZC4KKyAgICAgICAgKG1velNlbWFu
dGljcy5hc3luYy5zaW1wbGVBd2FpdCk6IERlbGV0ZWQuCisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMuc2ltcGxlQXdhaXRBc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMucmV0dXJuT3RoZXJBc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChtb3pTZW1hbnRpY3Mu
YXN5bmMuc2ltcGxlVGhyb3dlcik6IERlbGV0ZWQuCisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5
bmMuZGVsZWdhdGVkVGhyb3dlcik6IERlbGV0ZWQuCisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5
bmMudHJ5Q2F0Y2gpOiBEZWxldGVkLgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLnRyeUNh
dGNoVGhyb3cpOiBEZWxldGVkLgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLndlbGxGaW5h
bGx5KTogRGVsZXRlZC4KKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5maW5hbGx5TWF5RmFp
bCk6IERlbGV0ZWQuCisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZW1iZWRkZWQuYXN5bmMu
aW5uZXIpOiBEZWxldGVkLgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmVtYmVkZGVkKTog
RGVsZXRlZC4KKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5maWIpOiBEZWxldGVkLgorICAg
ICAgICAobW96U2VtYW50aWNzLmFzeW5jLmlzT2RkLmFzeW5jLmlzRXZlbik6IERlbGV0ZWQuCisg
ICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuaXNPZGQpOiBEZWxldGVkLgorICAgICAgICAobW96
U2VtYW50aWNzLmhhcmRjb3JlRmliLmFzeW5jLmZpYjIpOiBEZWxldGVkLgorICAgICAgICAobW96
U2VtYW50aWNzLm5hbWVkQXN5bmNFeHByLmFzeW5jLnNpbXBsZSk6IERlbGV0ZWQuCisgICAgICAg
IChtb3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIuYXN5bmMuZmlyc3QpOiBEZWxldGVk
LgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1dGlvbk9yZGVyLmFzeW5jLnNlY29u
ZCk6IERlbGV0ZWQuCisgICAgICAgIChtb3pTZW1hbnRpY3MuYXN5bmMuZXhlY3V0aW9uT3JkZXIu
YXN5bmMudGhpcmQpOiBEZWxldGVkLgorICAgICAgICAobW96U2VtYW50aWNzLmFzeW5jLmV4ZWN1
dGlvbk9yZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5taXNjZWxs
YW5lb3VzKTogRGVsZXRlZC4KKyAgICAgICAgKG1velNlbWFudGljcy50aHJvd2VyKTogRGVsZXRl
ZC4KKyAgICAgICAgKG1velNlbWFudGljcy5hc3luYy5kZWZhdWx0QXJncyk6IERlbGV0ZWQuCisg
ICAgICAgIChtb3pTZW1hbnRpY3Muc2hvdWxkVGhyb3cpOiBEZWxldGVkLgorICAgICAgICAobW96
U2VtYW50aWNzKTogRGVsZXRlZC4KKyAgICAgICAgKG1vek1ldGhvZHMuWCk6IERlbGV0ZWQuCisg
ICAgICAgIChtb3pNZXRob2RzLlgucHJvdG90eXBlLmFzeW5jLmdldFZhbHVlKTogRGVsZXRlZC4K
KyAgICAgICAgKG1vek1ldGhvZHMuWC5wcm90b3R5cGUuc2V0VmFsdWUpOiBEZWxldGVkLgorICAg
ICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5pbmNyZW1lbnQpOiBEZWxldGVkLgor
ICAgICAgICAobW96TWV0aG9kcy5YLnByb3RvdHlwZS5hc3luYy5nZXRCYXNlQ2xhc3NOYW1lKTog
RGVsZXRlZC4KKyAgICAgICAgKG1vek1ldGhvZHMuWC5hc3luYy5nZXRTdGF0aWNWYWx1ZSk6IERl
bGV0ZWQuCisgICAgICAgIChtb3pNZXRob2RzLlkucHJvdG90eXBlLmFzeW5jLmdldEJhc2VDbGFz
c05hbWUpOiBEZWxldGVkLgorICAgICAgICAobW96TWV0aG9kcy5ZKTogRGVsZXRlZC4KKyAgICAg
ICAgKG1vekZ1bmN0aW9uTmFtZUluZmVycmVuY2UuYXN5bmMudGVzdCk6IERlbGV0ZWQuCisgICAg
ICAgIChtb3pTeW50YXhFcnJvcnMpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9h
c3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzOiBSZW1vdmVkLgorICAgICAgICAoYXNzZXJ0KTog
RGVsZXRlZC4KKyAgICAgICAgKHNob3VsZFRocm93U3ludGF4RXJyb3IpOiBEZWxldGVkLgorICAg
ICAgICAoQXN5bmNGdW5jdGlvbi5hc3luYyk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdHMvc3Ry
ZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX2FyZ3VtZW50c19iaW5kaW5nLmpzOiBS
ZW1vdmVkLgorICAgICAgICAoc2hvdWxkQmUpOiBEZWxldGVkLgorICAgICAgICAoc2hvdWxkQmVB
c3luYyk6IERlbGV0ZWQuCisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKTogRGVsZXRlZC4KKyAg
ICAgICAgKG5vQXJndW1lbnRzQXJyb3cyLmFzeW5jKTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0
cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfbmV3LnRhcmdldF9iaW5kaW5n
LmpzOiBSZW1vdmVkLgorICAgICAgICAoc2hvdWxkQmUpOiBEZWxldGVkLgorICAgICAgICAoc2hv
dWxkQmVBc3luYyk6IERlbGV0ZWQuCisgICAgICAgIChzaG91bGRUaHJvd0FzeW5jKTogRGVsZXRl
ZC4KKyAgICAgICAgKEMxKTogRGVsZXRlZC4KKyAgICAgICAgKEMyKTogRGVsZXRlZC4KKyAgICAg
ICAgKHNob3VsZFRocm93QXN5bmMuYXN5bmMpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL3N0
cmVzcy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9zdXBlcl9iaW5kaW5nLmpzOiBSZW1v
dmVkLgorICAgICAgICAoc2hvdWxkQmUpOiBEZWxldGVkLgorICAgICAgICAoc2hvdWxkQmVBc3lu
Yyk6IERlbGV0ZWQuCisgICAgICAgIChCYXNlQ2xhc3MucHJvdG90eXBlLmJhc2VDbGFzc1ZhbHVl
KTogRGVsZXRlZC4KKyAgICAgICAgKEJhc2VDbGFzcy5wcm90b3R5cGUuZ2V0IHByb3BlcnR5KTog
RGVsZXRlZC4KKyAgICAgICAgKEJhc2VDbGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChDaGlsZENs
YXNzLnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcCk6IERlbGV0ZWQuCisgICAgICAgIChDaGlsZENs
YXNzLnByb3RvdHlwZS5hc3luY1N1cGVyUHJvcDIpOiBEZWxldGVkLgorICAgICAgICAoQ2hpbGRD
bGFzcyk6IERlbGV0ZWQuCisgICAgICAgIChDaGlsZENsYXNzMik6IERlbGV0ZWQuCisgICAgICAg
ICogdGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3RoaXNfYmluZGlu
Zy5qczogUmVtb3ZlZC4KKyAgICAgICAgKHNob3VsZEJlKTogRGVsZXRlZC4KKyAgICAgICAgKHNo
b3VsZEJlQXN5bmMpOiBEZWxldGVkLgorICAgICAgICAoZC55KTogRGVsZXRlZC4KKwogMjAxNi0w
NS0zMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwMTM2MyBhbmQgcjIwMTQ1Ni4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwppbmRleCA4MmI2ZWMzOGY2ZTgyYWQ3MmI5ZTU1MWMyMTk4ZWNhZGNmYjRmOWFjLi45ZDFmMTdk
YjAyOGZhMjg1NzFhZTdlMDlmZWE1ZjY0NDUxNTA3ZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTAgQEAKKzIwMTYtMDUtMzEgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjIwMTQ4MSwgcjIwMTUyMzog
MC4zJSByZWdyZXNzaW9uIGluIE9jdGFuZSBjb2RlLWxvYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODI0OQorCisgICAgICAgICogV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKwogMjAxNi0wNS0yNyAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoKSBzaG91bGQgbm90IGNv
cHkgY2FwdHVyZWQgbGFtYmRhIHZhcmlhYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDYxMWZkZmJm
MDdlNjM1Y2EzZjg2ZDJjMDQ0YmEzZGYxMTFlMTk2NjUuLjVhNmYxMjE3NDYyMTcyYWYzZTNhYmE2
MzExNWU4MTIzMjQ4ZjQyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMCBAQAorMjAx
Ni0wNS0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBVbnJldmlld2VkLCByb2xsIG91dCByMjAxNDgxLCByMjAxNTIzOiAwLjMlIHJlZ3Jlc3Npb24g
aW4gT2N0YW5lIGNvZGUtbG9hZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MjQ5CisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaWRsOgorCiAyMDE2LTA1LTI3ICBDYWl0bGluIFBvdHRlciAgPGNhaXRwQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0pTQ10gaW1wbGVtZW50IGFzeW5jIGZ1bmN0aW9ucyBwcm9wb3Nh
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDZlYzk0MTgyZTE2YWQ0NWE2ZjM5MDM5NDZiMTFjMTYzMjVkY2EzZDku
LmI4ZjZkNGVmY2U5MTI1MWVlYTdlMWIwZGMyZjE4NTY2YzJiYzZjZDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMSBAQAorMjAxNi0wNS0zMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsIG91dCByMjAxNDgxLCByMjAxNTIz
OiAwLjMlIHJlZ3Jlc3Npb24gaW4gT2N0YW5lIGNvZGUtbG9hZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjQ5CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKIDIwMTYtMDUtMzEgIEJldGggRGFr
aW4gIDxiZGFraW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCB0d28gb3B0aW9uYWwgaXRlbXMg
dG8gV2ViVmlld0ltcGxEZWxlZ2F0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0
UmVmLmNwcAppbmRleCBmY2EzMWYwN2MzMWFhNjNjYmNiZjhmMWQ1MTE4Y2NhODdmYjM2Y2RhLi42
MGJkZTYwNGUzNTg1MTZmMWVmNmNhYTIzZDgxMjQ4OTJjY2ZhOTU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdHJ1Y3QgT3Bh
cXVlSlNTY3JpcHQgOiBwdWJsaWMgU291cmNlUHJvdmlkZXIgewogc3RhdGljIGJvb2wgcGFyc2VT
Y3JpcHQoVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJv
cikKIHsKICAgICByZXR1cm4gISFKU0M6OnBhcnNlPEpTQzo6UHJvZ3JhbU5vZGU+KAotICAgICAg
ICB2bSwgUnVudGltZUZsYWdzKCksIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlOjpOb3RCdWlsdGluLAorICAgICAgICB2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIEpT
UGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9k
ZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6
Ok5vdE5lZWRlZCwKICAgICAgICAgZXJyb3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDYxYWI2ZjU3MDM0MWUzNGU0N2RkYzQyNGM2NGM1MDU4NzA2MDZiM2YuLjI0
YTBiNjY5NDEwMjYyNWMxMTcwZjM3ZmFlNDc1NTAyY2JkODBmOWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKQEAgLTYwOCw4ICs2MDgsNiBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
U09VUkNFUwogICAgIHJ1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0Fy
cmF5SXRlcmF0b3JQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
LSAgICBydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKLSAgICBydW50aW1lL0Fz
eW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9CYXNpY0Jsb2NrTG9jYXRpb24u
Y3BwCiAgICAgcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9Cb29s
ZWFuT2JqZWN0LmNwcApAQCAtNjg0LDcgKzY4Miw2IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXcuY3BwCiAgICAgcnVudGltZS9KU0FycmF5SXRlcmF0b3IuY3BwCi0g
ICAgcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uY3BwCiAgICAgcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCiAgICAgcnVudGltZS9KU0JvdW5kU2xvdEJhc2VGdW5jdGlvbi5jcHAKICAgICBydW50
aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0xMjEzLDcgKzEyMTAsNiBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfQlVJTFRJTlNfU09VUkNFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWlsdGlucy9B
cnJheUNvbnN0cnVjdG9yLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5zL0Fy
cmF5SXRlcmF0b3JQcm90b3R5cGUuanMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRp
bnMvQXJyYXlQcm90b3R5cGUuanMKLSAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnVpbHRpbnMv
QXN5bmNGdW5jdGlvblByb3RvdHlwZS5qcwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9idWls
dGlucy9EYXRlUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0Z1bmN0aW9uUHJvdG90eXBlLmpzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J1aWx0aW5z
L0dlbmVyYXRvclByb3RvdHlwZS5qcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQppbmRleCAxN2I0M2Y2MmNlM2Y1YTk4MThlOGM5MDExN2VjMmE4MTA1M2VjM2MzLi43
MmU0MWY0NGRmMzljZTNmZjEyZTlhZGU2ZmI5NGUxNGIxMjk2MzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODQsNyArODQsNiBAQCBKYXZhU2NyaXB0
Q29yZV9CVUlMVElOU19TT1VSQ0VTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0FycmF5Q29uc3RydWN0b3IuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5zL0Fy
cmF5SXRlcmF0b3JQcm90b3R5cGUuanMgXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2J1aWx0aW5z
L0FycmF5UHJvdG90eXBlLmpzIFwKLSAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9Bc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9E
YXRlUHJvdG90eXBlLmpzIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9idWlsdGlucy9GdW5jdGlv
blByb3RvdHlwZS5qcyBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvYnVpbHRpbnMvR2VuZXJhdG9y
UHJvdG90eXBlLmpzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDA2MGQ5OTAx
ODU2NDZjMDJlMTc0NmM0N2I2YzExMTllMThhOTQ1ZC4uYWVmZTIzNGI5ODQ4YjlmNGI3N2RiYzMx
MzM5ZGJhMjA3NjIwMGJiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExNzks
MTIgKzExNzksNiBAQAogCQk1MzUyOUE0QzFDNDU3Qjc1MDAwQjQ5QzYgLyogQVBJVXRpbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzNTI5QTRCMUM0
NTdCNzUwMDBCNDlDNiAvKiBBUElVdGlscy5oICovOyB9OwogCQk1MzcwQjRGNTFCRjI2MjAyMDA1
QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGMzFC
RjI1RUEyMDA1QzQwRkMgLyogQWRhcHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50
QmFzZS5jcHAgKi87IH07CiAJCTUzNzBCNEY2MUJGMjYyMDUwMDVDNDBGQyAvKiBBZGFwdGl2ZUlu
ZmVycmVkUHJvcGVydHlWYWx1ZVdhdGNocG9pbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzcwQjRGNDFCRjI1RUEyMDA1QzQwRkMgLyogQWRh
cHRpdmVJbmZlcnJlZFByb3BlcnR5VmFsdWVXYXRjaHBvaW50QmFzZS5oICovOyB9OwotCQk1QkQz
QTA2NzFDQUUzMjU3MDBGODRCQTMgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCRDNBMDYxMUNBRTMy
NTcwMEY4NEJBMyAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICovOyB9OwotCQk1QkQz
QTA2ODFDQUUzMjU3MDBGODRCQTMgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QkQzQTA2MjFDQUUzMjU3
MDBGODRCQTMgLyogQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmggKi87IH07Ci0JCTVCRDNBMDY5
MUNBRTMyNTcwMEY4NEJBMyAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCRDNBMDYzMUNBRTMyNTcwMEY4
NEJBMyAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLzsgfTsKLQkJNUJEM0EwNkExQ0FF
MzI1NzAwRjg0QkEzIC8qIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVCRDNBMDY0MUNBRTMyNTcwMEY4NEJBMyAv
KiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggKi87IH07Ci0JCTVCRDNBMDZCMUNBRTMyNTcwMEY4
NEJBMyAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUJEM0EwNjUxQ0FFMzI1NzAwRjg0QkEzIC8qIEpTQXN5bmNGdW5j
dGlvbi5jcHAgKi87IH07Ci0JCTVCRDNBMDZFMUNBRTM1QkYwMEY4NEJBMyAvKiBKU0FzeW5jRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVC
RDNBMDZEMUNBRTM1QkYwMEY4NEJBMyAvKiBKU0FzeW5jRnVuY3Rpb24uaCAqLzsgfTsKIAkJNTM5
MTdFN0IxQjc5MDZGQTAwMEVCRDMzIC8qIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBl
RnVuY3Rpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzkxN0U3QTFCNzkwNkU0MDAwRUJEMzMgLyogSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVGdW5jdGlvbnMuaCAqLzsgfTsKIAkJNTNGNkJGNkQxQzNGMDYwQTAwRjQxRTVEIC8qIElu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNGNkJGNkMxQzNGMDYwQTAwRjQxRTVEIC8qIEludGVy
bmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTVENUQ4QUQxMEUwRDBFQkUwMEY5QzY5MiAvKiBsaWJl
ZGl0LmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUQ1RDhBRDAwRTBEMEVCRTAwRjlDNjkyIC8qIGxpYmVkaXQuZHlsaWIgKi87IH07CkBAIC0z
MzI5LDEzICszMzIzLDYgQEAKIAkJNTNGMjU2RTExQjg3RTI4MDAwQjRCNzY4IC8qIEpTVHlwZWRB
cnJheVZpZXdQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRjZCRjZDMUMzRjA2MEEwMEY0MUU1RCAvKiBJbnRlcm5hbEZ1bmN0aW9uQWxsb2Nh
dGlvblByb2ZpbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZXJuYWxG
dW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU5M0Q0M0NDQTBCQkUwNkQ4OUM1OTcwNyAvKiBNYXBEYXRhSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXBEYXRhSW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk1QkQzQTA2MTFDQUUzMjU3MDBGODRCQTMgLyogQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVC
RDNBMDYyMUNBRTMyNTcwMEY4NEJBMyAvKiBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVCRDNBMDYzMUNBRTMyNTcwMEY4NEJBMyAv
KiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk1QkQzQTA2NDFDQUUzMjU3MDBGODRCQTMgLyogQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVCRDNBMDY1MUNBRTMyNTcw
MEY4NEJBMyAvKiBKU0FzeW5jRnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNBc3luY0Z1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNUJEM0EwNkQxQ0FFMzVCRjAwRjg0QkEzIC8qIEpTQXN5bmNGdW5jdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FzeW5jRnVuY3Rpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUJGNDc0ODgxQ0IxQzVEQjAwMDJCQUQ3IC8qIEFzeW5jRnVu
Y3Rpb25Qcm90b3R5cGUuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGgg
PSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1RDVEOEFEMDBFMEQwRUJFMDBGOUM2OTIgLyogbGliZWRpdC5keWxpYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHls
aWIiOyBuYW1lID0gbGliZWRpdC5keWxpYjsgcGF0aCA9IC91c3IvbGliL2xpYmVkaXQuZHlsaWI7
IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTVEQUZENkNCMTQ2QjY4NjMwMEZCRUZC
NCAvKiBKU0MueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gSlNDLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1RERERjQ0NjE0RkVFNzIyMDBCNEZCNEQgLyogTExJbnREZXNp
cmVkT2Zmc2V0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERlc2ly
ZWRPZmZzZXRzLmg7IHBhdGggPSBMTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtNTUzMywxMCArNTUyMCw2IEBA
CiAJCQkJRjY5MkE4NEQwMjU1NTk3RDAxRkY2MEY3IC8qIEFycmF5UHJvdG90eXBlLmNwcCAqLywK
IAkJCQlGNjkyQTg0RTAyNTU1OTdEMDFGRjYwRjcgLyogQXJyYXlQcm90b3R5cGUuaCAqLywKIAkJ
CQkwRkI3RjM4QTE1RUQ4RTM4MDBGMTY3QjIgLyogQXJyYXlTdG9yYWdlLmggKi8sCi0JCQkJNUJE
M0EwNjExQ0FFMzI1NzAwRjg0QkEzIC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgKi8s
Ci0JCQkJNUJEM0EwNjIxQ0FFMzI1NzAwRjg0QkEzIC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oICovLAotCQkJCTVCRDNBMDYzMUNBRTMyNTcwMEY4NEJBMyAvKiBBc3luY0Z1bmN0aW9uUHJv
dG90eXBlLmNwcCAqLywKLQkJCQk1QkQzQTA2NDFDQUUzMjU3MDBGODRCQTMgLyogQXN5bmNGdW5j
dGlvblByb3RvdHlwZS5oICovLAogCQkJCTUyNjc4RjhDMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNp
Y0Jsb2NrTG9jYXRpb24uY3BwICovLAogCQkJCTUyNjc4RjhEMUEwMzEwMDkwMDZBMzA2RCAvKiBC
YXNpY0Jsb2NrTG9jYXRpb24uaCAqLywKIAkJCQkxNDdCODNBQTBFNkRCOEM5MDA0Nzc1QTQgLyog
QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCAqLywKQEAgLTU3MTMsOCArNTY5Niw2IEBACiAJ
CQkJMEYyQjY2QkMxN0I2QjVBQjAwQTdBRTNGIC8qIEpTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5o
ICovLAogCQkJCUE3QkRBRUM0MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuY3Bw
ICovLAogCQkJCUE3QkRBRUM1MTdGNEVBMTQwMEY2MTQwQyAvKiBKU0FycmF5SXRlcmF0b3IuaCAq
LywKLQkJCQk1QkQzQTA2NTFDQUUzMjU3MDBGODRCQTMgLyogSlNBc3luY0Z1bmN0aW9uLmNwcCAq
LywKLQkJCQk1QkQzQTA2RDFDQUUzNUJGMDBGODRCQTMgLyogSlNBc3luY0Z1bmN0aW9uLmggKi8s
CiAJCQkJODZGQTlFOEYxNDJCQkIyRDAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJODZGQTlFOTAxNDJCQkIyRTAwMTc3M0I3IC8qIEpTQm91bmRGdW5jdGlvbi5oICovLAog
CQkJCTQ2RDREQ0JCMUM1QUIyRDUwMEQ4RDMyMSAvKiBKU0JvdW5kU2xvdEJhc2VGdW5jdGlvbi5j
cHAgKi8sCkBAIC02ODY4LDcgKzY4NDksNiBAQAogCQlBN0Q4MDE5RjE4ODBENjZFMDAyNkMzOUIg
LyogYnVpbHRpbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAot
CQkJCTVCRjQ3NDg4MUNCMUM1REIwMDAyQkFENyAvKiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpz
ICovLAogCQkJCUE3RDgwMUEwMTg4MEQ2NkUwMDI2QzM5QiAvKiBBcnJheVByb3RvdHlwZS5qcyAq
LywKIAkJCQk3Q0Y5QkM1ODFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlDb25zdHJ1Y3Rvci5qcyAq
LywKIAkJCQk3Q0Y5QkM1OTFCNjVEOUEzMDA5REIxRUYgLyogQXJyYXlJdGVyYXRvclByb3RvdHlw
ZS5qcyAqLywKQEAgLTcxODYsNyArNzE2Niw2IEBACiAJCQkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMx
RjhGIC8qIERhdGFGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkRGMTdCNkI1QUIw
MEE3QUUzRiAvKiBEYXRhVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEMjAzNEEwRTE3MTM1
RTAwMkM3RTgyIC8qIERhdGVDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNUJEM0Ew
NjgxQ0FFMzI1NzAwRjg0QkEzIC8qIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTk2QjczMUExQkRBMDhEMTAwMzMxQjg0IC8qIERhdGVDb25zdHJ1Y3Rvci5s
dXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxMzU5Q0YzMEZERDg5QUQwMDIwNjE4MCAvKiBEYXRl
Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxMTY2MDIwRTE5OTdCNDAwODA2NkRE
IC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03NTQ0LDcgKzc1MjMsNiBAQAog
CQkJCUZFMTg3QTBEMUMwMzBENUMwMDM4QkJDQSAvKiBKSVREaXZHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJBRDg5MzJCMTdFMzg2OEYwMDY2ODI3NiAvKiBIZWFwSXRlcmF0aW9uU2Nv
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MzM5RUM5MUJCNEI0NjAwMDU0RjAwNSAvKiBIZWFw
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTVCRDNBMDZBMUNBRTMyNTcwMEY4NEJBMyAv
KiBBc3luY0Z1bmN0aW9uUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyQTZGNDYyNjE3
RTk1OUNFMDBDNDVDOTggLyogSGVhcE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRG
OTc0NDcxMzhDODUzRTAwREExQzY3IC8qIEhlYXBSb290VmlzaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzI0RDMxRTMxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4gSGVh
ZGVycyAqLywKQEAgLTgwODgsNyArODA2Niw2IEBACiAJCQkJQTdCNjAxODIxNjM5RkQyQTAwMzcy
QkEzIC8qIFVubGlua2VkQ29kZUJsb2NrLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDE0MkU1MTFC
Nzk2RUNFMDBGNEJGNEIgLyogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMkU4OTJDMTZEMDI4QUQwMDlFNEZEMiAvKiBVbnVzZWRQb2ludGVyLmggaW4g
SGVhZGVycyAqLywKLQkJCQk1QkQzQTA2RTFDQUUzNUJGMDBGODRCQTMgLyogSlNBc3luY0Z1bmN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBCMTFCRDU5OTRFMDBGNDU3NUMgLyogVXBk
YXRlQ29udGVudHMucHkgaW4gSGVhZGVycyAqLywKIAkJCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5
QjIgLyogVmFsdWVQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQyNkE0ODE0NjBDQkIz
MDAxMzFGOEYgLyogVmFsdWVSZWNvdmVyeS5oIGluIEhlYWRlcnMgKi8sCkBAIC04NjU1LDcgKzg2
MzIsNiBAQAogCQkJCTBGRUM4NThCMUJEQUNEQzcwMDgwRkY3NCAvKiBBaXJTdGFja1Nsb3QuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFQzg1OEQxQkRBQ0RDNzAwODBGRjc0IC8qIEFpclRtcC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVDODU5MDFCREFDREM3MDA4MEZGNzQgLyogQWlyVmFs
aWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUJEM0EwNkIxQ0FFMzI1NzAwRjg0QkEzIC8q
IEpTQXN5bmNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDdGMzlCRDEwN0VDMzc2
MDA0MjdBNDggLyogQXJnTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjc0M0JBQTE2Qjg4
MjQ5MDA5RjkyNzcgLyogQVJNNjREaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODZEM0IyQzMxMDE1NkJERTAwMjg2NUU3IC8qIEFSTUFzc2VtYmxlci5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTkyNjksNyArOTI0NSw2IEBACiAJCQkJMEZGNzI5QUUxNjZBRDM1QzAwMEY1QkEzIC8q
IFByb2ZpbGVyQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTM5MTI5MTY3NzFD
MzMwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEZGNzI5QUYxNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNUJEM0EwNjcxQ0FFMzI1NzAwRjg0QkEzIC8qIEFzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY3MjlCMDE2NkFEMzVD
MDAwRjVCQTMgLyogUHJvZmlsZXJDb21waWxhdGlvbktpbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZGNzI5QjExNjZBRDM1QzAwMEY1QkEzIC8qIFByb2ZpbGVyQ29tcGlsZWRCeXRlY29kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY3MjlCMjE2NkFEMzVDMDAwRjVCQTMgLyogUHJvZmls
ZXJEYXRhYmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTk0MDQsNyArOTM3OSw2IEBACiAJCQkJ
MEY5MTlEMjUxNTg1M0NFMDAwNEE0RTdEIC8qIFdhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFDRjczNzcxNzFDQTZGQjAwQzlCQjFFIC8qIFdlYWsuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTRFODRGOUUxNEVFMUFDQzAwRDZENUQ0IC8qIFdlYWtCbG9jay5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQk1QkQzQTA2OTFDQUUzMjU3MDBGODRCQTMgLyogQXN5bmNGdW5jdGlvblByb3Rv
dHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNEY3MjU2NTE0RUUyNjVFMDBCMTY1MkIgLyog
V2Vha0hhbmRsZU93bmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3Q0EzQUUzMTdEQTQxQUUw
MDY1MzhBRiAvKiBXZWFrTWFwQ29uc3RydWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYz
MzhERjkxQkU5NkFBODAwMTNDODhGIC8qIEIzQ0NhbGxWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9u
UHJvdG90eXBlLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rp
b25Qcm90b3R5cGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOWZhZDZhYTRm
Y2MwOTdmZmQ4OTdjNTBhYTMzOTYzMDJkNDU5MDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5j
RnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gYXN5
bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKLXsKLSAg
ICAidXNlIHN0cmljdCI7Ci0gICAgbGV0IHN0YXRlID0gZ2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0
ZTsKLSAgICBsZXQgdmFsdWUgPSBAdW5kZWZpbmVkOwotCi0gICAgaWYgKHN0YXRlID09PSBAR2Vu
ZXJhdG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVN
b2RlTm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpKQot
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXN5bmMgZnVuY3Rpb24gaWxsZWdhbGx5IHJl
c3VtZWQiKTsKLQotICAgIHRyeSB7Ci0gICAgICAgIGdlbmVyYXRvci5AZ2VuZXJhdG9yU3RhdGUg
PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmc7Ci0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLkBn
ZW5lcmF0b3JOZXh0LkBjYWxsKGdlbmVyYXRvci5AZ2VuZXJhdG9yVGhpcywgZ2VuZXJhdG9yLCBz
dGF0ZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKTsKLSAgICAgICAgaWYgKGdlbmVyYXRvci5AZ2Vu
ZXJhdG9yU3RhdGUgPT09IEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZykgewotICAgICAgICAgICAg
Z2VuZXJhdG9yLkBnZW5lcmF0b3JTdGF0ZSA9IEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZDsKLSAg
ICAgICAgICAgIHJldHVybiBAUHJvbWlzZS5AcmVzb2x2ZSh2YWx1ZSk7Ci0gICAgICAgIH0KLSAg
ICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBnZW5lcmF0b3IuQGdlbmVyYXRvclN0YXRlID0g
QEdlbmVyYXRvclN0YXRlQ29tcGxldGVkOwotICAgICAgICByZXR1cm4gQFByb21pc2UuQHJlamVj
dChlcnJvcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIEBQcm9taXNlLkByZXNvbHZlKHZhbHVlKS5A
dGhlbigKLSAgICAgICAgZnVuY3Rpb24odmFsdWUpIHsgcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVz
dW1lKGdlbmVyYXRvciwgdmFsdWUsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsgfSwKLSAg
ICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVzdW1lKGdlbmVy
YXRvciwgZXJyb3IsIEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpOyB9KTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAK
aW5kZXggMDQ4OTMwMzEzNzA2Yjg3YWEwZjk4ZDVhMzc3ZmQ2OWUxMzEwYjY3OS4uNGM0M2IwNDYy
OWJhYzk4ZDdiMWJkNDkxNWYwMzQyYzdmYmYyNjAzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAKQEAgLTc5LDcgKzc5
LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIEJ1aWx0aW5FeGVjdXRhYmxlczo6Y3Jl
YXRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0IFMKICAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBr
aW5kID0gaXNQYXJzaW5nRGVmYXVsdENvbnN0cnVjdG9yID8gVW5saW5rZWROb3JtYWxGdW5jdGlv
biA6IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uOwogICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4g
c291cmNlT3ZlcnJpZGUgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBzb3VyY2UucHJv
dmlkZXIoKSA6IG51bGxwdHI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9n
cmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIFJ1bnRpbWVGbGFncygpLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCisgICAgICAgICZ2bSwgc291cmNlLCBJ
ZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5v
dFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsIGVycm9yLAogICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgY29uc3Ry
dWN0b3JLaW5kKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCmluZGV4IDQ4MzAxY2Q3YzAxMzQyNWEyZWM3MWFmYjAzNWM4YzFlMWU2ZjVl
ODguLjhhM2QyOWJjY2FhZjIwYTE5YjM4MjM5MTIwZTBjNGJmZDZjZTk0ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0Lmpzb24KQEAgLTk5LDgg
Kzk5LDYgQEAKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9wX25ld19mdW5jX2V4cCIsICJsZW5n
dGgiIDogNCB9LAogICAgICAgICAgICAgeyAibmFtZSIgOiAib3BfbmV3X2dlbmVyYXRvcl9mdW5j
IiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9uZXdfYXN5bmNfZnVuYyIsICJsZW5ndGgiIDogNCB9LAotICAgICAgICAgICAgeyAibmFtZSIg
OiAib3BfbmV3X2FzeW5jX2Z1bmNfZXhwIiwgImxlbmd0aCIgOiA0IH0sCiAgICAgICAgICAgICB7
ICJuYW1lIiA6ICJvcF9zZXRfZnVuY3Rpb25fbmFtZSIsICJsZW5ndGgiIDogMyB9LAogICAgICAg
ICAgICAgeyAibmFtZSIgOiAib3BfY2FsbCIsICJsZW5ndGgiIDogOSB9LAogICAgICAgICAgICAg
eyAibmFtZSIgOiAib3BfdGFpbF9jYWxsIiwgImxlbmd0aCIgOiA5IH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZVVzZURlZi5oCmluZGV4IGEzZTgwYTgxZDU0
YmUxYWFhYzA3YmQ3ZTNkNDFlNzU3YmU3YmJiZjkuLjNmNWM4MWFiNGVhMWFmMWE3NjVhYjM2YzA4
Mzc4N2Q4N2MwYzhmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZVVzZURlZi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZVVzZURlZi5oCkBAIC0xNDksNyArMTQ5LDYgQEAgdm9pZCBjb21wdXRlVXNlc0ZvckJ5
dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZ2V0X3Byb3BlcnR5X2VudW1lcmF0b3I6CiAgICAg
Y2FzZSBvcF9nZXRfZW51bWVyYWJsZV9sZW5ndGg6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19leHA6
Ci0gICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuY19leHA6CiAgICAgY2FzZSBvcF9uZXdfZ2VuZXJh
dG9yX2Z1bmNfZXhwOgogICAgIGNhc2Ugb3BfdG9faW5kZXhfc3RyaW5nOgogICAgIGNhc2Ugb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQ6CkBAIC0xODAsNyArMTc5LDYgQEAgdm9pZCBjb21w
dXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KAogICAgIGNhc2Ugb3BfZGVsX2J5X2lkOgogICAgIGNh
c2Ugb3BfdW5zaWduZWQ6CiAgICAgY2FzZSBvcF9uZXdfZnVuYzoKLSAgICBjYXNlIG9wX25ld19h
c3luY19mdW5jOgogICAgIGNhc2Ugb3BfbmV3X2dlbmVyYXRvcl9mdW5jOgogICAgIGNhc2Ugb3Bf
Z2V0X3BhcmVudF9zY29wZToKICAgICBjYXNlIG9wX2NyZWF0ZV9zY29wZWRfYXJndW1lbnRzOgpA
QCAtMzgwLDggKzM3OCw2IEBAIHZvaWQgY29tcHV0ZURlZnNGb3JCeXRlY29kZU9mZnNldChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnl0ZWNvZGVCYXNpY0Jsb2NrKiBibG9jCiAgICAgY2FzZSBvcF9u
ZXdfcmVnZXhwOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6Ci0gICAgY2FzZSBvcF9uZXdfYXN5bmNfZnVuYzoKLSAgICBjYXNlIG9wX25ld19hc3luY19m
dW5jX2V4cDoKICAgICBjYXNlIG9wX25ld19nZW5lcmF0b3JfZnVuYzoKICAgICBjYXNlIG9wX25l
d19nZW5lcmF0b3JfZnVuY19leHA6CiAgICAgY2FzZSBvcF9jYWxsX3ZhcmFyZ3M6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDgxZmE0ZDU5OWY1
YTkyM2RiNjdmYTA0OTAwNWZjZWI5ZGQ3NjA1YzQuLjc5OTY1NjFjN2I3OTAxNmUzNzVhMjU5MWYz
MzY5ZGNkN2JiNTIzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xNDEyLDIyICsxNDEyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRl
Y29kZSgKICAgICAgICAgICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1l
KHIwKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX25ld19hc3luY19mdW5jOiB7Ci0gICAg
ICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMSA9
ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50IGYwID0gKCsraXQpLT51Lm9wZXJh
bmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Aob3V0LCBleGVjLCBsb2NhdGlvbiwg
aXQsICJuZXdfYXN5bmNfZnVuYyIpOwotICAgICAgICAgICAgb3V0LnByaW50ZigiJXMsICVzLCBm
JWQiLCByZWdpc3Rlck5hbWUocjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKHIxKS5kYXRhKCksIGYw
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfbmV3X2Fz
eW5jX2Z1bmNfZXhwOiB7Ci0gICAgICAgICAgICBpbnQgcjAgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgaW50
IGYwID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBwcmludExvY2F0aW9uQW5kT3Ao
b3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJuZXdfYXN5bmNfZnVuY19leHAiKTsKLSAgICAgICAg
ICAgIG91dC5wcmludGYoIiVzLCAlcywgZiVkIiwgcmVnaXN0ZXJOYW1lKHIwKS5kYXRhKCksIHJl
Z2lzdGVyTmFtZShyMSkuZGF0YSgpLCBmMCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQogICAgICAgICBjYXNlIG9wX25ld19mdW5jX2V4cDogewogICAgICAgICAgICAgaW50IHIwID0g
KCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFu
ZDsKQEAgLTIzMzMsNyArMjMxNyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgbV9p
bnN0cnVjdGlvbnMgPSBXVEZNb3ZlKGluc3RydWN0aW9ucyk7CiAKICAgICAvLyBQZXJmb3JtIGJ5
dGVjb2RlIGxpdmVuZXNzIGFuYWx5c2lzIHRvIGRldGVybWluZSB3aGljaCBsb2NhbHMgYXJlIGxp
dmUgYW5kIHNob3VsZCBiZSByZXN1bWVkIHdoZW4gZXhlY3V0aW5nIG9wX3Jlc3VtZS4KLSAgICBp
ZiAodW5saW5rZWRDb2RlQmxvY2stPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2Vu
ZXJhdG9yQm9keU1vZGUgfHwgaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZSh1bmxpbmtlZENv
ZGVCbG9jay0+cGFyc2VNb2RlKCkpKSB7CisgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKSB7CiAgICAgICAg
IGlmIChzaXplX3QgY291bnQgPSBtZXJnZVBvaW50Qnl0ZWNvZGVPZmZzZXRzLnNpemUoKSkgewog
ICAgICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwogICAgICAgICAgICAgQnl0
ZWNvZGVMaXZlbmVzc0FuYWx5c2lzIGxpdmVuZXNzKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAppbmRleCA4YWE0MjUwNmVi
YTY0MDg0M2VmMmNhOTE3NDcyMDNhMWZkYjViMDQ0Li4yZTBlMjkzODAyOTQwNjE0OTZiMGFlZmM1
NDYwMGM3NDgzODk2ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRDb2RlQmxvY2suaApAQCAtMTE4LDkgKzExOCw3IEBAIGNsYXNzIFVubGlua2Vk
Q29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogICAgIGJvb2wgdXNlc0V2YWwoKSBjb25zdCB7
IHJldHVybiBtX3VzZXNFdmFsOyB9CiAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9Ci0gICAgYm9vbCBpc0Fycm93RnVuY3Rpb24oKSBj
b25zdCB7IHJldHVybiBpc09yZGluYXJ5QXJyb3dGdW5jdGlvbigpIHx8IGlzQXN5bmNBcnJvd0Z1
bmN0aW9uKCk7IH0KLSAgICBib29sIGlzT3JkaW5hcnlBcnJvd0Z1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZTsg
fQotICAgIGJvb2wgaXNBc3luY0Fycm93RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3BhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU7IH0KKyAgICBi
b29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlID09IFNvdXJj
ZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KICAgICBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RGVyaXZlZENv
bnRleHRUeXBlPihtX2Rlcml2ZWRDb250ZXh0VHlwZSk7IH0KICAgICBFdmFsQ29udGV4dFR5cGUg
ZXZhbENvbnRleHRUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbENvbnRleHRU
eXBlPihtX2V2YWxDb250ZXh0VHlwZSk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBtX2lzQXJyb3dGdW5jdGlvbkNvbnRleHQ7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCmluZGV4IDgxZDM0ZjdhNjE3OThlNGQzMGFlYmFlZDZlMmIyN2ZmMzBi
MGJmZDkuLjA1YmUzYWFjZDRjMWYzMGNjMjRiZTBkMzk1YTdlMmYzYTE5ZTdiYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWNfYXNzZXJ0KHNpemVv
ZihVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSkgPD0gMjU2LCAiVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dAogY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luZm8g
PSB7ICJVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSIsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUpIH07CiAKIHN0YXRpYyBVbmxpbmtlZEZ1bmN0
aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZVVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2soCi0gICAgVk0m
IHZtLCBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncywgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKKyAgICBWTSYg
dm0sIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsCiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBEZWJ1Z2dlck1v
ZGUgZGVidWdnZXJNb2RlLAogICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9uS2luZCwg
UGFyc2VyRXJyb3ImIGVycm9yLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewpAQCAtNTYs
NyArNTYsNyBAQCBzdGF0aWMgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogZ2VuZXJhdGVVbmxp
bmtlZEZ1bmN0aW9uQ29kZUJsb2NrKAogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2Rl
ID0gZXhlY3V0YWJsZS0+aXNJblN0cmljdENvbnRleHQoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6
U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgQVNTRVJUKGlzRnVu
Y3Rpb25QYXJzZU1vZGUoZXhlY3V0YWJsZS0+cGFyc2VNb2RlKCkpKTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCi0gICAg
ICAgICZ2bSwgcnVudGltZUZsYWdzLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRp
bk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBleGVjdXRhYmxlLT5z
dXBlckJpbmRpbmcoKSwgZXJyb3IsIG51bGxwdHIpOworICAgICAgICAmdm0sIHNvdXJjZSwgZXhl
Y3V0YWJsZS0+bmFtZSgpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZXhlY3V0YWJsZS0+cGFy
c2VNb2RlKCksIGV4ZWN1dGFibGUtPnN1cGVyQmluZGluZygpLCBlcnJvciwgbnVsbHB0cik7CiAK
ICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpA
QCAtOTEsNyArOTEsNiBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6VW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUoVk0qIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogICAgICwgbV90eXBlUHJv
ZmlsaW5nRW5kT2Zmc2V0KG5vZGUtPnN0YXJ0U3RhcnRPZmZzZXQoKSArIG5vZGUtPnNvdXJjZSgp
Lmxlbmd0aCgpIC0gMSkKICAgICAsIG1fcGFyYW1ldGVyQ291bnQobm9kZS0+cGFyYW1ldGVyQ291
bnQoKSkKICAgICAsIG1fZmVhdHVyZXMoMCkKLSAgICAsIG1fc291cmNlUGFyc2VNb2RlKG5vZGUt
PnBhcnNlTW9kZSgpKQogICAgICwgbV9pc0luU3RyaWN0Q29udGV4dChub2RlLT5pc0luU3RyaWN0
Q29udGV4dCgpKQogICAgICwgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyhmYWxzZSkKICAgICAsIG1f
aXNCdWlsdGluRnVuY3Rpb24oa2luZCA9PSBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbikKQEAgLTEw
MCw2ICs5OSw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZShWTSogdm0sIFN0cnVjdHVyZSogc3RydWN0CiAgICAgLCBtX2Z1bmN0aW9uTW9k
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4obm9kZS0+ZnVuY3Rpb25Nb2RlKCkpKQogICAgICwgbV9z
dXBlckJpbmRpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5vZGUtPnN1cGVyQmluZGluZygpKSkK
ICAgICAsIG1fZGVyaXZlZENvbnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVk
Q29udGV4dFR5cGUpKQorICAgICwgbV9zb3VyY2VQYXJzZU1vZGUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG5vZGUtPnBhcnNlTW9kZSgpKSkKICAgICAsIG1fbmFtZShub2RlLT5pZGVudCgpKQogICAg
ICwgbV9lY21hTmFtZShub2RlLT5lY21hTmFtZSgpKQogICAgICwgbV9pbmZlcnJlZE5hbWUobm9k
ZS0+aW5mZXJyZWROYW1lKCkpCkBAIC0xMTIsNiArMTEyLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKFZNKiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3QKICAgICBBU1NFUlQobV9mdW5jdGlvbk1vZGUgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KG5vZGUtPmZ1bmN0aW9uTW9kZSgpKSk7CiAgICAgQVNTRVJUKG1fc3VwZXJCaW5kaW5nID09IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihub2RlLT5zdXBlckJpbmRpbmcoKSkpOwogICAgIEFTU0VSVCht
X2Rlcml2ZWRDb250ZXh0VHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZlZENvbnRl
eHRUeXBlKSk7CisgICAgQVNTRVJUKG1fc291cmNlUGFyc2VNb2RlID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihub2RlLT5wYXJzZU1vZGUoKSkpOwogCiAgICAgbV9wYXJlbnRTY29wZVREWlZhcmlh
Ymxlcy5zd2FwKHBhcmVudFNjb3BlVERaVmFyaWFibGVzKTsKIH0KQEAgLTE3NCw3ICsxNzUsNyBA
QCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmZyb21HbG9iYWxDb2RlKAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIFZNJiB2bSA9IGV4
ZWMudm0oKTsKICAgICBDb2RlQ2FjaGUqIGNvZGVDYWNoZSA9IHZtLmNvZGVDYWNoZSgpOwotICAg
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUNhY2hlLT5nZXRG
dW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSh2bSwgZXhlYy5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPnJ1bnRpbWVGbGFncygpLCBuYW1lLCBzb3VyY2UsIGVycm9yKTsKKyAgICBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVDYWNoZS0+Z2V0RnVuY3Rpb25F
eGVjdXRhYmxlRnJvbUdsb2JhbENvZGUodm0sIG5hbWUsIHNvdXJjZSwgZXJyb3IpOwogCiAgICAg
YXV0byYgZ2xvYmFsT2JqZWN0ID0gKmV4ZWMubGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIGlm
IChnbG9iYWxPYmplY3QuaGFzRGVidWdnZXIoKSkKQEAgLTE4OSw3ICsxOTAsNyBAQCBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9i
YWxDb2RlKAogfQogCiBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCi0gICAgVk0mIHZtLCBjb25zdCBSdW50
aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCisgICAgVk0mIHZtLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25L
aW5kLCAKICAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3Is
IFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUpCiB7CiAgICAgc3dpdGNoIChzcGVjaWFsaXphdGlv
bktpbmQpIHsKQEAgLTIwNCw3ICsyMDUsNyBAQCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6dW5saW5rZWRDb2RlQmxvY2tGb3IoCiAgICAgfQog
CiAgICAgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKAotICAgICAgICB2bSwgcnVudGltZUZsYWdzLCB0aGlzLCBzb3Vy
Y2UsIHNwZWNpYWxpemF0aW9uS2luZCwgZGVidWdnZXJNb2RlLAorICAgICAgICB2bSwgdGhpcywg
c291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQsIGRlYnVnZ2VyTW9kZSwgCiAgICAgICAgIGlzQnVp
bHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFs
RnVuY3Rpb24sIAogICAgICAgICBlcnJvciwgcGFyc2VNb2RlKTsKICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgKaW5kZXggZTE1OGQzMzZmMGEyYzY5ZjdlZGJkYmE3YTM1ZWZjNjlhZmE4OTBhNi4u
NjQ2YjBhNjgyZDcwNzhhYmNkNmY2ODg4NzkyM2E4Y2JiYzUyMTk4NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgKQEAgLTUwLDcgKzUwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlv
bk1ldGFkYXRhTm9kZTsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKIGNsYXNzIFBhcnNlckVy
cm9yOwotY2xhc3MgUnVudGltZUZsYWdzOwogY2xhc3MgU291cmNlQ29kZTsKIGNsYXNzIFNvdXJj
ZVByb3ZpZGVyOwogY2xhc3MgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazsKQEAgLTEwMiw3ICsx
MDEsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIHZvaWQgc2V0SW52YWxpZFR5cGVQcm9maWxpbmdPZmZzZXRzKCk7CiAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiB1bmxpbmtlZENvZGVCbG9ja0ZvcigKLSAgICAg
ICAgVk0mLCBjb25zdCBSdW50aW1lRmxhZ3MmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCwgRGVidWdnZXJNb2RlLAorICAgICAgICBWTSYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBEZWJ1Z2dlck1vZGUsCiAgICAgICAgIFBhcnNl
ckVycm9yJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoCkBAIC0xNTgsNyArMTU3LDYgQEAgY2xhc3MgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNp
Z25lZCBtX3R5cGVQcm9maWxpbmdFbmRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJD
b3VudDsKICAgICBDb2RlRmVhdHVyZXMgbV9mZWF0dXJlczsKLSAgICBTb3VyY2VQYXJzZU1vZGUg
bV9zb3VyY2VQYXJzZU1vZGU7CiAgICAgdW5zaWduZWQgbV9pc0luU3RyaWN0Q29udGV4dCA6IDE7
CiAgICAgdW5zaWduZWQgbV9oYXNDYXB0dXJlZFZhcmlhYmxlcyA6IDE7CiAgICAgdW5zaWduZWQg
bV9pc0J1aWx0aW5GdW5jdGlvbiA6IDE7CkBAIC0xNjcsNiArMTY1LDcgQEAgY2xhc3MgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICB1bnNpZ25l
ZCBtX2Z1bmN0aW9uTW9kZSA6IDI7IC8vIEZ1bmN0aW9uTW9kZQogICAgIHVuc2lnbmVkIG1fc3Vw
ZXJCaW5kaW5nIDogMTsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250ZXh0VHlwZTogMjsKKyAg
ICB1bnNpZ25lZCBtX3NvdXJjZVBhcnNlTW9kZSA6IDQ7IC8vIFNvdXJjZVBhcnNlTW9kZQogCiAg
ICAgV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+IG1fdW5saW5rZWRDb2Rl
QmxvY2tGb3JDYWxsOwogICAgIFdyaXRlQmFycmllcjxVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2Nr
PiBtX3VubGlua2VkQ29kZUJsb2NrRm9yQ29uc3RydWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA2
MGIxMTY4MjU0YjBmMjMxNzA0MDVjOGE1N2U0MTk0MjJjNDRjMjRhLi5kYmM3MTBmMzhlMTc2ZWY4
MjVmN2Y1NWY3MzEzNTVlZTM3NjNmNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMzIsNyArMzIs
NiBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAKICNpbmNsdWRlICJCdWlsdGlu
RXhlY3V0YWJsZXMuaCIKLSNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIKICNpbmNsdWRlICJCeXRl
Y29kZUxpdmVuZXNzQW5hbHlzaXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKQEAgLTI0OCwxMSArMjQ3LDExIEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgYm9vbCBzaG91bGRDYXB0dXJlQWxsT2ZUaGVUaGluZ3MgPSBtX3Nob3VsZEVt
aXREZWJ1Z0hvb2tzIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKTsKICAgICBib29sIG5lZWRzQXJn
dW1lbnRzID0gKGZ1bmN0aW9uTm9kZS0+dXNlc0FyZ3VtZW50cygpIHx8IGNvZGVCbG9jay0+dXNl
c0V2YWwoKSB8fCAoZnVuY3Rpb25Ob2RlLT51c2VzQXJyb3dGdW5jdGlvbigpICYmICFjb2RlQmxv
Y2stPmlzQXJyb3dGdW5jdGlvbigpICYmIGlzQXJndW1lbnRzVXNlZEluSW5uZXJBcnJvd0Z1bmN0
aW9uKCkpKTsKIAotICAgIC8vIEdlbmVyYXRvciBhbmQgQXN5bmNGdW5jdGlvbiBuZXZlciBwcm92
aWRlcyAiYXJndW1lbnRzIi4gImFyZ3VtZW50cyIgcmVmZXJlbmNlIHdpbGwgYmUgcmVzb2x2ZWQg
aW4gYW4gdXBwZXIgZ2VuZXJhdG9yIGZ1bmN0aW9uIHNjb3BlLgotICAgIGlmIChwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSB8fCBpc0FzeW5jRnVuY3Rpb25C
b2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpCisgICAgLy8gR2VuZXJhdG9yIG5ldmVyIHByb3ZpZGVz
ICJhcmd1bWVudHMiLiAiYXJndW1lbnRzIiByZWZlcmVuY2Ugd2lsbCBiZSByZXNvbHZlZCBpbiBh
biB1cHBlciBnZW5lcmF0b3IgZnVuY3Rpb24gc2NvcGUuCisgICAgaWYgKHBhcnNlTW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlKQogICAgICAgICBuZWVkc0FyZ3VtZW50
cyA9IGZhbHNlOwogCi0gICAgaWYgKChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlIHx8IGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1v
ZGUocGFyc2VNb2RlKSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKKyAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZSAmJiBuZWVkc0Fy
Z3VtZW50cykgewogICAgICAgICAvLyBHZW5lcmF0b3IgZG9lcyBub3QgcHJvdmlkZSAiYXJndW1l
bnRzIi4gSW5zdGVhZCwgd3JhcHBpbmcgR2VuZXJhdG9yRnVuY3Rpb24gcHJvdmlkZXMgImFyZ3Vt
ZW50cyIuCiAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBhcmd1bWVudHMgb2YgYSBnZW5lcmF0
b3Igc2hvdWxkIGJlIGV2YWx1YXRlZCBiZWZvcmUgc3RhcnRpbmcgaXQuCiAgICAgICAgIC8vIFRv
IHdvcmthcm91bmQgaXQsIHdlIGV2YWx1YXRlIHRoZXNlIGFyZ3VtZW50cyBhcyBhcmd1bWVudHMg
b2YgYSB3cmFwcGluZyBnZW5lcmF0b3IgZnVuY3Rpb24sIGFuZCByZWZlcmVuY2UgaXQgZnJvbSBh
IGdlbmVyYXRvci4KQEAgLTI5OSw3ICsyOTgsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNv
ZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQog
ICAgIEFTU0VSVCghKGlzU2ltcGxlUGFyYW1ldGVyTGlzdCAmJiBtX3Jlc3RQYXJhbWV0ZXIpKTsK
IAogICAgIC8vIEJlZm9yZSBlbWl0dGluZyBhIHNjb3BlIGNyZWF0aW9uLCBlbWl0IGEgZ2VuZXJh
dG9yIHByb2xvZ3VlIHRoYXQgY29udGFpbnMganVtcCBiYXNlZCBvbiBhIGdlbmVyYXRvcidzIHN0
YXRlLgotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5
TW9kZSB8fCBpc0FzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpIHsKKyAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpIHsKICAg
ICAgICAgbV9nZW5lcmF0b3JSZWdpc3RlciA9ICZtX3BhcmFtZXRlcnNbMV07CiAKICAgICAgICAg
Ly8gSnVtcCB3aXRoIHN3aXRjaF9pbW0gYmFzZWQgb24gQGdlbmVyYXRvclN0YXRlLiBXZSBkb24n
dCB0YWtlIHRoZSBjb3JvdXRpbmUgc3R5bGVkIGdlbmVyYXRvciBpbXBsZW1lbnRhdGlvbi4KQEAg
LTMxNCw4ICszMTMsNiBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0m
IHZtLCBGdW5jdGlvbk5vZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogCiAgICAgaWYgKGZ1bmN0
aW9uTmFtZUlzSW5TY29wZShmdW5jdGlvbk5vZGUtPmlkZW50KCksIGZ1bmN0aW9uTm9kZS0+ZnVu
Y3Rpb25Nb2RlKCkpKSB7CiAgICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JCb2R5TW9kZSk7Ci0gICAgICAgIEFTU0VSVChwYXJzZU1vZGUgIT0gU291
cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGUpOwotICAgICAgICBBU1NFUlQocGFy
c2VNb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGUpOwog
ICAgICAgICBib29sIGlzRHluYW1pY1Njb3BlID0gZnVuY3Rpb25OYW1lU2NvcGVJc0R5bmFtaWMo
Y29kZUJsb2NrLT51c2VzRXZhbCgpLCBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKICAgICAg
ICAgYm9vbCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkID0gY2FwdHVyZXMoZnVuY3Rpb25Ob2RlLT5p
ZGVudCgpLmltcGwoKSk7CiAgICAgICAgIGJvb2wgbWFya0FzQ2FwdHVyZWQgPSBpc0R5bmFtaWNT
Y29wZSB8fCBpc0Z1bmN0aW9uTmFtZUNhcHR1cmVkOwpAQCAtNTQwLDMxICs1MzcsNiBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKLSAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0Z1bmN0aW9uTW9kZTogewotICAgICAgICBBU1NFUlQoIWlzQ29uc3RydWN0b3IoKSk7Ci0gICAg
ICAgIEFTU0VSVChjb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOwot
ICAgICAgICBtX2dlbmVyYXRvclJlZ2lzdGVyID0gYWRkVmFyKCk7Ci0KLSAgICAgICAgaWYgKHBh
cnNlTW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpIHsKLSAg
ICAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgY29kZUJsb2NrLT51c2Vz
RXZhbCgpKSB7Ci0gICAgICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSAgICAgICAgICAgICAgICBlbWl0
T3Bjb2RlKG9wX3RvX3RoaXMpOwotICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChraWxsKCZtX3RoaXNSZWdpc3RlcikpOwotICAgICAgICAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKLSAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVtaXRNb3ZlKG1fZ2VuZXJhdG9yUmVnaXN0ZXIs
ICZtX2NhbGxlZVJlZ2lzdGVyKTsKLSAgICAgICAgICAgIGVtaXRDcmVhdGVUaGlzKG1fZ2VuZXJh
dG9yUmVnaXN0ZXIpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGVtaXRNb3ZlKG1fZ2Vu
ZXJhdG9yUmVnaXN0ZXIsICZtX2NhbGxlZVJlZ2lzdGVyKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
fQotCi0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKLSAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6CiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOiB7CiAgICAgICAgIC8vIHx0
aGlzfCBpcyBhbHJlYWR5IGZpbGxlZCBjb3JyZWN0bHkgYmVmb3JlIGhlcmUuCiAgICAgICAgIGVt
aXRMb2FkKG1fbmV3VGFyZ2V0UmVnaXN0ZXIsIGpzVW5kZWZpbmVkKCkpOwpAQCAtNTk1LDkgKzU2
Nyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0
aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBVbmxpbmtlCiAKICAgICAvLyBXZSBuZWVkIGxvYWQgfHN1
cGVyfCAmIHx0aGlzfCBmb3IgYXJyb3cgZnVuY3Rpb24gYmVmb3JlIGluaXRpYWxpemVEZWZhdWx0
UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2sKICAgICAvLyBpZiB3ZSBo
YXZlIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24uIEJlY2F1c2UgfHN1cGVyfCAmIHx0aGlz
fCB2YWx1ZXMgY2FuIGJlIHVzZWQgdGhlcmUKLSAgICAvLwotICAgIC8vIEFsc28gbG9hZCBoZXJl
IGZvciBBc3luY0Fycm93RnVuY3Rpb25zLCBhcyB0aGV5IG1heSByZWZlciB0byB8c3VwZXJ8IGlu
IHRoZWlyIGZvcm1hbCBwYXJhbWV0ZXIgZXhwcmVzc2lvbnMgYXMgd2VsbC4KLSAgICBpZiAoKFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2RlIHx8IHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpICYmICFpc1NpbXBs
ZVBhcmFtZXRlckxpc3QpIHsKKyAgICBpZiAoU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSA9PSBwYXJzZU1vZGUgJiYgIWlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgewogICAgICAgICBp
ZiAoZnVuY3Rpb25Ob2RlLT51c2VzVGhpcygpIHx8IGZ1bmN0aW9uTm9kZS0+dXNlc1N1cGVyUHJv
cGVydHkoKSkKICAgICAgICAgICAgIGVtaXRMb2FkVGhpc0Zyb21BcnJvd0Z1bmN0aW9uTGV4aWNh
bEVudmlyb25tZW50KCk7CiAKQEAgLTYxNiw1MCArNTg2LDEyIEBAIEJ5dGVjb2RlR2VuZXJhdG9y
OjpCeXRlY29kZUdlbmVyYXRvcihWTSYgdm0sIEZ1bmN0aW9uTm9kZSogZnVuY3Rpb25Ob2RlLCBV
bmxpbmtlCiAgICAgLy8gQWxsICJhZGRWYXIoKSJzIG5lZWRzIHRvIGhhcHBlbiBiZWZvcmUgImlu
aXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2so
KSIgaXMgY2FsbGVkCiAgICAgLy8gYmVjYXVzZSBhIGZ1bmN0aW9uJ3MgZGVmYXVsdCBwYXJhbWV0
ZXIgRXhwcmVzc2lvbk5vZGVzIHdpbGwgdXNlIHRlbXBvcmFyeSByZWdpc3RlcnMuCiAgICAgcHVz
aFREWlZhcmlhYmxlcygqcGFyZW50U2NvcGVURFpWYXJpYWJsZXMsIFREWkNoZWNrT3B0aW1pemF0
aW9uOjpEb05vdE9wdGltaXplKTsKLQotICAgIFRyeURhdGEqIHRyeUZvcm1hbFBhcmFtZXRlcnNE
YXRhID0gbnVsbHB0cjsKLSAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBhcnNlTW9kZShw
YXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKLSAgICAgICAgUmVmUHRyPExh
YmVsPiB0cnlGb3JtYWxQYXJhbWV0ZXJzU3RhcnQgPSBlbWl0TGFiZWwobmV3TGFiZWwoKS5nZXQo
KSk7Ci0gICAgICAgIHRyeUZvcm1hbFBhcmFtZXRlcnNEYXRhID0gcHVzaFRyeSh0cnlGb3JtYWxQ
YXJhbWV0ZXJzU3RhcnQuZ2V0KCkpOwotICAgIH0KLQogICAgIGluaXRpYWxpemVEZWZhdWx0UGFy
YW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlvblNjb3BlU3RhY2socGFyYW1ldGVycywgaXNTaW1w
bGVQYXJhbWV0ZXJMaXN0LCBmdW5jdGlvbk5vZGUsIGZ1bmN0aW9uU3ltYm9sVGFibGUsIHN5bWJv
bFRhYmxlQ29uc3RhbnRJbmRleCwgY2FwdHVyZXMsIHNob3VsZENyZWF0ZUFyZ3VtZW50c1Zhcmlh
YmxlSW5QYXJhbWV0ZXJTY29wZSk7Ci0KLSAgICBpZiAoaXNBc3luY0Z1bmN0aW9uV3JhcHBlclBh
cnNlTW9kZShwYXJzZU1vZGUpICYmICFpc1NpbXBsZVBhcmFtZXRlckxpc3QpIHsKLSAgICAgICAg
UmVmUHRyPExhYmVsPiBkaWROb3RUaHJvdyA9IG5ld0xhYmVsKCk7Ci0gICAgICAgIGVtaXRKdW1w
KGRpZE5vdFRocm93LmdldCgpKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2VwdGlv
biA9IG5ld1RlbXBvcmFyeSgpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhyb3duVmFs
dWUgPSBuZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgUmVmUHRyPExhYmVsPiBjYXRjaEhlcmUgPSBl
bWl0TGFiZWwobmV3TGFiZWwoKS5nZXQoKSk7Ci0gICAgICAgIHBvcFRyeUFuZEVtaXRDYXRjaCh0
cnlGb3JtYWxQYXJhbWV0ZXJzRGF0YSwgZXhjZXB0aW9uLmdldCgpLCB0aHJvd25WYWx1ZS5nZXQo
KSwgY2F0Y2hIZXJlLmdldCgpLCBIYW5kbGVyVHlwZTo6Q2F0Y2gpOwotCi0gICAgICAgIC8vIHJl
dHVybiBAUHJvbWlzZS5AcmVqZWN0KHRocm93blZhbHVlKTsKLSAgICAgICAgVmFyaWFibGUgcHJv
bWlzZVZhciA9IHZhcmlhYmxlKG1fdm0tPnByb3BlcnR5TmFtZXMtPlByb21pc2VQcml2YXRlTmFt
ZSk7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGVtaXRSZXNvbHZlU2NvcGUo
bmV3VGVtcG9yYXJ5KCksIHByb21pc2VWYXIpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvbWlzZUNvbnN0cnVjdG9yID0gZW1pdEdldEZyb21TY29wZShuZXdUZW1wb3JhcnkoKSwgc2Nv
cGUuZ2V0KCksIHByb21pc2VWYXIsIFJlc29sdmVNb2RlOjpUaHJvd0lmTm90Rm91bmQpOwotICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJvbWlzZVJlamVjdCA9IGVtaXRHZXRCeUlkKG5ld1Rl
bXBvcmFyeSgpLCBwcm9taXNlQ29uc3RydWN0b3IuZ2V0KCksIG1fdm0tPnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLnJlamVjdFByaXZhdGVOYW1lKCkpOwotCi0gICAgICAgIENhbGxBcmd1
bWVudHMgYXJncygqdGhpcywgbnVsbHB0ciwgMSk7Ci0KLSAgICAgICAgZW1pdE1vdmUoYXJncy50
aGlzUmVnaXN0ZXIoKSwgcHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpKTsKLSAgICAgICAgZW1pdE1v
dmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB0aHJvd25WYWx1ZS5nZXQoKSk7Ci0KLSAgICAg
ICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZnVuY3Rpb25Ob2RlLT5maXJzdExpbmUoKSwgZnVuY3Rp
b25Ob2RlLT5zdGFydE9mZnNldCgpLCBmdW5jdGlvbk5vZGUtPmxpbmVTdGFydE9mZnNldCgpKTsK
LQotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZW1pdENhbGwobmV3VGVtcG9y
YXJ5KCksIHByb21pc2VSZWplY3QuZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2
b3QsIGRpdm90LCBkaXZvdCk7Ci0gICAgICAgIGVtaXRSZXR1cm4ocmVzdWx0LmdldCgpKTsKLQot
ICAgICAgICBlbWl0TGFiZWwoZGlkTm90VGhyb3cuZ2V0KCkpOwotICAgIH0KLQorICAgIAogICAg
IC8vIElmIHdlIGRvbid0IGhhdmUgIGRlZmF1bHQgcGFyYW1ldGVyIGV4cHJlc3Npb24sIHRoZW4g
bG9hZGluZyB8dGhpc3wgaW5zaWRlIGFuIGFycm93IGZ1bmN0aW9uIG11c3QgYmUgZG9uZQogICAg
IC8vIGFmdGVyIGluaXRpYWxpemVEZWZhdWx0UGFyYW1ldGVyVmFsdWVzQW5kU2V0dXBGdW5jdGlv
blNjb3BlU3RhY2soKSBiZWNhdXNlIHRoYXQgZnVuY3Rpb24gc2V0cyB1cCB0aGUKICAgICAvLyBT
eW1ib2xUYWJsZSBzdGFjayBhbmQgZW1pdExvYWRUaGlzRnJvbUFycm93RnVuY3Rpb25MZXhpY2Fs
RW52aXJvbm1lbnQoKSBjb25zdWx0cyB0aGUgU3ltYm9sVGFibGUgc3RhY2sKLSAgICAvLwotICAg
IC8vIEZvciBBc3luY0Fycm93RnVuY3Rpb25Cb2R5IGZ1bmN0aW9ucywgdGhlIGxleGljYWwgZW52
aXJvbm1lbnQgbWF5IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlIHdyYXBwZXIgZnVuY3Rpb24sCi0g
ICAgLy8gYnV0IG1heSBuZWVkIHRvIGJlIGxvYWRlZCBzZXBhcmF0ZWx5IGlmIGl0J3MgdXNlZCBh
Z2FpbiBpbiB0aGUgZnVuY3Rpb24gYm9keS4KLSAgICAvLyBGSVhNRTogb25seSByZXF1aXJlIGxv
YWRpbmcgdGhlIGxleGljYWwgY29udGV4dCBvbmNlIHBlciBhc3luYyBhcnJvdyBmdW5jdGlvbi4K
LSAgICBpZiAoKFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUgPT0gcGFyc2VNb2Rl
ICYmIGlzU2ltcGxlUGFyYW1ldGVyTGlzdCkgfHwgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93
RnVuY3Rpb25Cb2R5TW9kZSA9PSBwYXJzZU1vZGUpIHsKKyAgICBpZiAoU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSA9PSBwYXJzZU1vZGUgJiYgaXNTaW1wbGVQYXJhbWV0ZXJMaXN0
KSB7CiAgICAgICAgIGlmIChmdW5jdGlvbk5vZGUtPnVzZXNUaGlzKCkgfHwgZnVuY3Rpb25Ob2Rl
LT51c2VzU3VwZXJQcm9wZXJ0eSgpKQogICAgICAgICAgICAgZW1pdExvYWRUaGlzRnJvbUFycm93
RnVuY3Rpb25MZXhpY2FsRW52aXJvbm1lbnQoKTsKICAgICAKQEAgLTI5NTQsMTMgKzI4ODYsNiBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25FeHByZXNzaW9uQ29tbW9u
KFJlZ2lzdGVySUQqIGRzdCwgRnVuY3RpbwogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5l
cmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgICAgICBvcGNvZGVJRCA9IG9wX25ld19nZW5l
cmF0b3JfZnVuY19leHA7CiAgICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01l
dGhvZE1vZGU6Ci0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1v
ZGU6Ci0gICAgICAgIG9wY29kZUlEID0gb3BfbmV3X2FzeW5jX2Z1bmNfZXhwOwotICAgICAgICBi
cmVhazsKLQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTI5NzksNyAr
MjkwNCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3RnVuY3Rpb25F
eHByZXNzaW9uKFJlZ2lzdGVySUQqIGRzdCwgRnVuY0V4CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0TmV3QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oUmVnaXN0ZXJJRCogZHN0
LCBBcnJvd0Z1bmNFeHByTm9kZSogZnVuYykKIHsKLSAgICBBU1NFUlQoZnVuYy0+bWV0YWRhdGEo
KS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBm
dW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJy
b3dGdW5jdGlvbk1vZGUpOworICAgIEFTU0VSVChmdW5jLT5tZXRhZGF0YSgpLT5wYXJzZU1vZGUo
KSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKICAgICBlbWl0TmV3RnVu
Y3Rpb25FeHByZXNzaW9uQ29tbW9uKGRzdCwgZnVuYy0+bWV0YWRhdGEoKSk7CiAgICAgcmV0dXJu
IGRzdDsKIH0KQEAgLTI5ODksOCArMjkxNCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TmV3TWV0aG9kRGVmaW5pdGlvbihSZWdpc3RlcklEKiBkc3QsIE1ldGhvZERlCiAg
ICAgQVNTRVJUKGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9k
ZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9kZQogICAgICAgICB8fCBmdW5jLT5tZXRhZGF0
YSgpLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUKICAgICAgICAg
fHwgZnVuYy0+bWV0YWRhdGEoKS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0
ZXJNb2RlCi0gICAgICAgIHx8IGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZQotICAgICAgICB8fCBmdW5jLT5tZXRhZGF0YSgpLT5wYXJz
ZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSk7CisgICAgICAgIHx8
IGZ1bmMtPm1ldGFkYXRhKCktPnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9k
TW9kZSk7CiAgICAgZW1pdE5ld0Z1bmN0aW9uRXhwcmVzc2lvbkNvbW1vbihkc3QsIGZ1bmMtPm1l
dGFkYXRhKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CkBAIC0zMDE3LDggKzI5NDEsNiBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE5ld0Z1bmN0aW9uKFJlZ2lzdGVySUQqIGRz
dCwgRnVuY3Rpb25NZXRhZGF0YQogICAgIHVuc2lnbmVkIGluZGV4ID0gbV9jb2RlQmxvY2stPmFk
ZEZ1bmN0aW9uRGVjbChtYWtlRnVuY3Rpb24oZnVuY3Rpb24pKTsKICAgICBpZiAoZnVuY3Rpb24t
PnBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9u
TW9kZSkKICAgICAgICAgZW1pdE9wY29kZShvcF9uZXdfZ2VuZXJhdG9yX2Z1bmMpOwotICAgIGVs
c2UgaWYgKGZ1bmN0aW9uLT5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVu
Y3Rpb25Nb2RlKQotICAgICAgICBlbWl0T3Bjb2RlKG9wX25ld19hc3luY19mdW5jKTsKICAgICBl
bHNlCiAgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2Z1bmMpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtNDMwNyw3ICs0MjI5LDcgQEAgdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6cG9wSW5kZXhlZEZvckluU2NvcGUoUmVnaXN0ZXJJRCogbG9jYWxSZWdpc3Rl
cikKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkQXJyb3dGdW5jdGlv
bkxleGljYWxFbnZpcm9ubWVudChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQogewotICAg
IEFTU0VSVChtX2NvZGVCbG9jay0+aXNBcnJvd0Z1bmN0aW9uKCkgfHwgcGFyc2VNb2RlKCkgPT0g
U291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZSB8fCBtX2NvZGVCbG9j
ay0+aXNBcnJvd0Z1bmN0aW9uQ29udGV4dCgpIHx8IGNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6RGVyaXZlZCB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKTsKKyAgICBBU1NF
UlQobV9jb2RlQmxvY2stPmlzQXJyb3dGdW5jdGlvbigpIHx8IG1fY29kZUJsb2NrLT5pc0Fycm93
RnVuY3Rpb25Db250ZXh0KCkgfHwgY29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5k
OjpEZXJpdmVkIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpOwogCiAgICAgcmV0dXJuIGVtaXRS
ZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyaWFibGUoaWRlbnRpZmllciwgVGhpc1Jlc29sdXRpb25U
eXBlOjpTY29wZWQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCBiYzFjNjAyOTExODQ5OWY0ZjVmNmUw
N2YyMjgxNDliY2Q4YWI1MDQ2Li4xNmIxZjUzOTEwYzg2N2I3NjZjNGU1MWQ4ZWIzM2U3NTg0ZGVi
OWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5oCkBAIC04MjIsNyArODIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIERlcml2ZWRDb250ZXh0VHlwZSBuZXdEZXJpdmVkQ29udGV4
dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmU7CiAKLSAgICAgICAgICAgIGlmIChtZXRh
ZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8
fCBtZXRhZGF0YS0+cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVu
Y3Rpb25Nb2RlKSB7CisgICAgICAgICAgICBpZiAobWV0YWRhdGEtPnBhcnNlTW9kZSgpID09IFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpIHsKICAgICAgICAgICAgICAgICBpZiAo
Y29uc3RydWN0b3JLaW5kKCkgPT0gQ29uc3RydWN0b3JLaW5kOjpEZXJpdmVkIHx8IGlzRGVyaXZl
ZENvbnN0cnVjdG9yQ29udGV4dCgpKQogICAgICAgICAgICAgICAgICAgICBuZXdEZXJpdmVkQ29u
dGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6OkRlcml2ZWRDb25zdHJ1Y3RvckNvbnRleHQ7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAobV9jb2RlQmxvY2stPmlzQ2xhc3NDb250ZXh0KCkg
fHwgaXNEZXJpdmVkQ2xhc3NDb250ZXh0KCkpCkBAIC04MzYsNyArODM2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTUxNTQ3CiAgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gbWV0
YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1
Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwotICAgICAgICAgICAg
aWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlIHx8IGlzQXN5bmNGdW5jdGlvblBhcnNlTW9k
ZShwYXJzZU1vZGUpKQorICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdldHRlck1vZGUgfHwgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9k
ZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBw
YXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2Rl
KQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpD
YW5ub3RDb25zdHJ1Y3Q7CiAgICAgICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0QWJpbGl0eSA9
IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENvbnN0cnVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA4MzM1M2NhZjBl
YjhjODA0ZmNjYjlmYTQxOGMxNTZiZGRhNTJiZjE0Li45YTU5N2I1N2RmYWM1MjhiNWJiNWNhMzM2
OGVhN2ViMTlhODRmNWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0zMjY1LDY3ICszMjY1LDYgQEAgdm9pZCBGdW5j
dGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01l
dGhvZE1vZGU6Ci0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1v
ZGU6IHsKLSAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2lu
Z2xlU3RhdGVtZW50KCk7Ci0gICAgICAgIEFTU0VSVChzaW5nbGVTdGF0ZW1lbnQtPmlzRXhwclN0
YXRlbWVudCgpKTsKLSAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIGV4cHJTdGF0ZW1lbnQgPSBz
dGF0aWNfY2FzdDxFeHByU3RhdGVtZW50Tm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7Ci0gICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBleHByID0gZXhwclN0YXRlbWVudC0+ZXhwcigpOwotICAgICAgICBB
U1NFUlQoZXhwci0+aXNGdW5jRXhwck5vZGUoKSk7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSogZnVu
Y0V4cHIgPSBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKTsKLQotICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gbmV4dCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKG5leHQuZ2V0KCksIGZ1bmNFeHByKTsKLQotICAgICAgICBpZiAo
Z2VuZXJhdG9yLnN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVlZGVkIHx8IGdlbmVy
YXRvci5wYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1v
ZGUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBEb24ndCBhbHdheXMgbG9hZCBob21lIG9iamVj
dCBmb3IgYXN5bmMgYXJyb3dzCi0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gaG9tZU9i
amVjdCA9IGVtaXRIb21lT2JqZWN0Rm9yQ2FsbGVlKGdlbmVyYXRvcik7Ci0gICAgICAgICAgICBl
bWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIG5leHQuZ2V0KCksIGhvbWVPYmplY3QuZ2V0KCkp
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IEN1cnJlbnRseSwgd2UganVzdCBjcmVh
dGUgYW4gb2JqZWN0IGFuZCBzdG9yZSBnZW5lcmF0b3IgcmVsYXRlZCBmaWVsZHMgYXMgaXRzIHBy
b3BlcnRpZXMgZm9yIGVhc2UuCi0gICAgICAgIC8vIEJ1dCB0byBtYWtlIGl0IGVmZmljaWVudCwg
d2Ugd2lsbCBpbnRyb2R1Y2UgSlNHZW5lcmF0b3IgY2xhc3MsIGFkZCBvcGNvZGUgbmV3X2dlbmVy
YXRvciBhbmQgdXNlIGl0cyBDKysgZmllbGRzIGluc3RlYWQgb2YgdGhlc2UgcHJpdmF0ZSBwcm9w
ZXJ0aWVzLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUxNTQ1Ci0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRv
ci5nZW5lcmF0b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRv
ck5leHRQcml2YXRlTmFtZSwgbmV4dC5nZXQoKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7
Ci0KLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdlbmVyYXRvci5nZW5lcmF0
b3JSZWdpc3RlcigpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmdlbmVyYXRvclRoaXNQcml2
YXRlTmFtZSwgZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpLCBQcm9wZXJ0eU5vZGU6Oktub3duRGly
ZWN0KTsKLQotICAgICAgICBSZWdpc3RlcklEKiBpbml0aWFsU3RhdGUgPSBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVj
dFB1dEJ5SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0
eU5hbWVzKCkuZ2VuZXJhdG9yU3RhdGVQcml2YXRlTmFtZSwgaW5pdGlhbFN0YXRlLCBQcm9wZXJ0
eU5vZGU6Oktub3duRGlyZWN0KTsKLQotICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5
SWQoZ2VuZXJhdG9yLmdlbmVyYXRvclJlZ2lzdGVyKCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuZ2VuZXJhdG9yRnJhbWVQcml2YXRlTmFtZSwgZ2VuZXJhdG9yLmVtaXRMb2FkKG51bGxwdHIs
IGpzTnVsbCgpKSwgUHJvcGVydHlOb2RlOjpLbm93bkRpcmVjdCk7Ci0KLSAgICAgICAgQVNTRVJU
KHN0YXJ0T2Zmc2V0KCkgPj0gbGluZVN0YXJ0T2Zmc2V0KCkpOwotICAgICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGxhc3RMaW5lKCksIHN0YXJ0T2Zmc2V0
KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLQotICAgICAgICAvLyBsb2FkIEBhc3luY0Z1bmN0aW9u
UmVzdW1lLCBhbmQgY2FsbC4KLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHN0YXJ0QXN5bmNG
dW5jdGlvbiA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgYXV0byB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMo
KS5hc3luY0Z1bmN0aW9uUmVzdW1lUHJpdmF0ZU5hbWUoKSk7Ci0KLSAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5l
cmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChzY29wZS5nZXQoKSwgZ2VuZXJhdG9yLmVt
aXRSZXNvbHZlU2NvcGUoc2NvcGUuZ2V0KCksIHZhcikpOwotICAgICAgICBnZW5lcmF0b3IuZW1p
dEdldEZyb21TY29wZShzdGFydEFzeW5jRnVuY3Rpb24uZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIs
IFRocm93SWZOb3RGb3VuZCk7Ci0KLSAgICAgICAgLy8gcmV0dXJuIEBhc3luY0Z1bmN0aW9uUmVz
dW1lLkBjYWxsKHRoaXMsIEBnZW5lcmF0b3IsIEB1bmRlZmluZWQsIEdlbmVyYXRvclJlc3VtZU1v
ZGU6Ok5vcm1hbE1vZGUpCi0gICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51
bGxwdHIsIDMpOwotICAgICAgICB1bnNpZ25lZCBhcmd1bWVudENvdW50ID0gMDsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwot
ICAgICAgICBnZW5lcmF0b3IuZW1pdE1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKGFyZ3VtZW50
Q291bnQrKyksIGdlbmVyYXRvci5nZW5lcmF0b3JSZWdpc3RlcigpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGFyZ3MuYXJndW1lbnRSZWdp
c3Rlcihhcmd1bWVudENvdW50KyspLCBqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihKU0dl
bmVyYXRvckZ1bmN0aW9uOjpHZW5lcmF0b3JSZXN1bWVNb2RlOjpOb3JtYWxNb2RlKSkpOwotICAg
ICAgICAvLyBKU1RleHRQb3NpdGlvbihpbnQgX2xpbmUsIGludCBfb2Zmc2V0LCBpbnQgX2xpbmVT
dGFydE9mZnNldCkKLSAgICAgICAgSlNUZXh0UG9zaXRpb24gZGl2b3QoZmlyc3RMaW5lKCksIHN0
YXJ0T2Zmc2V0KCksIGxpbmVTdGFydE9mZnNldCgpKTsKLQotICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwocmVzdWx0LmdldCgpLCBzdGFydEFzeW5jRnVuY3Rpb24uZ2V0KCksIE5vRXhw
ZWN0ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QsIGRpdm90LCBkaXZvdCk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0UmV0dXJuKHJlc3VsdC5nZXQoKSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQot
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKLSAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZTogewogICAgICAgICBSZWZQdHI8TGFi
ZWw+IGdlbmVyYXRvckJvZHlMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCAzZWIyZWMwMTk4YTUzMzBjYTlj
MTEyMjI2YzQ0NDQyMGY5OTNkYmRiLi41YjIyNTQ0YTM4ZmI3OTk4MTZiYjA5OTk1MTc2MzMxZDhm
ZDk4MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTQxLDcgKzQxLDYg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNp
bmNsdWRlICJQYXJzZXJFcnJvci5oIgotI2luY2x1ZGUgIlJ1bnRpbWVGbGFncy5oIgogI2luY2x1
ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1
ZGUgIlR5cGVQcm9maWxlci5oIgpAQCAtOTEsNyArOTAsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6cGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIElu
c3BlYwogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fdm0pOwogCiAgICAgUGFyc2VyRXJyb3IgZXJy
b3I7Ci0gICAgY2hlY2tTeW50YXgobV92bSwgUnVudGltZUZsYWdzKCksIEpTQzo6bWFrZVNvdXJj
ZShleHByZXNzaW9uKSwgZXJyb3IpOworICAgIGNoZWNrU3ludGF4KG1fdm0sIEpTQzo6bWFrZVNv
dXJjZShleHByZXNzaW9uKSwgZXJyb3IpOwogCiAgICAgc3dpdGNoIChlcnJvci5zeW50YXhFcnJv
clR5cGUoKSkgewogICAgIGNhc2UgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAppbmRleCBhNDc2NWFlNzVhYzBiMmU0NzA4MDcxODE4ZWY4NzA5
OWI1ZjY0YjgxLi5jOGI5MmU0ZTQ0MjQzZDk3ODBhMTI2NTMyMzdjNmIyZWIyNmFmOGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCkBAIC0yODMsOCArMjgzLDYgQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2Z1bmNfZXhw
KQogICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jKQogICAgICAgICBERUZJ
TkVfT1Aob3BfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKLSAgICAgICAgREVGSU5FX09QKG9wX25l
d19hc3luY19mdW5jKQotICAgICAgICBERUZJTkVfT1Aob3BfbmV3X2FzeW5jX2Z1bmNfZXhwKQog
ICAgICAgICBERUZJTkVfT1Aob3BfbmV3X29iamVjdCkKICAgICAgICAgREVGSU5FX09QKG9wX25l
d19yZWdleHApCiAgICAgICAgIERFRklORV9PUChvcF9ub3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
aAppbmRleCBjNDI4OGU3MWFhM2RmYzk2MjAyNGFiNjk4ZTgyZTYzNzA2MDRhYTY5Li43NzkxMGIx
NjRiZmE5ZTYzMzM0NDViZDc4ZjliMDc1Yjk3Yzk0OWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmgKQEAgLTU1Myw4ICs1NTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0
X29wX25ld19mdW5jX2V4cChJbnN0cnVjdGlvbiopOwogICAgICAgICB2b2lkIGVtaXRfb3BfbmV3
X2dlbmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdf
Z2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7Ci0gICAgICAgIHZvaWQgZW1pdF9vcF9u
ZXdfYXN5bmNfZnVuYyhJbnN0cnVjdGlvbiopOwotICAgICAgICB2b2lkIGVtaXRfb3BfbmV3X2Fz
eW5jX2Z1bmNfZXhwKEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfb2Jq
ZWN0KEluc3RydWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9uZXdfcmVnZXhwKEluc3Ry
dWN0aW9uKik7CiAgICAgICAgIHZvaWQgZW1pdF9vcF9ub3QoSW5zdHJ1Y3Rpb24qKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDA3MDg0OTE2NWQ1NWEzOGIx
ZjdhMjcwNDMwMzQ5YzdmMDEzNDU2OTUuLjkzMmE5NTdjNjM0MGM2NzIyMWZhM2RkZWMyNzNiZjA2
NDllMWQzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAt
OTcxLDggKzk3MSw2IEBAIHZvaWQgSklUOjplbWl0TmV3RnVuY0NvbW1vbihJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIE9wY29kZUlEIG9wY29kZUlEID0gbV92bS0+aW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGN1cnJlbnRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpOwogICAgIGlm
IChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuYykKICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b25OZXdGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY0V4ZWMpOwotICAgIGVsc2UgaWYgKG9wY29k
ZUlEID09IG9wX25ld19hc3luY19mdW5jKQotICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlv
bk5ld0FzeW5jRnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmNFeGVjKTsKICAgICBlbHNlIHsKICAg
ICAgICAgQVNTRVJUKG9wY29kZUlEID09IG9wX25ld19nZW5lcmF0b3JfZnVuYyk7CiAgICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9yRnVuY3Rpb24sIGRzdCwgcmVnVDAs
IGZ1bmNFeGVjKTsKQEAgLTk4OSwxMSArOTg3LDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmV3X2dl
bmVyYXRvcl9mdW5jKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5l
d0Z1bmNDb21tb24oY3VycmVudEluc3RydWN0aW9uKTsKIH0KIAotdm9pZCBKSVQ6OmVtaXRfb3Bf
bmV3X2FzeW5jX2Z1bmMoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBl
bWl0TmV3RnVuY0NvbW1vbihjdXJyZW50SW5zdHJ1Y3Rpb24pOwotfQotCiB2b2lkIEpJVDo6ZW1p
dE5ld0Z1bmNFeHByQ29tbW9uKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgSnVtcCBub3RVbmRlZmluZWRTY29wZTsKQEAgLTEwMTUsOCArMTAwOCw2IEBAIHZvaWQgSklU
OjplbWl0TmV3RnVuY0V4cHJDb21tb24oSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IAogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfZnVuY19leHApCiAgICAgICAgIGNhbGxPcGVy
YXRpb24ob3BlcmF0aW9uTmV3RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKLSAgICBl
bHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXdfYXN5bmNfZnVuY19leHApCi0gICAgICAgIGNhbGxP
cGVyYXRpb24ob3BlcmF0aW9uTmV3QXN5bmNGdW5jdGlvbiwgZHN0LCByZWdUMCwgZnVuY3Rpb24p
OwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlQob3Bjb2RlSUQgPT0gb3BfbmV3X2dlbmVyYXRv
cl9mdW5jX2V4cCk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uTmV3R2VuZXJhdG9y
RnVuY3Rpb24sIGRzdCwgcmVnVDAsIGZ1bmN0aW9uKTsKQEAgLTEwMzUsMTEgKzEwMjYsNiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9uZXdfZ2VuZXJhdG9yX2Z1bmNfZXhwKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1pdE5ld0Z1bmNFeHByQ29tbW9uKGN1cnJlbnRJbnN0cnVj
dGlvbik7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX25ld19hc3luY19mdW5jX2V4cChJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGVtaXROZXdGdW5jRXhwckNvbW1vbihj
dXJyZW50SW5zdHJ1Y3Rpb24pOwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9uZXdfYXJyYXkoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBpbnQgZHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuY3BwCmluZGV4IDZlOGEwODk5ZmQyNDg5ZjQ4ZTNhYjRhZGQ1ZDg1ZGYyNjBjNDhj
MzUuLjM5MzA0YmYxZjViYzQ2MDFkY2RmYzZmNDI5NzQ3ZGRmMWMwNTQ4N2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtNDYsNyArNDYsNiBAQAog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKICNpbmNsdWRlICJK
SVRUb0RGR0RlZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTQXN5bmNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJKU0dlbmVyYXRv
ckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKQEAgLTEx
MDMsMTYgKzExMDIsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0YwogICAgIHJldHVybiBvcGVy
YXRpb25OZXdGdW5jdGlvbkNvbW1vbjxKU0Z1bmN0aW9uPihleGVjLCBzY29wZSwgZnVuY3Rpb25F
eGVjdXRhYmxlLCB0cnVlKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25OZXdBc3luY0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNTY29wZSogc2NvcGUsIEpT
Q2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQotewotICAgIHJldHVybiBvcGVyYXRpb25OZXdGdW5j
dGlvbkNvbW1vbjxKU0FzeW5jRnVuY3Rpb24+KGV4ZWMsIHNjb3BlLCBmdW5jdGlvbkV4ZWN1dGFi
bGUsIGZhbHNlKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25O
ZXdBc3luY0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVj
U3RhdGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkK
LXsKLSAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNBc3luY0Z1bmN0aW9u
PihleGVjLCBzY29wZSwgZnVuY3Rpb25FeGVjdXRhYmxlLCB0cnVlKTsKLX0KLQogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdHZW5lcmF0b3JGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIEpTU2NvcGUqIHNjb3BlLCBKU0NlbGwqIGZ1bmN0aW9uRXhlY3V0YWJsZSkKIHsK
ICAgICByZXR1cm4gb3BlcmF0aW9uTmV3RnVuY3Rpb25Db21tb248SlNHZW5lcmF0b3JGdW5jdGlv
bj4oZXhlYywgc2NvcGUsIGZ1bmN0aW9uRXhlY3V0YWJsZSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAppbmRleCA5MjAyOTIyMmI0NzM2OWU2NjllNmJi
YWYwMGJiYWJhMDExZDc4ODE1Li5hOTcyNmViZDZiNjgxOWRlYWQ2ZGNjNGUzYTUwMGJkOTkxZWQw
MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaApAQCAtMzQ1
LDggKzM0NSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3QXJy
YXlCdWZmZXJXaXRoUHJvZmlsZShFeGVjU3RhdGUqLCBBcnJhCiBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemVBbmRQcm9maWxlKEV4ZWNTdGF0ZSos
IEFycmF5QWxsb2NhdGlvblByb2ZpbGUqLCBFbmNvZGVkSlNWYWx1ZSBzaXplKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uKEV4
ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0Z1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxv
Y2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUqLCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVS
TkFMOwotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdBc3luY0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5URVJOQUw7Ci1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0FzeW5jRnVuY3Rpb25XaXRoSW52YWxp
ZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0dlbmVyYXRvckZ1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTU2NvcGUqLCBKU0NlbGwqKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld0dlbmVyYXRv
ckZ1bmN0aW9uV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChFeGVjU3RhdGUq
LCBKU1Njb3BlKiwgSlNDZWxsKikgV1RGX0lOVEVSTkFMOwogdm9pZCBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblNldEZ1bmN0aW9uTmFtZShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1
ZSkgV1RGX0lOVEVSTkFMOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBiYTg1YTJmYmIwZTlhMTlm
MTBhNzEzOGQ1NWQyOTkwNDJhODY3M2I5Li5iMDIxZDEwMWYzM2NiNzYyYWE0MmZhZmYxYmRkNWYz
YWU5NTU5NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMjA5Nyw3ICsyMDk3LDcgQEAgc3Rh
dGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2UgKyBsaW5lOwog
ICAgICAgICAgICAgc291cmNlID0gc291cmNlICsgJ1xuJzsKLSAgICAgICAgICAgIGNoZWNrU3lu
dGF4KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5ydW50aW1lRmxhZ3MoKSwgbWFr
ZVNvdXJjZShzb3VyY2UsIGludGVycHJldGVyTmFtZSksIGVycm9yKTsKKyAgICAgICAgICAgIGNo
ZWNrU3ludGF4KGdsb2JhbE9iamVjdC0+dm0oKSwgbWFrZVNvdXJjZShzb3VyY2UsIGludGVycHJl
dGVyTmFtZSksIGVycm9yKTsKICAgICAgICAgICAgIGlmICghbGluZVswXSkKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGFkZF9oaXN0b3J5KGxpbmUpOwpAQCAtMjE2MCw3ICsy
MTYwLDYgQEAgc3RhdGljIE5PX1JFVFVSTiB2b2lkIHByaW50VXNhZ2VTdGF0ZW1lbnQoYm9vbCBo
ZWxwID0gZmFsc2UpCiAgICAgZnByaW50ZihzdGRlcnIsICIgIC0tb3B0aW9ucyAgICAgICAgICAg
ICAgICAgIER1bXBzIGFsbCBKU0MgVk0gb3B0aW9ucyBhbmQgZXhpdHNcbiIpOwogICAgIGZwcmlu
dGYoc3RkZXJyLCAiICAtLWR1bXBPcHRpb25zICAgICAgICAgICAgICBEdW1wcyBhbGwgbm9uLWRl
ZmF1bHQgSlNDIFZNIG9wdGlvbnMgYmVmb3JlIGNvbnRpbnVpbmdcbiIpOwogICAgIGZwcmludGYo
c3RkZXJyLCAiICAtLTxqc2MgVk0gb3B0aW9uPj08dmFsdWU+ICBTZXRzIHRoZSBzcGVjaWZpZWQg
SlNDIFZNIG9wdGlvblxuIik7Ci0KICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAKICAgICBq
c2NFeGl0KGhlbHAgPyBFWElUX1NVQ0NFU1MgOiBFWElUX0ZBSUxVUkUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMTEzNzk2MWViOTZi
YTY4YWU0ZmIwMTc3MzJkYjc0M2E1MzU1NDg4Yy4uYWU2ODUyODdmZGYyMDBjYmZmZDkxZDBiYWE3
M2QzZmFiZTA4OTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCi0jaW5jbHVkZSAi
SlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNp
bmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZS5oIgpAQCAtMTA3Niwx
NyArMTA3NSw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZnVuYykKICAg
ICBMTElOVF9SRVRVUk4oSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBjb2RlQmxvY2stPmZ1bmN0aW9u
RGVjbChwY1szXS51Lm9wZXJhbmQpLCBzY29wZSkpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmV3X2FzeW5jX2Z1bmMpCi17Ci0gICAgTExJTlRfQkVHSU4oKTsKLSAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwotICAgIEpTU2NvcGUqIHNj
b3BlID0gZXhlYy0+dW5jaGVja2VkUihwY1syXS51Lm9wZXJhbmQpLlJlZ2lzdGVyOjpzY29wZSgp
OwotI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCi0gICAgZGF0YUxvZ0YoIkNyZWF0aW5nIGFz
eW5jIGZ1bmN0aW9uIVxuIik7Ci0jZW5kaWYKLSAgICBMTElOVF9SRVRVUk4oSlNBc3luY0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzNdLnUub3BlcmFuZCks
IHNjb3BlKSk7Ci19Ci0KIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfZ2VuZXJh
dG9yX2Z1bmMpCiB7CiAgICAgTExJTlRfQkVHSU4oKTsKQEAgLTExMjAsMTcgKzExMDgsNiBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCkKICAg
ICBMTElOVF9SRVRVUk4oSlNHZW5lcmF0b3JGdW5jdGlvbjo6Y3JlYXRlKHZtLCBleGVjdXRhYmxl
LCBzY29wZSkpOwogfQogCi1MTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FzeW5j
X2Z1bmNfZXhwKQotewotICAgIExMSU5UX0JFR0lOKCk7Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBKU1Njb3BlKiBzY29wZSA9IGV4ZWMt
PnVuY2hlY2tlZFIocGNbMl0udS5vcGVyYW5kKS5SZWdpc3Rlcjo6c2NvcGUoKTsKLSAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1sz
XS51Lm9wZXJhbmQpOwotICAgIAotICAgIExMSU5UX1JFVFVSTihKU0FzeW5jRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpKTsKLX0KLQogTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKQogewogICAgIExMSU5UX0JFR0lOKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5oCmluZGV4IGMwMzNmYWVl
YTRkMDkwOTJmYWFkMTcyNmFkY2VhMzVjZTM0MzNiZWIuLmJhZmIxYzk5NjAyMWVmZmZjYTBmNzRj
Y2I0MzAyYzY5MjhiY2FlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5oCkBAIC0xMDAsOCArMTAwLDYgQEAgTExJTlRfU0xPV19QQVRIX0hJRERFTl9E
RUNMKHNsb3dfcGF0aF9zd2l0Y2hfY2hhcik7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOwogTExJTlRfU0xPV19QQVRIX0hJRERFTl9ERUNMKHNs
b3dfcGF0aF9uZXdfZnVuYyk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRo
X25ld19mdW5jX2V4cCk7Ci1MTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0woc2xvd19wYXRoX25l
d19hc3luY19mdW5jKTsKLUxMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhfbmV3
X2FzeW5jX2Z1bmNfZXhwKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3BhdGhf
bmV3X2dlbmVyYXRvcl9mdW5jKTsKIExMSU5UX1NMT1dfUEFUSF9ISURERU5fREVDTChzbG93X3Bh
dGhfbmV3X2dlbmVyYXRvcl9mdW5jX2V4cCk7CiBMTElOVF9TTE9XX1BBVEhfSElEREVOX0RFQ0wo
c2xvd19wYXRoX3NldF9mdW5jdGlvbl9uYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA0OTEyNzcxYTA1ZmQ3ZjA1
ZGIwNTIyMzIyZTYyMWMyNzhlNWNkZTQ0Li40YjJjNDk2Y2I5ZTIzZWQxNzMxNDVlNjg5MDIyNjYz
ZjNlZGFiNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMjQwLDEyICsxMjQwLDYgQEAgX2xsaW50X29wX25ld19m
dW5jOgogICAgIGRpc3BhdGNoKDQpCiAKIAotX2xsaW50X29wX25ld19hc3luY19mdW5jOgotICAg
IHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdf
YXN5bmNfZnVuYykKLSAgICBkaXNwYXRjaCg0KQotCi0KIF9sbGludF9vcF9uZXdfZ2VuZXJhdG9y
X2Z1bmM6CiAgICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX25ld19nZW5lcmF0b3JfZnVuYykKQEAgLTE1MDEsNiArMTQ5NSw3IEBAIF9sbGludF9v
cF9zd2l0Y2hfc3RyaW5nOgogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3N3aXRj
aF9zdHJpbmcpCiAgICAgZGlzcGF0Y2goMCkKIAorCiBfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgog
ICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9u
ZXdfZnVuY19leHApCkBAIC0xNTExLDExICsxNTA2LDYgQEAgX2xsaW50X29wX25ld19nZW5lcmF0
b3JfZnVuY19leHA6CiAgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2dlbmVy
YXRvcl9mdW5jX2V4cCkKICAgICBkaXNwYXRjaCg0KQogCi1fbGxpbnRfb3BfbmV3X2FzeW5jX2Z1
bmNfZXhwOgotICAgIHRyYWNlRXhlY3V0aW9uKCkKLSAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9uZXdfYXN5bmNfZnVuY19leHApCi0gICAgZGlzcGF0Y2goNCkKLQogX2xsaW50X29w
X3NldF9mdW5jdGlvbl9uYW1lOgogICAgIHRyYWNlRXhlY3V0aW9uKCkKICAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9zZXRfZnVuY3Rpb25fbmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZGRiY2FmMzZjYWU1M2IwNDUxZDM2NjhjZTYy
MTczNWFkNzI4MDU4NC4uOWFjOTA0YWRlMzc0NThkNjgzMWUzYjk1ZTU0YjQ2MDQ1NmVhNmQ1NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTM4MCwxNyAr
MzgwLDYgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiYgZnVuY3Rpb25JbmZvLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQotICAgIHsKLSAg
ICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlv
bkJvZHlNb2RlKSB7Ci0gICAgICAgICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihmdW5jdGlvbkluZm8uc3RhcnRPZmZzZXQsIGZ1bmN0aW9uSW5mby5i
b2R5LT5pc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbigpID8gZnVuY3Rpb25JbmZvLmVuZE9m
ZnNldCAtIDEgOiBmdW5jdGlvbkluZm8uZW5kT2Zmc2V0LCBmdW5jdGlvbkluZm8uc3RhcnRMaW5l
LCBmdW5jdGlvbkluZm8ucGFyYW1ldGVyc1N0YXJ0Q29sdW1uKTsKLSAgICAgICAgICAgIEZ1bmNF
eHByTm9kZSogcmVzdWx0ID0gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jRXhwck5vZGUobG9jYXRp
b24sICpmdW5jdGlvbkluZm8ubmFtZSwgZnVuY3Rpb25JbmZvLmJvZHksIHNvdXJjZSk7Ci0gICAg
ICAgICAgICBmdW5jdGlvbkluZm8uYm9keS0+c2V0TG9jKGZ1bmN0aW9uSW5mby5zdGFydExpbmUs
IGZ1bmN0aW9uSW5mby5lbmRMaW5lLCBsb2NhdGlvbi5zdGFydE9mZnNldCwgbG9jYXRpb24ubGlu
ZVN0YXJ0T2Zmc2V0KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVuY3Rpb25JbmZvKTsK
LSAgICB9Ci0KICAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTWV0aG9kRGVmaW5pdGlvbihjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBQYXJzZXJGdW5jdGlvbkluZm88QVNU
QnVpbGRlcj4mIGZ1bmN0aW9uSW5mbykKICAgICB7CiAgICAgICAgIE1ldGhvZERlZmluaXRpb25O
b2RlKiByZXN1bHQgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIE1ldGhvZERlZmluaXRpb25Ob2RlKGxv
Y2F0aW9uLCAqZnVuY3Rpb25JbmZvLm5hbWUsIGZ1bmN0aW9uSW5mby5ib2R5LApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3b3Jkcy50YWJsZSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUKaW5kZXggODQzMGFlNGE5ZmYxZTNk
ZDQ4OTUyM2QxNDUyOTY5YTU1YjE5ODBjZi4uNDU4MmQwMGFhZTk3ZWQxNTNlY2Y5OWFmOGRiOTZh
NzU2MTkxZWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3
b3Jkcy50YWJsZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0tleXdvcmRzLnRh
YmxlCkBAIC03LDcgKzcsNiBAQCB0cnVlCQlUUlVFVE9LRU4KIGZhbHNlCQlGQUxTRVRPS0VOCiAK
ICMgS2V5d29yZHMuCi1hd2FpdCAgICAgICAgICAgQVdBSVQKIGJyZWFrCQlCUkVBSwogY2FzZQkJ
Q0FTRQogY2F0Y2gJCUNBVENICmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
aW5kZXggMzgxODg2ZWVmZDM3NTNhMzU0NWNiOWE1MDY3NjExNzU5ZmMxNzk5My4uN2M4YjQzNDJh
NTkxZGRjZjNlMzRjMTM4YjVmYjUzMDMwMDJjY2NkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcApAQCAtMTk1LDExICsxOTUsMTAgQEAgdm9pZCBQYXJzZXI8TGV4ZXJU
eXBlPjo6bG9nRXJyb3IoYm9vbCBzaG91bGRQcmludFRva2VuLCBjb25zdCBBJiB2YWx1ZTEsIGNv
bnN0IEIKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLVBhcnNlcjxMZXhlclR5
cGU+OjpQYXJzZXIoVk0qIHZtLCBSdW50aW1lRmxhZ3MgcnVudGltZUZsYWdzLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2Vy
U3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBTdXBlckJp
bmRpbmcgc3VwZXJCaW5kaW5nLCBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCwgRGVyaXZlZENvbnRleHRUeXBlIGRlcml2ZWRDb250ZXh0VHlwZSwgYm9vbCBpc0V2YWxDb250
ZXh0LCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlKQorUGFyc2VyPExleGVyVHlwZT46
OlBhcnNlcihWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGlu
TW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBh
cnNlTW9kZSBwYXJzZU1vZGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIENvbnN0cnVjdG9y
S2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBEZXJpdmVkQ29udGV4dFR5cGUgZGVyaXZlZENv
bnRleHRUeXBlLCBib29sIGlzRXZhbENvbnRleHQsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4
dFR5cGUpCiAgICAgOiBtX3ZtKHZtKQogICAgICwgbV9zb3VyY2UoJnNvdXJjZSkKICAgICAsIG1f
aGFzU3RhY2tPdmVyZmxvdyhmYWxzZSkKLSAgICAsIG1fcnVudGltZUZsYWdzKHJ1bnRpbWVGbGFn
cykKICAgICAsIG1fYWxsb3dzSW4odHJ1ZSkKICAgICAsIG1fc3ludGF4QWxyZWFkeVZhbGlkYXRl
ZChzb3VyY2UucHJvdmlkZXIoKS0+aXNWYWxpZCgpKQogICAgICwgbV9zdGF0ZW1lbnREZXB0aCgw
KQpAQCAtMjUzLDE1ICsyNTIsMTUgQEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlu
bmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBhcnNlTW8KICAgICBzY29w
ZS0+c2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICBTZXRGb3JTY29wZTxGdW5jdGlvblBhcnNlUGhh
c2U+IGZ1bmN0aW9uUGFyc2VQaGFzZVBvaXNvbmVyKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJz
ZVBoYXNlLCBGdW5jdGlvblBhcnNlUGhhc2U6OkJvZHkpOwogCi0gICAgYm9vbCBpc0Fycm93RnVu
Y3Rpb25Cb2R5RXhwcmVzc2lvbiA9IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5j
QXJyb3dGdW5jdGlvbkJvZHlNb2RlICYmICFtYXRjaChPUEVOQlJBQ0UpOworICAgIGJvb2wgaXNB
cnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBpZiAobV9sZXhlci0+aXNS
ZXBhcnNpbmdGdW5jdGlvbigpKSB7CiAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxBU1RCdWls
ZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgICAgIGlmIChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSB8fCBpc0Fz
eW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9kZSkpCisgICAgICAgIGlmIChwYXJzZU1v
ZGUgPT0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JCb2R5TW9kZSkKICAgICAgICAgICAgIG1f
cGFyYW1ldGVycyA9IGNyZWF0ZUdlbmVyYXRvclBhcmFtZXRlcnMoY29udGV4dCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIG1fcGFyYW1ldGVycyA9IHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJz
KGNvbnRleHQsIHBhcnNlTW9kZSwgZnVuY3Rpb25JbmZvKTsKIAotICAgICAgICBpZiAoU291cmNl
UGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKSAmJiAh
aGFzRXJyb3IoKSkgeworICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKICAgICAgICAgICAgIC8vIFRoZSBv
bmx5IHdheSB3ZSBjb3VsZCBoYXZlIGFuIGVycm9yIHdpbGUgcmVwYXJzaW5nIGlzIGlmIHdlIHJ1
biBvdXQgb2Ygc3RhY2sgc3BhY2UuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtYXRjaChB
UlJPV0ZVTkNUSU9OKSk7CiAgICAgICAgICAgICBuZXh0KCk7CkBAIC0yNzgsMTYgKzI3NywxNiBA
QCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYg
Y2FsbGVlTmFtZSwgU291cmNlUGFyc2VNbwogICAgIFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVt
ZW50cyA9IG51bGxwdHI7CiAgICAgLy8gVGhlIG9ubHkgd2F5IHdlIGNhbiBlcnJvciB0aGlzIGVh
cmx5IGlzIGlmIHdlIHJlcGFyc2UgYSBmdW5jdGlvbiBhbmQgd2UgcnVuIG91dCBvZiBzdGFjayBz
cGFjZS4KICAgICBpZiAoIWhhc0Vycm9yKCkpIHsKLSAgICAgICAgaWYgKGlzQXN5bmNGdW5jdGlv
bldyYXBwZXJQYXJzZU1vZGUocGFyc2VNb2RlKSkKLSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRz
ID0gcGFyc2VBc3luY0Z1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlLCBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKLSAgICAg
ICAgZWxzZSBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCisgICAgICAgIGlmIChp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRz
ID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhj
b250ZXh0KTsKICAgICAgICAgZWxzZSBpZiAoaXNNb2R1bGVQYXJzZU1vZGUocGFyc2VNb2RlKSkK
ICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhj
b250ZXh0LCBwYXJzZU1vZGUpOwotICAgICAgICBlbHNlIGlmIChwYXJzZU1vZGUgPT0gU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKQotICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29udGV4
dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc291cmNl
RWxlbWVudHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9k
ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpCisgICAgICAgICAgICAgICAg
c291cmNlRWxlbWVudHMgPSBwYXJzZUdlbmVyYXRvckZ1bmN0aW9uU291cmNlRWxlbWVudHMoY29u
dGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tG
b3JTdHJpY3RNb2RlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgdmFsaWRFbmRpbmcg
PSBjb25zdW1lKEVPRlRPSyk7CkBAIC0zMDcsNyArMzA2LDcgQEAgU3RyaW5nIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIFNvdXJjZVBh
cnNlTW8KICAgICBmb3IgKGF1dG8mIGVudHJ5IDogY2FwdHVyZWRWYXJpYWJsZXMpCiAgICAgICAg
IHZhckRlY2xhcmF0aW9ucy5tYXJrVmFyaWFibGVBc0NhcHR1cmVkKGVudHJ5KTsKIAotICAgIGlm
IChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVu
Y3Rpb25Nb2RlKS5jb250YWlucyhwYXJzZU1vZGUpIHx8IGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQ
YXJzZU1vZGUocGFyc2VNb2RlKSkgeworICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKSB7CiAgICAgICAgIGlmIChzY29wZS0+
dXNlZFZhcmlhYmxlc0NvbnRhaW5zKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cy5pbXBs
KCkpKQogICAgICAgICAgICAgY29udGV4dC5wcm9wYWdhdGVBcmd1bWVudHNVc2UoKTsKICAgICB9
CkBAIC0zNTIsMTAgKzM1MSwyMSBAQCB2b2lkIFBhcnNlcjxMZXhlclR5cGU+OjpkaWRGaW5pc2hQ
YXJzaW5nKFNvdXJjZUVsZW1lbnRzKiBzb3VyY2VFbGVtZW50cywgRGVjbGFyYQogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIGJvb2wgUGFyc2VyPExleGVyVHlwZT46OmlzQXJyb3dGdW5j
dGlvblBhcmFtZXRlcnMoKQogewotICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7Ci0gICAgICAg
IFNhdmVQb2ludCBzYXZlQXJyb3dGdW5jdGlvblBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7Cisg
ICAgYm9vbCBpc09wZW5QYXJlbiA9IG1hdGNoKE9QRU5QQVJFTik7CisgICAgYm9vbCBpc0lkZW50
ID0gbWF0Y2goSURFTlQpOworICAgIAorICAgIGlmICghaXNPcGVuUGFyZW4gJiYgIWlzSWRlbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gZmFs
c2U7CisgICAgU2F2ZVBvaW50IHNhdmVBcnJvd0Z1bmN0aW9uUG9pbnQgPSBjcmVhdGVTYXZlUG9p
bnQoKTsKKyAgICAgICAgCisgICAgaWYgKGlzSWRlbnQpIHsKKyAgICAgICAgbmV4dCgpOworICAg
ICAgICBpc0Fycm93RnVuY3Rpb24gPSBtYXRjaChBUlJPV0ZVTkNUSU9OKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBSRUxFQVNFX0FTU0VSVChpc09wZW5QYXJlbik7CiAgICAgICAgIG5leHQoKTsK
LSAgICAgICAgYm9vbCBpc0Fycm93RnVuY3Rpb24gPSBmYWxzZTsKICAgICAgICAgaWYgKG1hdGNo
KENMT1NFUEFSRU4pKSB7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpc0Fycm93
RnVuY3Rpb24gPSBtYXRjaChBUlJPV0ZVTkNUSU9OKTsKQEAgLTM2NywyMiArMzc3LDE0IEBAIGJv
b2wgUGFyc2VyPExleGVyVHlwZT46OmlzQXJyb3dGdW5jdGlvblBhcmFtZXRlcnMoKQogCiAgICAg
ICAgICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJzQ291bnQgPSAwOwogICAgICAgICAgICAgaXNBcnJv
d0Z1bmN0aW9uID0gcGFyc2VGb3JtYWxQYXJhbWV0ZXJzKHN5bnRheENoZWNrZXIsIHN5bnRheENo
ZWNrZXIuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdCgpLCBwYXJhbWV0ZXJzQ291bnQpICYmIGNv
bnN1bWUoQ0xPU0VQQVJFTikgJiYgbWF0Y2goQVJST1dGVU5DVElPTik7Ci0KKyAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgIHBvcFNjb3BlKGZha2VTY29wZSwgc3ludGF4Q2hlY2tlci5OZWVk
c0ZyZWVWYXJpYWJsZUluZm8pOwogICAgICAgICB9Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQo
c2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7Ci0gICAgICAgIHJldHVybiBpc0Fycm93RnVuY3Rpb247
Ci0gICAgfQotCi0gICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSkgewotICAgICAgICBTYXZl
UG9pbnQgc2F2ZUFycm93RnVuY3Rpb25Qb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwotICAgICAg
ICBuZXh0KCk7Ci0gICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uID0gbWF0Y2goQVJST1dGVU5D
VElPTik7Ci0gICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZUFycm93RnVuY3Rpb25Qb2ludCk7
Ci0gICAgICAgIHJldHVybiBpc0Fycm93RnVuY3Rpb247CiAgICAgfQotCi0gICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAKKyAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVBcnJvd0Z1bmN0aW9uUG9p
bnQpOworICAgICAgICAKKyAgICByZXR1cm4gaXNBcnJvd0Z1bmN0aW9uOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNTI3LDUxICs1MjksNiBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VHZW5lcmF0bwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQXN5bmNGdW5jdGlvblNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNz
aW9uLCBTb3VyY2VFbGVtZW50c01vZGUgbW9kZSkKLXsKLSAgICBBU1NFUlQoaXNBc3luY0Z1bmN0
aW9uV3JhcHBlclBhcnNlTW9kZShwYXJzZU1vZGUpKTsKLSAgICBhdXRvIHNvdXJjZUVsZW1lbnRz
ID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwotCi0gICAgdW5zaWduZWQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7Ci0gICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0
TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICBKU1RleHRQb3NpdGlvbiBzdGFydCA9IHRv
a2VuU3RhcnRQb3NpdGlvbigpOwotICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1
bW4oKTsKLSAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3Rh
cnRPZmZzZXQ7Ci0gICAgaW50IHBhcmFtZXRlcnNTdGFydCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5z
dGFydE9mZnNldDsKLQotICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gaW5mbzsK
LSAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0g
ICAgY3JlYXRlR2VuZXJhdG9yUGFyYW1ldGVycyhjb250ZXh0KTsKLSAgICBpbmZvLnN0YXJ0T2Zm
c2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwotICAgIGluZm8uc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
Ci0gICAgaW5mby5wYXJhbWV0ZXJDb3VudCA9IDQ7IC8vIGdlbmVyYXRvciwgc3RhdGUsIHZhbHVl
LCByZXN1bWUgbW9kZQotICAgIFNvdXJjZVBhcnNlTW9kZSBpbm5lclBhcnNlTW9kZSA9IHBhcnNl
TW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUKLSAgICAgICAg
PyBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlCi0gICAgICAgIDog
U291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU7Ci0gICAgewotICAgICAgICBB
dXRvUG9wU2NvcGVSZWYgYXN5bmNGdW5jdGlvbkJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7
Ci0gICAgICAgIGFzeW5jRnVuY3Rpb25Cb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShpbm5l
clBhcnNlTW9kZSk7Ci0gICAgICAgIFN5bnRheENoZWNrZXIgYXN5bmNGdW5jdGlvbkNvbnRleHQo
Y29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKLSAgICAgICAgaWYgKGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uKQotICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VB
cnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhhc3luY0Z1bmN0
aW9uQ29udGV4dCksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgYXN5bmMgYXJyb3cgZnVuY3Rp
b24iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VF
bGVtZW50cyhhc3luY0Z1bmN0aW9uQ29udGV4dCwgbW9kZSksICJDYW5ub3QgcGFyc2UgdGhlIGJv
ZHkgb2YgYXN5bmMgZnVuY3Rpb24iKTsKLSAgICAgICAgcG9wU2NvcGUoYXN5bmNGdW5jdGlvbkJv
ZHlTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbyk7Ci0gICAgfQotICAg
IGluZm8uYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25NZXRhZGF0YShzdGFydExvY2F0aW9u
LCB0b2tlbkxvY2F0aW9uKCksIHN0YXJ0Q29sdW1uLCB0b2tlbkNvbHVtbigpLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIG1fc3VwZXJCaW5kaW5nLCBpbmZvLnBhcmFtZXRl
ckNvdW50LCBpbm5lclBhcnNlTW9kZSwgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pOwot
Ci0gICAgaW5mby5lbmRMaW5lID0gdG9rZW5MaW5lKCk7Ci0gICAgaW5mby5lbmRPZmZzZXQgPSBp
c0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiA/IHRva2VuTG9jYXRpb24oKS5lbmRPZmZzZXQg
OiBtX3Rva2VuLm1fZGF0YS5vZmZzZXQ7Ci0gICAgaW5mby5wYXJhbWV0ZXJzU3RhcnRDb2x1bW4g
PSBzdGFydENvbHVtbjsKLQotICAgIGF1dG8gZnVuY3Rpb25FeHByID0gY29udGV4dC5jcmVhdGVB
c3luY0Z1bmN0aW9uQm9keShzdGFydExvY2F0aW9uLCBpbmZvLCBpbm5lclBhcnNlTW9kZSk7Ci0g
ICAgYXV0byBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQoc3RhcnRMb2Nh
dGlvbiwgZnVuY3Rpb25FeHByLCBzdGFydCwgbV9sYXN0VG9rZW5FbmRQb3NpdGlvbi5saW5lKTsK
LSAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsK
LQotICAgIHJldHVybiBzb3VyY2VFbGVtZW50czsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4
dCwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVy
YWxMZW5ndGgpCiB7CiAgICAgLy8gVGhlIGdyYW1tYXIgaXMgZG9jdW1lbnRlZCBoZXJlOgpAQCAt
NTgwLDcgKzUzNyw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0CiAgICAgbV9zdGF0ZW1lbnRE
ZXB0aCsrOwogICAgIFRyZWVTdGF0ZW1lbnQgcmVzdWx0ID0gMDsKICAgICBib29sIHNob3VsZFNl
dEVuZE9mZnNldCA9IHRydWU7Ci0KICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAg
Y2FzZSBDT05TVFRPS0VOOgogICAgICAgICByZXN1bHQgPSBwYXJzZVZhcmlhYmxlRGVjbGFyYXRp
b24oY29udGV4dCwgRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKTsKQEAgLTU5NSw3
ICs1NTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdAogICAgICAgICAgICAgLy8gRm9yIGV4
YW1wbGUsIHVuZGVyIGEgZ2VuZXJhdG9yIGNvbnRleHQsIG1hdGNoU3BlY0lkZW50aWZpZXIoKSBm
b3IgInlpZWxkIiByZXR1cm5zIGBmYWxzZWAuCiAgICAgICAgICAgICAvLyBCdXQgd2Ugd291bGQg
bGlrZSB0byBlbnRlciBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24gYW5kIHJhaXNlIGFuIGVycm9y
IHVuZGVyIHRoZSBjb250ZXh0IG9mIHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbgogICAgICAgICAg
ICAgLy8gdG8gcmFpc2UgY29uc2lzdGVudCBlcnJvcnMgYmV0d2VlbiAidmFyIiwgImNvbnN0IiBh
bmQgImxldCIuCi0gICAgICAgICAgICBpZiAoIShtYXRjaChJREVOVCkgfHwgbWF0Y2goTEVUKSB8
fCBtYXRjaChZSUVMRCkgfHwgbWF0Y2goQVdBSVQpKSAmJiAhbWF0Y2goT1BFTkJSQUNFKSAmJiAh
bWF0Y2goT1BFTkJSQUNLRVQpKQorICAgICAgICAgICAgaWYgKCEobWF0Y2goSURFTlQpIHx8IG1h
dGNoKExFVCkgfHwgbWF0Y2goWUlFTEQpKSAmJiAhbWF0Y2goT1BFTkJSQUNFKSAmJiAhbWF0Y2go
T1BFTkJSQUNLRVQpKQogICAgICAgICAgICAgICAgIHNob3VsZFBhcnNlVmFyaWFibGVEZWNsYXJh
dGlvbiA9IGZhbHNlOwogICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwog
ICAgICAgICB9CkBAIC02MTUsMjMgKzU3MSw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0CiAg
ICAgICAgIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0KTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBJREVOVDoKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgYnJhbmNo
IGNvbnRyaWJ1dGVzIHRvIGEgMSUgb2N0YW5lIGNvZGUtbG9hZCByZWdyZXNzaW9uLgotICAgICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjExCi0gICAg
ICAgIGlmIChVTkxJS0VMWSgqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS0+cHJvcGVydHlO
YW1lcy0+YXN5bmMpKSB7Ci0gICAgICAgICAgICBpZiAobV9ydW50aW1lRmxhZ3MuaXNBc3luY0F3
YWl0RW5hYmxlZCgpKSB7Ci0gICAgICAgICAgICAgICAgLy8gRWFnZXJseSBwYXJzZSBhcyBBc3lu
Y0Z1bmN0aW9uRGVjbGFyYXRpb24uIFRoaXMgaXMgdGhlIHVuY29tbW9uIGNhc2UsCi0gICAgICAg
ICAgICAgICAgLy8gYnV0IGNvdWxkIGJlIG1pc3Rha2VubHkgcGFyc2VkIGFzIGFuIEFzeW5jRnVu
Y3Rpb25FeHByZXNzaW9uLgotICAgICAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBj
cmVhdGVTYXZlUG9pbnQoKTsKLSAgICAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKG1hdGNoKEZVTkNUSU9OKSAmJiAhbV9sZXhlci0+cHJldlRlcm1pbmF0
b3IoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VBc3luY0Z1bmN0aW9u
RGVjbGFyYXRpb24oY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2Fz
ZSBBV0FJVDoKICAgICBjYXNlIFlJRUxEOiB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSBjb252ZW5p
ZW50IHBsYWNlIHRvIG5vdGljZSBsYWJlbGVkIHN0YXRlbWVudHMKICAgICAgICAgLy8gKGV2ZW4g
dGhvdWdoIHdlIGFsc28gcGFyc2UgdGhlbSBhcyBub3JtYWwgc3RhdGVtZW50cykKQEAgLTc0MCw3
ICs2NzksNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAgICAgICBpZiAobWF0Y2hTcGVj
SWRlbnRpZmllcigpKSB7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGRl
Y2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xhcmF0aW9uIHx8IGRlY2xh
cmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24pLCAKICAgICAg
ICAgICAgICAgICAiQ2FuJ3QgdXNlICdsZXQnIGFzIGFuIGlkZW50aWZpZXIgbmFtZSBmb3IgYSBM
ZXhpY2FsRGVjbGFyYXRpb24iKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShpc0Rp
c2FsbG93ZWRJZGVudGlmaWVyQXdhaXQobV90b2tlbiksICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
ICIsIGRlY2xhcmF0aW9uVHlwZVRvVmFyaWFibGVLaW5kKGRlY2xhcmF0aW9uVHlwZSksICIgIiwg
ZGlzYWxsb3dlZElkZW50aWZpZXJBd2FpdFJlYXNvbigpKTsKICAgICAgICAgICAgIEpTVGV4dFBv
c2l0aW9uIHZhclN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBKU1Rv
a2VuTG9jYXRpb24gdmFyU3RhcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICAg
ICAgaWRlbnRTdGFydCA9IHZhclN0YXJ0OwpAQCAtMTA2Myw3ICsxMDAxLDYgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNsYXNzaWZ5RXhw
cmVzc2lvbkVycm9yKEVycm9ySW5kaWNhdGVzUGF0dGVybiwgRXJyb3JJbmRpY2F0ZXNOb3RoaW5n
KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChpc0V2YWxPckFy
Z3VtZW50cywgIkNhbm5vdCBtb2RpZnkgJyIsIHByb3BlcnR5TmFtZS0+aW1wbCgpLCAiJyBpbiBz
dHJpY3QgbW9kZSIpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShpc0Rpc2FsbG93ZWRJZGVudGlmaWVyQXdhaXQoaWRlbnRpZmll
clRva2VuKSwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgIiwgZGVzdHJ1Y3R1cmluZ0tpbmRUb1Zh
cmlhYmxlS2luZE5hbWUoa2luZCksICIgIiwgZGlzYWxsb3dlZElkZW50aWZpZXJBd2FpdFJlYXNv
bigpKTsKICAgICAgICAgICAgICAgICAgICAgaW5uZXJQYXR0ZXJuID0gY3JlYXRlQmluZGluZ1Bh
dHRlcm4oY29udGV4dCwga2luZCwgZXhwb3J0VHlwZSwgKnByb3BlcnR5TmFtZSwgaWRlbnRpZmll
clRva2VuLCBiaW5kaW5nQ29udGV4dCwgZHVwbGljYXRlSWRlbnRpZmllcik7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTExMzIsNyArMTA2OSw2IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVk
IGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAg
ICAgfQogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKExFVCkgJiYgKGtpbmQgPT0gRGVzdHJ1Y3R1
cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9MZXQgfHwga2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6
RGVzdHJ1Y3R1cmVUb0NvbnN0KSwgIkNhbid0IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5h
bWUgZm9yIGEgTGV4aWNhbERlY2xhcmF0aW9uIik7Ci0gICAgICAgIHNlbWFudGljRmFpbElmVHJ1
ZShpc0Rpc2FsbG93ZWRJZGVudGlmaWVyQXdhaXQobV90b2tlbiksICJDYW4ndCB1c2UgJ2F3YWl0
JyBhcyBhICIsIGRlc3RydWN0dXJpbmdLaW5kVG9WYXJpYWJsZUtpbmROYW1lKGtpbmQpLCAiICIs
IGRpc2FsbG93ZWRJZGVudGlmaWVyQXdhaXRSZWFzb24oKSk7CiAgICAgICAgIHBhdHRlcm4gPSBj
cmVhdGVCaW5kaW5nUGF0dGVybihjb250ZXh0LCBraW5kLCBleHBvcnRUeXBlLCAqbV90b2tlbi5t
X2RhdGEuaWRlbnQsIG1fdG9rZW4sIGJpbmRpbmdDb250ZXh0LCBkdXBsaWNhdGVJZGVudGlmaWVy
KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBicmVhazsKQEAgLTE2ODEsOCArMTYxNyw0MyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlU3RhdGVtZW50KFRyZQogICAgICAgICByZXN1bHQgPSBwYXJzZVZhcmlhYmxl
RGVjbGFyYXRpb24oY29udGV4dCwgRGVjbGFyYXRpb25UeXBlOjpWYXJEZWNsYXJhdGlvbik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRlVOQ1RJT046IHsKLSAgICAgICAgY29uc3QgYm9vbCBp
c0FzeW5jID0gZmFsc2U7Ci0gICAgICAgIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlv
blN0YXRlbWVudChjb250ZXh0LCBpc0FzeW5jLCBwYXJlbnRBbGxvd3NGdW5jdGlvbkRlY2xhcmF0
aW9uQXNTdGF0ZW1lbnQpOworICAgICAgICBpZiAoIXN0cmljdE1vZGUoKSkgeworICAgICAgICAg
ICAgZmFpbElmRmFsc2UocGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVtZW50
LCAiRnVuY3Rpb24gZGVjbGFyYXRpb25zIGFyZSBvbmx5IGFsbG93ZWQgaW5zaWRlIGJsb2NrIHN0
YXRlbWVudHMgb3IgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIHByb2dyYW0iKTsKKyAgICAgICAgICAg
IGlmIChjdXJyZW50U2NvcGUoKS0+aXNGdW5jdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8g
QW55IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIHRoYXQgaXNuJ3QgaW4gYSBibG9jayBpcyBhIHN5bnRh
eCBlcnJvciB1bmxlc3MgaXQncworICAgICAgICAgICAgICAgIC8vIGluIGFuIGlmL2Vsc2Ugc3Rh
dGVtZW50LiBJZiBpdCdzIGluIGFuIGlmL2Vsc2Ugc3RhdGVtZW50LCB3ZSB3aWxsIG1hZ2ljYWxs
eQorICAgICAgICAgICAgICAgIC8vIHRyZWF0IGl0IGFzIGlmIHRoZSBpZi9lbHNlIHN0YXRlbWVu
dCBpcyBpbnNpZGUgYSBibG9jayBzdGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgLy8gdG8gdGhl
IHZlcnkgdG9wIGxpa2UgYSAidmFyIi4gRm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgLy8g
ZnVuY3Rpb24gYSgpIHsKKyAgICAgICAgICAgICAgICAvLyAgICAgaWYgKGNvbmQpIGZ1bmN0aW9u
IGZvbygpIHsgfQorICAgICAgICAgICAgICAgIC8vIH0KKyAgICAgICAgICAgICAgICAvLyB3aWxs
IGJlIHJld3JpdHRlbiBhczoKKyAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbiBhKCkgeworICAg
ICAgICAgICAgICAgIC8vICAgICBpZiAoY29uZCkgeyBmdW5jdGlvbiBmb28oKSB7IH0gfQorICAg
ICAgICAgICAgICAgIC8vIH0KKyAgICAgICAgICAgICAgICBBdXRvUG9wU2NvcGVSZWYgYmxvY2tT
Y29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CisgICAgICAgICAgICAgICAgYmxvY2tTY29wZS0+c2V0
SXNMZXhpY2FsU2NvcGUoKTsKKyAgICAgICAgICAgICAgICBibG9ja1Njb3BlLT5wcmV2ZW50VmFy
RGVjbGFyYXRpb25zKCk7CisgICAgICAgICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CisgICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5l
KCk7CisKKyAgICAgICAgICAgICAgICBUcmVlU3RhdGVtZW50IGZ1bmN0aW9uID0gcGFyc2VGdW5j
dGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOworICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7CisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb24sICJFeHBlY3RlZCB2YWxp
ZCBmdW5jdGlvbiBzdGF0ZW1lbnQgYWZ0ZXIgJ2Z1bmN0aW9uJyBrZXl3b3JkIik7CisgICAgICAg
ICAgICAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVh
dGVTb3VyY2VFbGVtZW50cygpOworICAgICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVt
ZW50KHNvdXJjZUVsZW1lbnRzLCBmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
Y29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVudChsb2NhdGlvbiwgc291cmNlRWxlbWVudHMsIHN0
YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIGN1cnJlbnRTY29wZSgpLT5maW5hbGl6
ZUxleGljYWxFbnZpcm9ubWVudCgpLCBjdXJyZW50U2NvcGUoKS0+dGFrZUZ1bmN0aW9uRGVjbGFy
YXRpb25zKCkpOworICAgICAgICAgICAgICAgIHBvcFNjb3BlKGJsb2NrU2NvcGUsIFRyZWVCdWls
ZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAvLyBXZSBvbmx5IGltcGxlbWVudCBhbm5leCBCLjMuMyBpZiB3ZSdyZSBpbiBm
dW5jdGlvbiBtb2RlLiBPdGhlcndpc2UsIHdlIGZhbGwgYmFjaworICAgICAgICAgICAgICAgIC8v
IHRvIGhvaXN0aW5nIGJlaGF2aW9yLgorICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1ODEzCisgICAgICAgICAgICAgICAg
RGVwdGhNYW5hZ2VyIHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKKyAgICAgICAg
ICAgICAgICBtX3N0YXRlbWVudERlcHRoID0gMTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBw
YXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJGdW5jdGlvbiBkZWNsYXJhdGlv
bnMgYXJlIG9ubHkgYWxsb3dlZCBpbnNpZGUgYmxvY2tzIG9yIHN3aXRjaCBzdGF0ZW1lbnRzIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNFTUlDT0xP
TjogewpAQCAtMTczNCwyMiArMTcwNSw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQoVHJlCiAgICAg
ICAgIC8vIFRoZXNlIHRva2VucyBpbXBseSB0aGUgZW5kIG9mIGEgc2V0IG9mIHNvdXJjZSBlbGVt
ZW50cwogICAgICAgICByZXR1cm4gMDsKICAgICBjYXNlIElERU5UOgotICAgICAgICAvLyBGSVhN
RTogVGhpcyBicmFuY2ggY29udHJpYnV0ZXMgdG8gYSAxJSBvY3RhbmUgY29kZS1sb2FkIHJlZ3Jl
c3Npb24uCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTgyMTEKLSAgICAgICAgaWYgKFVOTElLRUxZKCptX3Rva2VuLm1fZGF0YS5pZGVudCA9PSBt
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5hc3luYykpIHsKLSAgICAgICAgICAgIGlmIChtX3J1bnRpbWVG
bGFncy5pc0FzeW5jQXdhaXRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICBTYXZlUG9pbnQg
c2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7Ci0gICAgICAgICAgICAgICAgbmV4dCgpOwot
ICAgICAgICAgICAgICAgIGlmIChtYXRjaChGVU5DVElPTikgJiYgIW1fbGV4ZXItPnByZXZUZXJt
aW5hdG9yKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCBpc0FzeW5jID0gdHJ1
ZTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
U3RhdGVtZW50KGNvbnRleHQsIGlzQXN5bmMsIHBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRp
b25Bc1N0YXRlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgRkFMTFRIUk9VR0g7Ci0gICAgY2FzZSBBV0FJ
VDoKICAgICBjYXNlIFlJRUxEOiB7CiAgICAgICAgIGJvb2wgYWxsb3dGdW5jdGlvbkRlY2xhcmF0
aW9uQXNTdGF0ZW1lbnQgPSBmYWxzZTsKICAgICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9u
T3JMYWJlbFN0YXRlbWVudChjb250ZXh0LCBhbGxvd0Z1bmN0aW9uRGVjbGFyYXRpb25Bc1N0YXRl
bWVudCk7CkBAIC0xNzc1LDUzICsxNzMwLDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChUcmUKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xh
cmF0aW9uU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0LCBib29sIGlzQXN5bmMsIGJvb2wg
cGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVtZW50KQotewotICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShzdHJpY3RNb2RlKCksICJGdW5jdGlvbiBkZWNsYXJhdGlvbnMgYXJlIG9u
bHkgYWxsb3dlZCBpbnNpZGUgYmxvY2tzIG9yIHN3aXRjaCBzdGF0ZW1lbnRzIGluIHN0cmljdCBt
b2RlIik7Ci0gICAgZmFpbElmRmFsc2UocGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFz
U3RhdGVtZW50LCAiRnVuY3Rpb24gZGVjbGFyYXRpb25zIGFyZSBvbmx5IGFsbG93ZWQgaW5zaWRl
IGJsb2NrIHN0YXRlbWVudHMgb3IgYXQgdGhlIHRvcCBsZXZlbCBvZiBhIHByb2dyYW0iKTsKLSAg
ICBpZiAoIWN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgLy8gV2Ugb25s
eSBpbXBsZW1lbnQgYW5uZXggQi4zLjMgaWYgd2UncmUgaW4gZnVuY3Rpb24gbW9kZS4gT3RoZXJ3
aXNlLCB3ZSBmYWxsIGJhY2sKLSAgICAgICAgLy8gdG8gaG9pc3RpbmcgYmVoYXZpb3IuCi0gICAg
ICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
ODEzCi0gICAgICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0
aCk7Ci0gICAgICAgIG1fc3RhdGVtZW50RGVwdGggPSAxOwotICAgICAgICBpZiAoaXNBc3luYykK
LSAgICAgICAgICAgIHJldHVybiBwYXJzZUFzeW5jRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0
KTsKLSAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0KTsKLSAg
ICB9Ci0KLSAgICAvLyBBbnkgZnVuY3Rpb24gZGVjbGFyYXRpb24gdGhhdCBpc24ndCBpbiBhIGJs
b2NrIGlzIGEgc3ludGF4IGVycm9yIHVubGVzcyBpdCdzCi0gICAgLy8gaW4gYW4gaWYvZWxzZSBz
dGF0ZW1lbnQuIElmIGl0J3MgaW4gYW4gaWYvZWxzZSBzdGF0ZW1lbnQsIHdlIHdpbGwgbWFnaWNh
bGx5Ci0gICAgLy8gdHJlYXQgaXQgYXMgaWYgdGhlIGlmL2Vsc2Ugc3RhdGVtZW50IGlzIGluc2lk
ZSBhIGJsb2NrIHN0YXRlbWVudC4KLSAgICAvLyB0byB0aGUgdmVyeSB0b3AgbGlrZSBhICJ2YXIi
LiBGb3IgZXhhbXBsZToKLSAgICAvLyBmdW5jdGlvbiBhKCkgewotICAgIC8vICAgICBpZiAoY29u
ZCkgZnVuY3Rpb24gZm9vKCkgeyB9Ci0gICAgLy8gfQotICAgIC8vIHdpbGwgYmUgcmV3cml0dGVu
IGFzOgotICAgIC8vIGZ1bmN0aW9uIGEoKSB7Ci0gICAgLy8gICAgIGlmIChjb25kKSB7IGZ1bmN0
aW9uIGZvbygpIHsgfSB9Ci0gICAgLy8gfQotICAgIEF1dG9Qb3BTY29wZVJlZiBibG9ja1Njb3Bl
KHRoaXMsIHB1c2hTY29wZSgpKTsKLSAgICBibG9ja1Njb3BlLT5zZXRJc0xleGljYWxTY29wZSgp
OwotICAgIGJsb2NrU2NvcGUtPnByZXZlbnRWYXJEZWNsYXJhdGlvbnMoKTsKLSAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICBpbnQgc3RhcnQgPSB0b2tl
bkxpbmUoKTsKLQotICAgIFRyZWVTdGF0ZW1lbnQgZnVuY3Rpb24gPSAwOwotICAgIGlmICghaXNB
c3luYykKLSAgICAgICAgZnVuY3Rpb24gPSBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4
dCk7Ci0gICAgZWxzZQotICAgICAgICBmdW5jdGlvbiA9IHBhcnNlQXN5bmNGdW5jdGlvbkRlY2xh
cmF0aW9uKGNvbnRleHQpOwotICAgIHByb3BhZ2F0ZUVycm9yKCk7Ci0gICAgZmFpbElmRmFsc2Uo
ZnVuY3Rpb24sICJFeHBlY3RlZCB2YWxpZCBmdW5jdGlvbiBzdGF0ZW1lbnQgYWZ0ZXIgJ2Z1bmN0
aW9uJyBrZXl3b3JkIik7Ci0gICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJjZUVsZW1lbnRzID0g
Y29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwotICAgIGNvbnRleHQuYXBwZW5kU3RhdGVt
ZW50KHNvdXJjZUVsZW1lbnRzLCBmdW5jdGlvbik7Ci0gICAgVHJlZVN0YXRlbWVudCByZXN1bHQg
PSBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KGxvY2F0aW9uLCBzb3VyY2VFbGVtZW50cywg
c3RhcnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSwgY3VycmVudFNjb3BlKCktPmZpbmFs
aXplTGV4aWNhbEVudmlyb25tZW50KCksIGN1cnJlbnRTY29wZSgpLT50YWtlRnVuY3Rpb25EZWNs
YXJhdGlvbnMoKSk7Ci0gICAgcG9wU2NvcGUoYmxvY2tTY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRz
RnJlZVZhcmlhYmxlSW5mbyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCBsaXN0LCB1bnNpZ25lZCYgcGFyYW1ldGVyQ291bnQp
CiB7CiAjZGVmaW5lIGZhaWxJZkR1cGxpY2F0ZUlmVmlvbGF0aW9uKCkgXApAQCAtMTg0NCw3ICsx
NzUyLDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUIKICAgICAgICAgaWYgKG1hdGNoKERPVERP
VERPVCkpIHsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1h
dGNoU3BlY0lkZW50aWZpZXIoKSwgIlJlc3QgcGFyYW1ldGVyICcuLi4nIHNob3VsZCBiZSBmb2xs
b3dlZCBieSBhIHZhcmlhYmxlIGlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZSghbV9wYXJzZXJTdGF0ZS5hbGxvd0F3YWl0ICYmIG1hdGNoKEFXQUlUKSwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24iKTsK
ICAgICAgICAgICAgIGRlY2xhcmVSZXN0T3JOb3JtYWxQYXJhbWV0ZXIoKm1fdG9rZW4ubV9kYXRh
LmlkZW50LCAmZHVwbGljYXRlUGFyYW1ldGVyKTsKICAgICAgICAgICAgIHByb3BhZ2F0ZUVycm9y
KCk7CiAgICAgICAgICAgICBKU1RleHRQb3NpdGlvbiBpZGVudGlmaWVyU3RhcnQgPSB0b2tlblN0
YXJ0UG9zaXRpb24oKTsKQEAgLTE5MTAsMTQgKzE4MTcsNiBAQCBzdGF0aWMgY29uc3QgY2hhciog
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogICAgICAgICByZXR1
cm4gImdlbmVyYXRvciBmdW5jdGlvbiI7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93
RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKLSAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU6Ci0gICAgY2FzZSBTb3VyY2VQYXJz
ZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToKLSAgICAgICAgcmV0dXJuICJhc3luYyBmdW5j
dGlvbiI7Ci0gICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToKLSAgICAg
ICAgcmV0dXJuICJhc3luYyBtZXRob2QiOwotICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKLSAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNB
cnJvd0Z1bmN0aW9uTW9kZToKLSAgICAgICAgcmV0dXJuICJhc3luYyBhcnJvdyBmdW5jdGlvbiI7
CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
TW9kdWxlRXZhbHVhdGVNb2RlOgpAQCAtMTkzMCwxMiArMTgyOSwxMiBAQCBzdGF0aWMgY29uc3Qg
Y2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNs
YXNzIEZ1bmN0aW9uSW5mb1R5cGU+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0
ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVp
bGRlciYgY29udGV4dCwgU291cmNlUGFyc2VNb2RlIG1vZGUsIEZ1bmN0aW9uSW5mb1R5cGUmIGZ1
bmN0aW9uSW5mbykKIHsKLSAgICBBU1NFUlQoIShTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFy
c2VNb2RlOjpQcm9ncmFtTW9kZSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwg
U291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGUpLmNvbnRhaW5zKG1vZGUpKSk7Cisg
ICAgUkVMRUFTRV9BU1NFUlQobW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlICYm
IG1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSAmJiBtb2RlICE9IFNv
dXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsKICAgICBUcmVlRm9ybWFsUGFyYW1l
dGVyTGlzdCBwYXJhbWV0ZXJMaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0
KCk7CiAgICAgU2V0Rm9yU2NvcGU8RnVuY3Rpb25QYXJzZVBoYXNlPiBmdW5jdGlvblBhcnNlUGhh
c2VQb2lzb25lcihtX3BhcnNlclN0YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSwgRnVuY3Rpb25QYXJz
ZVBoYXNlOjpQYXJhbWV0ZXJzKTsKICAgICAKLSAgICBpZiAoU291cmNlUGFyc2VNb2RlU2V0KFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNB
cnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobW9kZSkpIHsKLSAgICAgICAgaWYgKCFtYXRjaFNw
ZWNJZGVudGlmaWVyKCkgJiYgIW1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICBpZiAobW9kZSA9PSBT
b3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgICAgIGlmICghbWF0Y2go
SURFTlQpICYmICFtYXRjaChPUEVOUEFSRU4pKSB7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1
cmVEdWVUb0tleXdvcmQoc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUiKTsKICAg
ICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYW4gYXJyb3cgZnVuY3Rpb24gaW5w
dXQgcGFyYW1ldGVyIik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMDI2LDkgKzE5MjUsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RnVuY3Rpb25JbmZvKFRyZWVCdWlsZAogewogICAgIFJFTEVBU0VfQVNTRVJUKGlzRnVuY3Rpb25Q
YXJzZU1vZGUobW9kZSkpOwogCi0gICAgYm9vbCBpc0Rpc2FsbG93ZWRBd2FpdEZ1bmN0aW9uTmFt
ZSA9IGlzRGlzYWxsb3dlZElkZW50aWZpZXJBd2FpdChtX3Rva2VuKTsKLSAgICBjb25zdCBjaGFy
KiBpc0Rpc2FsbG93ZWRBd2FpdEZ1bmN0aW9uTmFtZVJlYXNvbiA9IGlzRGlzYWxsb3dlZEF3YWl0
RnVuY3Rpb25OYW1lID8gZGlzYWxsb3dlZElkZW50aWZpZXJBd2FpdFJlYXNvbigpIDogbnVsbHB0
cjsKLQorICAgIGJvb2wgdXBwZXJTY29wZUlzR2VuZXJhdG9yID0gY3VycmVudFNjb3BlKCktPmlz
R2VuZXJhdG9yKCk7CiAgICAgQXV0b1BvcFNjb3BlUmVmIGZ1bmN0aW9uU2NvcGUodGhpcywgcHVz
aFNjb3BlKCkpOwogICAgIGZ1bmN0aW9uU2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShtb2RlKTsK
ICAgICBTZXRGb3JTY29wZTxGdW5jdGlvblBhcnNlUGhhc2U+IGZ1bmN0aW9uUGFyc2VQaGFzZVBv
aXNvbmVyKG1fcGFyc2VyU3RhdGUuZnVuY3Rpb25QYXJzZVBoYXNlLCBGdW5jdGlvblBhcnNlUGhh
c2U6OkJvZHkpOwpAQCAtMjA2Nyw3ICsxOTY0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQK
ICAgICAgICAgICAgIEFTU0VSVChlbmRMb2NhdGlvbi5zdGFydE9mZnNldCA+PSBlbmRMb2NhdGlv
bi5saW5lU3RhcnRPZmZzZXQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBGdW5jdGlvbkJv
ZHlUeXBlIGZ1bmN0aW9uQm9keVR5cGU7Ci0gICAgICAgICAgICBpZiAoU291cmNlUGFyc2VNb2Rl
U2V0KFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSkuY29udGFpbnMobW9kZSkpCisgICAgICAgICAgICBpZiAo
bW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKQogICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uQm9keVR5cGUgPSBjYWNoZWRJbmZvLT5pc0JvZHlBcnJvd0V4cHJlc3Npb24g
PyAgQXJyb3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uIDogQXJyb3dGdW5jdGlvbkJvZHlCbG9jazsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmdW5jdGlvbkJvZHlUeXBlID0gU3Rh
bmRhcmRGdW5jdGlvbkJvZHlCbG9jazsKQEAgLTIxMTAsMjEgKzIwMDcsMTggQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
SW5mbyhUcmVlQnVpbGQKIAogICAgIFN5bnRheENoZWNrZXIgc3ludGF4Q2hlY2tlcihjb25zdF9j
YXN0PFZNKj4obV92bSksIG1fbGV4ZXIuZ2V0KCkpOwogCi0gICAgaWYgKFNvdXJjZVBhcnNlTW9k
ZVNldChTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUpLmNvbnRhaW5zKG1vZGUpKSB7CisgICAgaWYgKG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkgewogICAgICAgICBzdGFydExv
Y2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwogICAgICAgICBmdW5jdGlvbkluZm8uc3RhcnRMaW5l
ID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIHN0YXJ0Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKKwog
ICAgICAgICBwYXJhbWV0ZXJzU3RhcnQgPSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7
CiAgICAgICAgIGZ1bmN0aW9uSW5mby5zdGFydE9mZnNldCA9IHBhcmFtZXRlcnNTdGFydDsKICAg
ICAgICAgZnVuY3Rpb25JbmZvLnBhcmFtZXRlcnNTdGFydENvbHVtbiA9IHN0YXJ0Q29sdW1uOwog
CiAgICAgICAgIGlmIChsb2FkQ2FjaGVkRnVuY3Rpb24oKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICB7Ci0gICAgICAgICAgICBTZXRGb3JTY29wZTxib29sPiBvdmVycmlkZUFs
bG93QXdhaXQobV9wYXJzZXJTdGF0ZS5hbGxvd0F3YWl0LCAhaXNBc3luY0Z1bmN0aW9uUGFyc2VN
b2RlKG1vZGUpKTsKLSAgICAgICAgICAgIHBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKHN5bnRheENo
ZWNrZXIsIG1vZGUsIGZ1bmN0aW9uSW5mbyk7Ci0gICAgICAgIH0KLQorICAgICAgICBwYXJzZUZ1
bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8pOwogICAg
ICAgICBwcm9wYWdhdGVFcnJvcigpOwogCiAgICAgICAgIG1hdGNoT3JGYWlsKEFSUk9XRlVOQ1RJ
T04sICJFeHBlY3RlZCBhICc9PicgYWZ0ZXIgYXJyb3cgZnVuY3Rpb24gcGFyYW1ldGVyIGRlY2xh
cmF0aW9uIik7CkBAIC0yMTU0LDI4ICsyMDQ4LDE5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxk
CiAgICAgICAgIC8vIEdlbmVyYXRvckV4cHJlc3Npb24gOgogICAgICAgICAvLyAgICAgZnVuY3Rp
b24gKiBCaW5kaW5nSWRlbnRpZmllcltZaWVsZF1vcHQgKCBGb3JtYWxQYXJhbWV0ZXJzW1lpZWxk
XSApIHsgR2VuZXJhdG9yQm9keSB9CiAgICAgICAgIC8vCi0gICAgICAgIC8vIFRoZSBuYW1lIG9m
IEZ1bmN0aW9uRXhwcmVzc2lvbiBhbmQgQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24gY2FuIGFjY2Vw
dCAieWllbGQiIGV2ZW4gaW4gdGhlIGNvbnRleHQgb2YgZ2VuZXJhdG9yLgotICAgICAgICBib29s
IHVwcGVyU2NvcGVJc0dlbmVyYXRvciA9IGZhbHNlOwotICAgICAgICBpZiAoIShmdW5jdGlvbkRl
ZmluaXRpb25UeXBlID09IEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24gJiYgU291
cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlLCBTb3Vy
Y2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlKS5jb250YWlucyhtb2RlKSkpCi0gICAgICAg
ICAgICB1cHBlclNjb3BlSXNHZW5lcmF0b3IgPSB1cHBlclNjb3BlKDEpLT5pc0dlbmVyYXRvcigp
OworICAgICAgICAvLyBUaGUgbmFtZSBvZiBGdW5jdGlvbkV4cHJlc3Npb24gY2FuIGFjY2VwdCAi
eWllbGQiIGV2ZW4gaW4gdGhlIGNvbnRleHQgb2YgZ2VuZXJhdG9yLgorICAgICAgICBpZiAoZnVu
Y3Rpb25EZWZpbml0aW9uVHlwZSA9PSBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpFeHByZXNzaW9u
ICYmIG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUpCisgICAgICAg
ICAgICB1cHBlclNjb3BlSXNHZW5lcmF0b3IgPSBmYWxzZTsKIAogICAgICAgICBpZiAobWF0Y2hT
cGVjSWRlbnRpZmllcih1cHBlclNjb3BlSXNHZW5lcmF0b3IpKSB7Ci0gICAgICAgICAgICBib29s
IGFsbG93c0F3YWl0ID0gZnVuY3Rpb25EZWZpbml0aW9uVHlwZSA9PSBGdW5jdGlvbkRlZmluaXRp
b25UeXBlOjpEZWNsYXJhdGlvbiB8fCBtb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5j
dGlvbk1vZGU7CiAgICAgICAgICAgICBmdW5jdGlvbkluZm8ubmFtZSA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OwogICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5sYXN0RnVuY3Rpb25OYW1lID0gZnVu
Y3Rpb25JbmZvLm5hbWU7Ci0gICAgICAgICAgICBpZiAoYWxsb3dzQXdhaXQpCi0gICAgICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGlzRGlzYWxsb3dlZEF3YWl0RnVuY3Rpb25OYW1lLCAi
Q2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyAiLCBpc0Rpc2FsbG93ZWRBd2Fp
dEZ1bmN0aW9uTmFtZVJlYXNvbik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKGlzRGlzYWxsb3dlZEF3YWl0RnVuY3Rpb25OYW1lLCAiQ2Fubm90
IGRlY2xhcmUgYXN5bmMgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyIpOwotICAgICAgICAgICAgCiAg
ICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAoIW5hbWVJc0luQ29udGFpbmluZ1Nj
b3BlKQogICAgICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChmdW5jdGlvblNjb3BlLT5k
ZWNsYXJlQ2FsbGVlKGZ1bmN0aW9uSW5mby5uYW1lKSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZh
bGlkU3RyaWN0TW9kZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3Qg
YSB2YWxpZCAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSBpbiBzdHJpY3Qg
bW9kZSIpOwogICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVtZW50cyA9PSBGdW5jdGlvbk5lZWRz
TmFtZSkgewotICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKLSAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1
bmN0aW9uTW9kZSwgIkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwotICAg
ICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNGdW5jdGlvbk1vZGUsICJBc3luYyBmdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBh
IG5hbWUiKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4p
ICYmIG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUpCisgICAgICAg
ICAgICAgICAgc2VtYW50aWNGYWlsKCJGdW5jdGlvbiBzdGF0ZW1lbnRzIG11c3QgaGF2ZSBhIG5h
bWUiKTsKICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZChzdHJpbmdGb3JG
dW5jdGlvbk1vZGUobW9kZSksICIgbmFtZSIpOwogICAgICAgICAgICAgZmFpbER1ZVRvVW5leHBl
Y3RlZFRva2VuKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTkxLDExICsyMDc2
LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKIAogICAgICAgICBpZiAobG9hZENhY2hlZEZ1
bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgewotICAgICAgICAg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gb3ZlcnJpZGVBbGxvd0F3YWl0KG1fcGFyc2VyU3RhdGUuYWxs
b3dBd2FpdCwgIWlzQXN5bmNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7Ci0gICAgICAgICAgICBw
YXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8p
OwotICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKLSAgICAgICAgfQorICAgICAgICBwYXJz
ZUZ1bmN0aW9uUGFyYW1ldGVycyhzeW50YXhDaGVja2VyLCBtb2RlLCBmdW5jdGlvbkluZm8pOwor
ICAgICAgICBwcm9wYWdhdGVFcnJvcigpOwogICAgICAgICAKICAgICAgICAgbWF0Y2hPckZhaWwo
T1BFTkJSQUNFLCAiRXhwZWN0ZWQgYW4gb3BlbmluZyAneycgYXQgdGhlIHN0YXJ0IG9mIGEgIiwg
c3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIGJvZHkiKTsKICAgICAgICAgCkBAIC0yMjM5
LDE1ICsyMTIxLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgcmV0dXJuIHBh
cnNlRnVuY3Rpb25Cb2R5KGNvbnRleHQsIHN5bnRheENoZWNrZXIsIHN0YXJ0TG9jYXRpb24sIHN0
YXJ0Q29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFt
ZXRlcnNTdGFydCwgY29uc3RydWN0b3JLaW5kLCBleHBlY3RlZFN1cGVyQmluZGluZywgZnVuY3Rp
b25Cb2R5VHlwZSwgZnVuY3Rpb25JbmZvLnBhcmFtZXRlckNvdW50LCBtb2RlKTsKICAgICB9Owog
Ci0gICAgaWYgKFVOTElLRUxZKChTb3VyY2VQYXJzZU1vZGVTZXQoU291cmNlUGFyc2VNb2RlOjpH
ZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlKS5jb250YWlucyhtb2RlKSkgfHwgaXNBc3luY0Z1
bmN0aW9uV3JhcHBlclBhcnNlTW9kZShtb2RlKSkpIHsKKyAgICBpZiAobW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpIHsKICAgICAgICAgQXV0b1Bv
cFNjb3BlUmVmIGdlbmVyYXRvckJvZHlTY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7Ci0gICAgICAg
IFNvdXJjZVBhcnNlTW9kZSBpbm5lclBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGU7Ci0gICAgICAgIGlmIChpc0FzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2Rl
KG1vZGUpKSB7Ci0gICAgICAgICAgICBpbm5lclBhcnNlTW9kZSA9IG1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlCi0gICAgICAgICAgICAgICAgPyBTb3VyY2VQ
YXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlCi0gICAgICAgICAgICAgICAgOiBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZTsKLSAgICAgICAgfQotICAgICAg
ICBnZW5lcmF0b3JCb2R5U2NvcGUtPnNldFNvdXJjZVBhcnNlTW9kZShpbm5lclBhcnNlTW9kZSk7
CisgICAgICAgIGdlbmVyYXRvckJvZHlTY29wZS0+c2V0U291cmNlUGFyc2VNb2RlKFNvdXJjZVBh
cnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUpOwogICAgICAgICBnZW5lcmF0b3JCb2R5U2NvcGUt
PnNldENvbnN0cnVjdG9yS2luZChDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpOwogICAgICAgICBnZW5l
cmF0b3JCb2R5U2NvcGUtPnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKGV4cGVjdGVkU3VwZXJCaW5k
aW5nKTsKIApAQCAtMjI2NSw3ICsyMTQxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAg
ICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8uYm9keSwgIkNhbm5vdCBwYXJzZSB0aGUgYm9keSBv
ZiB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSk7CiAgICAgY29udGV4dC5zZXRF
bmRPZmZzZXQoZnVuY3Rpb25JbmZvLmJvZHksIG1fbGV4ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAg
ICAgaWYgKGZ1bmN0aW9uU2NvcGUtPnN0cmljdE1vZGUoKSAmJiBmdW5jdGlvbkluZm8ubmFtZSkg
ewotICAgICAgICBSRUxFQVNFX0FTU0VSVCgoU291cmNlUGFyc2VNb2RlU2V0KFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlLCBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsIFNv
dXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJh
dG9yQm9keU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9k
ZSkuY29udGFpbnMobW9kZSkpIHx8IGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUobW9k
ZSkpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9y
bWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8
IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSB8fCBtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGUgfHwgbW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICpmdW5jdGlvbkluZm8ubmFt
ZSwgIiciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5j
dGlvbiBuYW1lIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSht
X3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09ICpmdW5jdGlvbkluZm8ubmFtZSwgIiciLCBmdW5j
dGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpcyBub3QgYSB2YWxpZCBmdW5jdGlvbiBuYW1lIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgfQpAQCAtMjM1MiwzNSArMjIyOCw2IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkRlY2xhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQXN5bmNGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBFeHBvcnRU
eXBlIGV4cG9ydFR5cGUpCi17Ci0gICAgQVNTRVJUKG1hdGNoKEZVTkNUSU9OKSk7Ci0gICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7Ci0gICAgdW5zaWduZWQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQgPSB0b2tlblN0YXJ0KCk7Ci0gICAgbmV4dCgpOwotICAgIFBhcnNl
ckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gZnVuY3Rpb25JbmZvOwotICAgIFNvdXJjZVBhcnNl
TW9kZSBwYXJzZU1vZGUgPSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOwotCi0g
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmVlZHNO
YW1lLCBwYXJzZU1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBmdW5jdGlvbkluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGU6OkRlY2xhcmF0aW9uKSksICJDYW5ub3QgcGFyc2UgdGhpcyBhc3luYyBm
dW5jdGlvbiIpOwotICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiQXN5bmMgZnVu
Y3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7Ci0KLSAgICBzdGQ6OnBhaXI8RGVj
bGFyYXRpb25SZXN1bHRNYXNrLCBTY29wZVJlZj4gZnVuY3Rpb25EZWNsYXJhdGlvbiA9IGRlY2xh
cmVGdW5jdGlvbihmdW5jdGlvbkluZm8ubmFtZSk7Ci0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNr
IGRlY2xhcmF0aW9uUmVzdWx0ID0gZnVuY3Rpb25EZWNsYXJhdGlvbi5maXJzdDsKLSAgICBmYWls
SWZUcnVlSWZTdHJpY3QoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52
YWxpZFN0cmljdE1vZGUsICJDYW5ub3QgZGVjbGFyZSBhbiBhc3luYyBmdW5jdGlvbiBuYW1lZCAn
IiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKLSAgICBp
ZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0
ZURlY2xhcmF0aW9uKQotICAgICAgICBpbnRlcm5hbEZhaWxXaXRoTWVzc2FnZShmYWxzZSwgIkNh
bm5vdCBkZWNsYXJlIGFuIGFzeW5jIGZ1bmN0aW9uIHRoYXQgc2hhZG93cyBhIGxldC9jb25zdC9j
bGFzcy9mdW5jdGlvbiB2YXJpYWJsZSAnIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicg
aW4gc3RyaWN0IG1vZGUiKTsKLSAgICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBv
cnRlZCkgewotICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmZ1bmN0aW9u
SW5mby5uYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgZnVuY3Rpb24gbmFtZTogJyIs
IGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIik7Ci0gICAgICAgIGN1cnJlbnRTY29wZSgp
LT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpmdW5jdGlvbkluZm8ubmFtZSk7Ci0g
ICAgfQotCi0gICAgVHJlZVN0YXRlbWVudCByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNs
U3RhdGVtZW50KGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwotICAgIGlmIChUcmVlQnVpbGRlcjo6
Q3JlYXRlc0FTVCkKLSAgICAgICAgZnVuY3Rpb25EZWNsYXJhdGlvbi5zZWNvbmQtPmFwcGVuZEZ1
bmN0aW9uKGdldE1ldGFkYXRhKGZ1bmN0aW9uSW5mbykpOwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJh
dGlvbihUcmVlQnVpbGRlciYgY29udGV4dCwgRXhwb3J0VHlwZSBleHBvcnRUeXBlKQogewogICAg
IEFTU0VSVChtYXRjaChDTEFTU1RPS0VOKSk7CkBAIC0yNDc4LDExICsyMzI1LDggQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNsYXNzKFQKICAgICAgICAgYm9vbCBpc0dldHRlciA9IGZhbHNlOwogICAgICAg
ICBib29sIGlzU2V0dGVyID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaXNHZW5lcmF0b3IgPSBmYWxz
ZTsKLSAgICAgICAgYm9vbCBpc0FzeW5jTWV0aG9kID0gZmFsc2U7CiAgICAgICAgIGlmIChjb25z
dW1lKFRJTUVTKSkKICAgICAgICAgICAgIGlzR2VuZXJhdG9yID0gdHJ1ZTsKLQotcGFyc2VNZXRo
b2Q6CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgbmFtZWRLZXl3
b3JkOgogICAgICAgICBjYXNlIFNUUklORzoKQEAgLTI0OTEsMTkgKzIzMzUsMTIgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNsYXNzKFQKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIElERU5UOgotICAgICAgICBjYXNlIEFXQUlUOgogICAgICAgICAgICAg
aWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7
CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBpZiAoIWlzR2VuZXJhdG9yICYmICFp
c0FzeW5jTWV0aG9kICYmIChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJ
TkcpIHx8IG1hdGNoKERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikgfHwgbWF0Y2goT1BFTkJSQUNL
RVQpKSkgeworICAgICAgICAgICAgaWYgKCFpc0dlbmVyYXRvciAmJiAobWF0Y2hJZGVudGlmaWVy
T3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRjaChET1VCTEUpIHx8IG1hdGNoKElO
VEVHRVIpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkpIHsKICAgICAgICAgICAgICAgICBpc0dldHRl
ciA9ICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmdldDsKICAgICAgICAgICAgICAgICBpc1NldHRl
ciA9ICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLnNldDsKLSAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIWlzQXN5bmNNZXRob2QgJiYgKmlkZW50ID09IHByb3BlcnR5TmFtZXMuYXN5bmMgJiYg
IW1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICht
X3J1bnRpbWVGbGFncy5pc0FzeW5jQXdhaXRFbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlzQXN5bmNNZXRob2QgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290
byBwYXJzZU1ldGhvZDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERPVUJMRToK
QEAgLTI1MzUsMTIgKzIzNzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVD
bGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAgICAg
ICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBtZXRob2RJbmZvOwogICAgICAgICAg
ICAgYm9vbCBpc0NvbnN0cnVjdG9yID0gIWlzU3RhdGljTWV0aG9kICYmICppZGVudCA9PSBwcm9w
ZXJ0eU5hbWVzLmNvbnN0cnVjdG9yOwogICAgICAgICAgICAgU291cmNlUGFyc2VNb2RlIHBhcnNl
TW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKLSAgICAgICAgICAgIGlmIChpc0Fz
eW5jTWV0aG9kKSB7Ci0gICAgICAgICAgICAgICAgaXNDb25zdHJ1Y3RvciA9IGZhbHNlOwotICAg
ICAgICAgICAgICAgIHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2Rl
OwotICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYW4gYXN5bmMgbWV0aG9kIG5h
bWVkICdwcm90b3R5cGUnIik7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKCpp
ZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgIkNhbm5vdCBkZWNsYXJl
IGFuIGFzeW5jIG1ldGhvZCBuYW1lZCAnY29uc3RydWN0b3InIik7Ci0gICAgICAgICAgICB9IGVs
c2UgaWYgKGlzR2VuZXJhdG9yKSB7CisgICAgICAgICAgICBpZiAoaXNHZW5lcmF0b3IpIHsKICAg
ICAgICAgICAgICAgICBpc0NvbnN0cnVjdG9yID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgcGFy
c2VNb2RlID0gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOwog
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSgqaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCAiQ2Fubm90IGRlY2xhcmUgYSBnZW5lcmF0b3IgbmFtZWQgJ3By
b3RvdHlwZSciKTsKQEAgLTI2MjMsMTAgKzI0NTUsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbk9y
TAogICAgICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlvbiwgZXhwcmVzc2lv
biwgc3RhcnQsIG1fbGFzdFRva2VuRW5kUG9zaXRpb24ubGluZSk7CiAgICAgICAgIH0KLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgYnJhbmNoIGNvbnRyaWJ1dGVzIHRvIGEgMSUgb2N0YW5lIGNvZGUt
bG9hZCByZWdyZXNzaW9uLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MjExCi0gICAgICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkpKQot
ICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGlzRGlzYWxsb3dlZElkZW50aWZpZXJBd2Fp
dChtX3Rva2VuKSwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGFiZWwgIiwgZGlzYWxsb3dlZElk
ZW50aWZpZXJBd2FpdFJlYXNvbigpKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZW5kID0gdG9r
ZW5FbmRQb3NpdGlvbigpOwogICAgICAgICBuZXh0KCk7CkBAIC0yODIzLDcgKzI2NTEsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpJbXBvcnRT
cGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAgICAgICBmYWlsSWZGYWxzZShtYXRjaENvbnRleHR1
YWxLZXl3b3JkKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFzKSwgIkV4cGVjdGVkICdhcycgYmVmb3Jl
IGltcG9ydGVkIGJpbmRpbmcgbmFtZSIpOwogICAgICAgICBuZXh0KCk7CiAKLSAgICAgICAgZmFp
bElmRmFsc2UobWF0Y2hTcGVjSWRlbnRpZmllcigpLCAiRXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1l
IGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uIik7CisgICAgICAgIG1hdGNoT3JGYWlsKElERU5U
LCAiRXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1lIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uIik7
CiAgICAgICAgIGxvY2FsTmFtZVRva2VuID0gbV90b2tlbjsKICAgICAgICAgbG9jYWxOYW1lID0g
bV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsKQEAgLTI4NDUsNyArMjY3Myw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6Oklt
cG9ydFNwZWNpZmllciBQYXJzZXI8TGV4ZXJUCiAKICAgICAgICAgaWYgKG1hdGNoQ29udGV4dHVh
bEtleXdvcmQobV92bS0+cHJvcGVydHlOYW1lcy0+YXMpKSB7CiAgICAgICAgICAgICBuZXh0KCk7
Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaFNwZWNJZGVudGlmaWVyKCksICJFeHBlY3Rl
ZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24iKTsKKyAgICAgICAg
ICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1lIGZvciB0aGUg
aW1wb3J0IGRlY2xhcmF0aW9uIik7CiAgICAgICAgICAgICBsb2NhbE5hbWVUb2tlbiA9IG1fdG9r
ZW47CiAgICAgICAgICAgICBsb2NhbE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAg
ICAgICAgIG5leHQoKTsKQEAgLTI4NTYsNyArMjY4NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBQYXJzZXI8TGV4
ZXJUCiAgICAgY2FzZSBJbXBvcnRTcGVjaWZpZXJUeXBlOjpEZWZhdWx0SW1wb3J0OiB7CiAgICAg
ICAgIC8vIEltcG9ydGVkRGVmYXVsdEJpbmRpbmcgOgogICAgICAgICAvLyBJbXBvcnRlZEJpbmRp
bmcKLSAgICAgICAgQVNTRVJUKG1hdGNoU3BlY0lkZW50aWZpZXIoKSk7CisgICAgICAgIEFTU0VS
VChtYXRjaChJREVOVCkpOwogICAgICAgICBsb2NhbE5hbWVUb2tlbiA9IG1fdG9rZW47CiAgICAg
ICAgIGxvY2FsTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBpbXBvcnRlZE5h
bWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+ZGVmYXVsdEtleXdvcmQ7CkBAIC0yODY1LDcgKzI2
OTMsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpJbXBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAgIH0KICAgICB9CiAKLSAgICBzZW1h
bnRpY0ZhaWxJZlRydWUobG9jYWxOYW1lVG9rZW4ubV90eXBlID09IEFXQUlULCAiQ2Fubm90IHVz
ZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZSIpOwogICAgIHNlbWFudGljRmFp
bElmVHJ1ZShsb2NhbE5hbWVUb2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnLCAiQ2Fubm90
IHVzZSBrZXl3b3JkIGFzIGltcG9ydGVkIGJpbmRpbmcgbmFtZSIpOwogICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZShsb2NhbE5hbWUs
IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgKHNwZWNpZmllclR5cGUgPT0gSW1w
b3J0U3BlY2lmaWVyVHlwZTo6TmFtZXNwYWNlSW1wb3J0KSA/IERlY2xhcmF0aW9uSW1wb3J0VHlw
ZTo6SW1wb3J0ZWROYW1lc3BhY2UgOiBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKTsK
ICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgIT0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkKSB7
CkBAIC0yODk2LDcgKzI3MjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYQogICAgIH0KIAog
ICAgIGJvb2wgaXNGaW5pc2hlZFBhcnNpbmdJbXBvcnQgPSBmYWxzZTsKLSAgICBpZiAobWF0Y2hT
cGVjSWRlbnRpZmllcigpKSB7CisgICAgaWYgKG1hdGNoKElERU5UKSkgewogICAgICAgICAvLyBJ
bXBvcnRlZERlZmF1bHRCaW5kaW5nIDoKICAgICAgICAgLy8gSW1wb3J0ZWRCaW5kaW5nCiAgICAg
ICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VJbXBvcnRDbGF1c2VJdGVtKGNvbnRleHQsIEltcG9y
dFNwZWNpZmllclR5cGU6OkRlZmF1bHRJbXBvcnQpOwpAQCAtMzAwNiwxOSArMjgzMyw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgcmVzdWx0ID0gMDsK
ICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uT3JDbGFzc0RlY2xhcmF0aW9uID0gZmFsc2U7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGxvY2FsTmFtZSA9IG51bGxwdHI7Ci0gICAgICAgIGJvb2wg
aXNBc3luY0Z1bmN0aW9uRXhwb3J0ID0gZmFsc2U7CiAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9p
bnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKIAotICAgICAgICBpZiAoVU5MSUtFTFkobWF0Y2hDb250
ZXh0dWFsS2V5d29yZChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hc3luYykpKSB7Ci0gICAgICAgICAg
ICBpZiAobV9ydW50aW1lRmxhZ3MuaXNBc3luY0F3YWl0RW5hYmxlZCgpKSB7Ci0gICAgICAgICAg
ICAgICAgbmV4dCgpOwotICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXRjaChGVU5DVElP
TikgJiYgIW1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCkpKQotICAgICAgICAgICAgICAgICAgICBp
c0FzeW5jRnVuY3Rpb25FeHBvcnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdG9yZVNhdmVQb2ludChzYXZlUG9pbnQpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KICAgICAgICAgYm9vbCBzdGFydHNXaXRoRnVuY3Rpb24gPSBtYXRjaChG
VU5DVElPTik7CiAgICAgICAgIGlmIChzdGFydHNXaXRoRnVuY3Rpb24gfHwgbWF0Y2goQ0xBU1NU
T0tFTikpIHsKICAgICAgICAgICAgIGlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24gPSB0cnVl
OwpAQCAtMzAzNiwxMSArMjg1Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAg
ICAgICBpZiAobWF0Y2goRlVOQ1RJT04pKSB7CiAgICAgICAgICAgICAgICAgRGVwdGhNYW5hZ2Vy
IHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKICAgICAgICAgICAgICAgICBtX3N0
YXRlbWVudERlcHRoID0gMTsKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBc3luY0Z1
bmN0aW9uRXhwb3J0KSkgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9ydW50aW1lRmxh
Z3MuaXNBc3luY0F3YWl0RW5hYmxlZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb25EZWNsYXJh
dGlvbihjb250ZXh0KTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb24oY29udGV4dCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
IEFTU0VSVChtYXRjaChDTEFTU1RPS0VOKSk7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcGFy
c2VDbGFzc0RlY2xhcmF0aW9uKGNvbnRleHQpOwpAQCAtMzA1NSwxMSArMjg2Nyw5IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAgICAvLwogICAgICAgICAgICAgLy8gSW4gdGhl
IGFib3ZlIGV4YW1wbGUsICpkZWZhdWx0KiBpcyB0aGUgaW52aXNpYmxlIHZhcmlhYmxlIHRvIHRo
ZSB1c2Vycy4KICAgICAgICAgICAgIC8vIFdlIHVzZSB0aGUgcHJpdmF0ZSBzeW1ib2wgdG8gcmVw
cmVzZW50IHRoZSBuYW1lIG9mIHRoaXMgdmFyaWFibGUuCi0gICAgICAgICAgICBFeHByZXNzaW9u
RXJyb3JDbGFzc2lmaWVyIGNsYXNzaWZpZXIodGhpcyk7CiAgICAgICAgICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgICAgIEpTVGV4dFBvc2l0
aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBleHByZXNzaW9uID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKLQog
ICAgICAgICAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbiwgIkNhbm5vdCBwYXJzZSBleHByZXNz
aW9uIik7CiAKICAgICAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJl
c3VsdCA9IGRlY2xhcmVWYXJpYWJsZSgmbV92bS0+cHJvcGVydHlOYW1lcy0+c3RhckRlZmF1bHRQ
cml2YXRlTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKTsKQEAgLTMxNjIs
MTUgKzI5NzIsNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXRjaENvbnRl
eHR1YWxLZXl3b3JkKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFzeW5jKSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAobV9ydW50aW1lRmxhZ3MuaXNBc3luY0F3YWl0RW5hYmxlZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZG
YWxzZShtYXRjaChGVU5DVElPTikgJiYgIW1fbGV4ZXItPnByZXZUZXJtaW5hdG9yKCksICJFeHBl
Y3RlZCAnZnVuY3Rpb24nIGtleXdvcmQgZm9sbG93aW5nICdhc3luYycga2V5d29yZCB3aXRoIG5v
IHByZWNlZGluZyBsaW5lIHRlcm1pbmF0b3IiKTsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gcGFyc2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCwgRXhwb3J0VHlwZTo6RXhw
b3J0ZWQpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgZWl0
aGVyIGEgZGVjbGFyYXRpb24gb3IgYSB2YXJpYWJsZSBzdGF0ZW1lbnQiKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC0zMjM1LDQ4ICszMDM2LDM0IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXNzaWdubWVuCiAgICAgQVNTRVJUKCFoYXNFcnJvcigpKTsKICAgICAKICAgICBmYWlsSWZTdGFj
a092ZXJmbG93KCk7Ci0KLSAgICBpZiAobWF0Y2goWUlFTEQpICYmICFpc1lJRUxETWFza2VkQXNJ
REVOVChjdXJyZW50U2NvcGUoKS0+aXNHZW5lcmF0b3IoKSkpCi0gICAgICAgIHJldHVybiBwYXJz
ZVlpZWxkRXhwcmVzc2lvbihjb250ZXh0KTsKLQogICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0g
dG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX3BhcnNlclN0
YXRlLmFzc2lnbm1lbnRDb3VudDsKICAgICBpbnQgaW5pdGlhbE5vbkxIU0NvdW50ID0gbV9wYXJz
ZXJTdGF0ZS5ub25MSFNDb3VudDsKICAgICBib29sIG1heWJlQXNzaWdubWVudFBhdHRlcm4gPSBt
YXRjaChPUEVOQlJBQ0UpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKTsKICAgICBib29sIHdhc09wZW5Q
YXJlbiA9IG1hdGNoKE9QRU5QQVJFTik7Ci0gICAgLy8gRG8gbm90IHVzZSBtYXRjaFNwZWNJZGVu
dGlmaWVyKCkgaGVyZSBzaW5jZSBpdCBpcyBzbG93ZXIgdGhhbiBpc0lkZW50aWZpZXJPcktleXdv
cmQuCi0gICAgLy8gV2hldGhlciBzcGVjIGlkZW50aWZpZXIgaXMgd2lsbCBiZSB2YWxpZGF0ZWQg
YnkgaXNBcnJvd0Z1bmN0aW9uUGFyYW1ldGVycygpLgotICAgIGJvb2wgd2FzSWRlbnRpZmllck9y
S2V5d29yZCA9IGlzSWRlbnRpZmllck9yS2V5d29yZChtX3Rva2VuKTsKLSAgICBib29sIG1heWJl
VmFsaWRBcnJvd0Z1bmN0aW9uU3RhcnQgPSB3YXNPcGVuUGFyZW4gfHwgd2FzSWRlbnRpZmllck9y
S2V5d29yZDsKKyAgICBib29sIGlzVmFsaWRBcnJvd0Z1bmN0aW9uU3RhcnQgPSBtYXRjaChPUEVO
UEFSRU4pIHx8IG1hdGNoKElERU5UKTsKICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRl
U2F2ZVBvaW50KCk7CiAgICAgc2l6ZV90IHVzZWRWYXJpYWJsZXNTaXplID0gMDsKLQotICAgIC8v
IEZJWE1FOiBUaGlzIGJyYW5jaCBjb250cmlidXRlcyB0byBhIDElIG9jdGFuZSBjb2RlLWxvYWQg
cmVncmVzc2lvbi4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU4MjExCi0gICAgaWYgKHdhc09wZW5QYXJlbiB8fCAod2FzSWRlbnRpZmllck9yS2V5d29y
ZCAmJiBtX3J1bnRpbWVGbGFncy5pc0FzeW5jQXdhaXRFbmFibGVkKCkgJiYgVU5MSUtFTFkoKm1f
dG9rZW4ubV9kYXRhLmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFzeW5jKSkpIHsKKyAg
ICBpZiAod2FzT3BlblBhcmVuKSB7CiAgICAgICAgIHVzZWRWYXJpYWJsZXNTaXplID0gY3VycmVu
dFNjb3BlKCktPmN1cnJlbnRVc2VkVmFyaWFibGVzU2l6ZSgpOwogICAgICAgICBjdXJyZW50U2Nv
cGUoKS0+cHVzaFVzZWRWYXJpYWJsZVNldCgpOwogICAgIH0KIAorICAgIGlmIChtYXRjaChZSUVM
RCkgJiYgIWlzWUlFTERNYXNrZWRBc0lERU5UKGN1cnJlbnRTY29wZSgpLT5pc0dlbmVyYXRvcigp
KSkKKyAgICAgICAgcmV0dXJuIHBhcnNlWWllbGRFeHByZXNzaW9uKGNvbnRleHQpOworCiAgICAg
VHJlZUV4cHJlc3Npb24gbGhzID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oY29udGV4dCk7
CiAKLSAgICBpZiAobWF5YmVWYWxpZEFycm93RnVuY3Rpb25TdGFydCAmJiAhbWF0Y2goRU9GVE9L
KSkgeworICAgIGlmIChpc1ZhbGlkQXJyb3dGdW5jdGlvblN0YXJ0ICYmICFtYXRjaChFT0ZUT0sp
KSB7CiAgICAgICAgIGJvb2wgaXNBcnJvd0Z1bmN0aW9uVG9rZW4gPSBtYXRjaChBUlJPV0ZVTkNU
SU9OKTsKICAgICAgICAgaWYgKCFsaHMgfHwgaXNBcnJvd0Z1bmN0aW9uVG9rZW4pIHsKICAgICAg
ICAgICAgIFNhdmVQb2ludFdpdGhFcnJvciBlcnJvclJlc3RvcmF0aW9uU2F2ZVBvaW50ID0gY3Jl
YXRlU2F2ZVBvaW50Rm9yRXJyb3IoKTsKICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2
ZVBvaW50KTsKLSAgICAgICAgICAgIGJvb2wgaXNBc3luY0Fycm93ID0gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoVU5MSUtFTFkoY2xhc3NpZmllci5pbmRpY2F0ZXNQb3NzaWJsZUFzeW5jQXJyb3dG
dW5jdGlvbigpKSkgewotICAgICAgICAgICAgICAgIEFTU0VSVChtX3J1bnRpbWVGbGFncy5pc0Fz
eW5jQXdhaXRFbmFibGVkKCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChtYXRjaENvbnRleHR1
YWxLZXl3b3JkKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFzeW5jKSk7Ci0gICAgICAgICAgICAgICAg
bmV4dCgpOwotICAgICAgICAgICAgICAgIGlzQXN5bmNBcnJvdyA9ICFtX2xleGVyLT5wcmV2VGVy
bWluYXRvcigpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGlzQXJyb3dGdW5jdGlv
blBhcmFtZXRlcnMoKSkgewotICAgICAgICAgICAgICAgIGlmICh3YXNPcGVuUGFyZW4gfHwgaXNB
c3luY0Fycm93KQorICAgICAgICAgICAgICAgIGlmICh3YXNPcGVuUGFyZW4pCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5yZXZlcnRUb1ByZXZpb3VzVXNlZFZhcmlhYmxlcyh1
c2VkVmFyaWFibGVzU2l6ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlQXJyb3dGdW5j
dGlvbkV4cHJlc3Npb24oY29udGV4dCwgaXNBc3luY0Fycm93KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnRXaXRoRXJyb3IoZXJyb3JSZXN0b3JhdGlv
blNhdmVQb2ludCk7CiAgICAgICAgICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uVG9rZW4pCkBAIC0z
Mzk5LDIzICszMTg2LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VZaWVsZEV4cHJlc3MKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXdhaXRFeHByZXNzaW9uKFRyZWVCdWls
ZGVyJiBjb250ZXh0KQotewotICAgIC8vIEF3YWl0RXhwcmVzc2lvbiBkZXN1Z2FyZWQgdG8gWWll
bGRFeHByZXNzaW9uCi0gICAgQVNTRVJUKG1hdGNoKEFXQUlUKSk7Ci0gICAgQVNTRVJUKGN1cnJl
bnRTY29wZSgpLT5pc0FzeW5jRnVuY3Rpb24oKSk7Ci0gICAgZmFpbElmVHJ1ZShtX3BhcnNlclN0
YXRlLmZ1bmN0aW9uUGFyc2VQaGFzZSA9PSBGdW5jdGlvblBhcnNlUGhhc2U6OlBhcmFtZXRlcnMs
ICJDYW5ub3QgdXNlIGF3YWl0IGV4cHJlc3Npb24gd2l0aGluIHBhcmFtZXRlcnMiKTsKLSAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICBKU1RleHRQb3Np
dGlvbiBkaXZvdFN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7Ci0gICAgbmV4dCgpOwotICAg
IEpTVGV4dFBvc2l0aW9uIGFyZ3VtZW50U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKLSAg
ICBUcmVlRXhwcmVzc2lvbiBhcmd1bWVudCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKGNvbnRleHQp
OwotICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50LCAiRmFpbGVkIHRvIHBhcnNlIGF3YWl0IGV4cHJl
c3Npb24iKTsKLSAgICBjb25zdCBib29sIGRlbGVnYXRlID0gZmFsc2U7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlWWllbGQobG9jYXRpb24sIGFyZ3VtZW50LCBkZWxlZ2F0ZSwgZGl2b3RTdGFy
dCwgYXJndW1lbnRTdGFydCwgbGFzdFRva2VuRW5kUG9zaXRpb24oKSk7Ci19Ci0KLXRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKQEAgLTM1MDEsMjYgKzMyNzEsMjIgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHko
VHJlZUIKICAgICBib29sIHdhc0lkZW50ID0gZmFsc2U7CiAgICAgYm9vbCBpc0dlbmVyYXRvciA9
IGZhbHNlOwogICAgIGJvb2wgaXNDbGFzc1Byb3BlcnR5ID0gZmFsc2U7Ci0gICAgYm9vbCBpc0Fz
eW5jTWV0aG9kID0gZmFsc2U7CiAgICAgaWYgKGNvbnN1bWUoVElNRVMpKQogICAgICAgICBpc0dl
bmVyYXRvciA9IHRydWU7Ci0KLXBhcnNlUHJvcGVydHk6CiAgICAgc3dpdGNoIChtX3Rva2VuLm1f
dHlwZSkgewogICAgIG5hbWVkUHJvcGVydHk6CiAgICAgY2FzZSBJREVOVDoKLSAgICBjYXNlIEFX
QUlUOgogICAgICAgICB3YXNJZGVudCA9IHRydWU7CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tl
bi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZz
ZXQgPSB0b2tlblN0YXJ0KCk7Ci0gICAgICAgIGlmIChjb21wbGV0ZSB8fCAod2FzSWRlbnQgJiYg
IWlzR2VuZXJhdG9yICYmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0IHx8ICpp
ZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5zZXQgfHwgKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFzeW5jKSkpCisgICAgICAgIGlmIChjb21wbGV0ZSB8fCAod2FzSWRlbnQgJiYg
IWlzR2VuZXJhdG9yICYmICgqaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Z2V0IHx8ICpp
ZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5zZXQpKSkKICAgICAgICAgICAgIG5leHRFeHBl
Y3RJZGVudGlmaWVyKExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9yZVJlc2Vy
dmVkV29yZHMgfCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogCi0gICAgICAgIGlm
ICghaXNHZW5lcmF0b3IgJiYgIWlzQXN5bmNNZXRob2QgJiYgbWF0Y2goQ09MT04pKSB7CisgICAg
ICAgIGlmICghaXNHZW5lcmF0b3IgJiYgbWF0Y2goQ09MT04pKSB7CiAgICAgICAgICAgICBuZXh0
KCk7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbk9yUHJvcGFnYXRlRXJyb3JDbGFzcyhjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJ
ZkZhbHNlKG5vZGUsICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiBmb3IgcHJvcGVydHkgZGVjbGFy
YXRpb24iKTsKQEAgLTM1MjksMTIgKzMyOTUsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkoVHJlZUIK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7Ci0gICAgICAgICAg
ICBhdXRvIG1ldGhvZCA9IHBhcnNlUHJvcGVydHlNZXRob2QoY29udGV4dCwgaWRlbnQsIGlzR2Vu
ZXJhdG9yLCBpc0FzeW5jTWV0aG9kKTsKKyAgICAgICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQ
cm9wZXJ0eU1ldGhvZChjb250ZXh0LCBpZGVudCwgaXNHZW5lcmF0b3IpOwogICAgICAgICAgICAg
cHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3Bl
cnR5KGlkZW50LCBtZXRob2QsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQsIFByb3BlcnR5Tm9kZTo6
S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXNDbGFzc1Byb3Bl
cnR5KTsKICAgICAgICAgfQotCi0gICAgICAgIGZhaWxJZlRydWUoaXNHZW5lcmF0b3IgfHwgaXNB
c3luY01ldGhvZCwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3VtZW50IGxpc3QiKTsK
KyAgICAgICAgZmFpbElmVHJ1ZShpc0dlbmVyYXRvciwgIkV4cGVjdGVkIGEgcGFyZW50aGVzaXMg
Zm9yIGFyZ3VtZW50IGxpc3QiKTsKIAogICAgICAgICBmYWlsSWZGYWxzZSh3YXNJZGVudCwgIkV4
cGVjdGVkIGFuIGlkZW50aWZpZXIgYXMgcHJvcGVydHkgbmFtZSIpOwogCkBAIC0zNTU2LDExICsz
MzIxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkoVHJlZUIKICAgICAgICAgICAgIHR5cGUgPSBQcm9w
ZXJ0eU5vZGU6OkdldHRlcjsKICAgICAgICAgZWxzZSBpZiAoKmlkZW50ID09IG1fdm0tPnByb3Bl
cnR5TmFtZXMtPnNldCkKICAgICAgICAgICAgIHR5cGUgPSBQcm9wZXJ0eU5vZGU6OlNldHRlcjsK
LSAgICAgICAgZWxzZSBpZiAoVU5MSUtFTFkobV9ydW50aW1lRmxhZ3MuaXNBc3luY0F3YWl0RW5h
YmxlZCgpICYmICFpc0dlbmVyYXRvciAmJiAhaXNBc3luY01ldGhvZCAmJiAqaWRlbnQgPT0gbV92
bS0+cHJvcGVydHlOYW1lcy0+YXN5bmMpKSB7Ci0gICAgICAgICAgICBpc0FzeW5jTWV0aG9kID0g
dHJ1ZTsKLSAgICAgICAgICAgIGZhaWxJZlRydWUobV9sZXhlci0+cHJldlRlcm1pbmF0b3IoKSwg
IkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSBmb2xsb3dpbmcga2V5d29yZCAnYXN5bmMnIik7Ci0g
ICAgICAgICAgICBnb3RvIHBhcnNlUHJvcGVydHk7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICBl
bHNlCiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgJzonIGZvbGxvd2lu
ZyB0aGUgcHJvcGVydHkgbmFtZSAnIiwgaWRlbnQtPmltcGwoKSwgIiciKTsKICAgICAgICAgcmV0
dXJuIHBhcnNlR2V0dGVyU2V0dGVyKGNvbnRleHQsIGNvbXBsZXRlLCB0eXBlLCBnZXR0ZXJPclNl
dHRlclN0YXJ0T2Zmc2V0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIGlzQ2xhc3NQcm9wZXJ0eSk7
CiAgICAgfQpAQCAtMzU3MSwxMSArMzMzMiwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eShUcmVlQgog
CiAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IG1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5hKCkubWFrZU51bWVy
aWNJZGVudGlmaWVyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgcHJvcGVydHlOYW1lKTsKLSAgICAg
ICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCAmaWRlbnQs
IGlzR2VuZXJhdG9yLCBpc0FzeW5jTWV0aG9kKTsKKyAgICAgICAgICAgIGF1dG8gbWV0aG9kID0g
cGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCAmaWRlbnQsIGlzR2VuZXJhdG9yKTsKICAgICAg
ICAgICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVQcm9wZXJ0eSgmaWRlbnQsIG1ldGhvZCwgUHJvcGVydHlOb2RlOjpDb25zdGFudCwgUHJvcGVy
dHlOb2RlOjpVbmtub3duLCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGlzQ2xhc3NQ
cm9wZXJ0eSk7CiAgICAgICAgIH0KLSAgICAgICAgZmFpbElmVHJ1ZShpc0dlbmVyYXRvciB8fCBp
c0FzeW5jTWV0aG9kLCAiRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdCIp
OworICAgICAgICBmYWlsSWZUcnVlKGlzR2VuZXJhdG9yLCAiRXhwZWN0ZWQgYSBwYXJlbnRoZXNp
cyBmb3IgYXJndW1lbnQgbGlzdCIpOwogCiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ09MT04sICJF
eHBlY3RlZCAnOicgYWZ0ZXIgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICBUcmVlRXhwcmVzc2lv
biBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTM1OTAsMTEg
KzMzNTEsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkoVHJlZUIKICAgICAgICAgaGFuZGxlUHJvZHVj
dGlvbk9yRmFpbChDTE9TRUJSQUNLRVQsICJdIiwgImVuZCIsICJjb21wdXRlZCBwcm9wZXJ0eSBu
YW1lIik7CiAKICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikpIHsKLSAgICAgICAgICAgIGF1
dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCAmbV92bS0+cHJvcGVydHlO
YW1lcy0+bnVsbElkZW50aWZpZXIsIGlzR2VuZXJhdG9yLCBpc0FzeW5jTWV0aG9kKTsKKyAgICAg
ICAgICAgIGF1dG8gbWV0aG9kID0gcGFyc2VQcm9wZXJ0eU1ldGhvZChjb250ZXh0LCAmbV92bS0+
cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGlzR2VuZXJhdG9yKTsKICAgICAgICAgICAg
IHByb3BhZ2F0ZUVycm9yKCk7CiAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQcm9w
ZXJ0eShwcm9wZXJ0eU5hbWUsIG1ldGhvZCwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBl
PihQcm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIFByb3Bl
cnR5Tm9kZTo6S25vd25EaXJlY3QsIGNvbXBsZXRlLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgaXND
bGFzc1Byb3BlcnR5KTsKICAgICAgICAgfQotICAgICAgICBmYWlsSWZUcnVlKGlzR2VuZXJhdG9y
IHx8IGlzQXN5bmNNZXRob2QsICJFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBs
aXN0Iik7CisgICAgICAgIGZhaWxJZlRydWUoaXNHZW5lcmF0b3IsICJFeHBlY3RlZCBhIHBhcmVu
dGhlc2lzIGZvciBhcmd1bWVudCBsaXN0Iik7CiAKICAgICAgICAgY29uc3VtZU9yRmFpbChDT0xP
TiwgIkV4cGVjdGVkICc6JyBhZnRlciBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgIFRyZWVFeHBy
ZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMzYw
OSwxMiArMzM3MCwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0
eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eShUcmVlQgogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRl
ciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSwgYm9vbCBpc0dlbmVyYXRv
ciwgYm9vbCBpc0FzeW5jKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGhvZChUcmVlQnVpbGRlciYg
Y29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSwgYm9vbCBpc0dlbmVyYXRvcikK
IHsKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5j
dGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgU291cmNlUGFyc2VNb2RlIHBh
cnNlTW9kZSA9IGlzR2VuZXJhdG9yID8gU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVy
RnVuY3Rpb25Nb2RlIDogaXNBc3luYyA/IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2Rl
IDogU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUgPSBpc0dlbmVyYXRvciA/IFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKICAgICBmYWlsSWZGYWxz
ZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFy
c2VNb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhv
ZCkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgbWV0aG9kSW5mby5uYW1lID0g
bWV0aG9kTmFtZTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVNZXRob2REZWZpbml0aW9uKG1l
dGhvZExvY2F0aW9uLCBtZXRob2RJbmZvKTsKQEAgLTM4NzIsMjAgKzM2MzMsNiBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uRXhwcgogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKLXsK
LSAgICBBU1NFUlQobWF0Y2goRlVOQ1RJT04pKTsKLSAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICB1bnNpZ25lZCBmdW5jdGlvbktleXdvcmRTdGFydCA9
IHRva2VuU3RhcnQoKTsKLSAgICBuZXh0KCk7Ci0gICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVC
dWlsZGVyPiBmdW5jdGlvbkluZm87Ci0gICAgZnVuY3Rpb25JbmZvLm5hbWUgPSAmbV92bS0+cHJv
cGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGU7Ci0gICAgZmFpbElmRmFsc2Uo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VN
b2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRl
ZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZTo6RXhwcmVzc2lvbiksICJDYW5ub3QgcGFyc2UgYXN5bmMgZnVuY3Rpb24gZXhwcmVzc2lv
biIpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgZnVu
Y3Rpb25JbmZvKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlRlbXBsYXRlU3RyaW5n
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVRlbXBsYXRlU3RyaW5nKFRyZWVCdWlsZGVyJiBjb250
ZXh0LCBib29sIGlzVGVtcGxhdGVIZWFkLCB0eXBlbmFtZSBMZXhlclR5cGU6OlJhd1N0cmluZ3NC
dWlsZE1vZGUgcmF3U3RyaW5nc0J1aWxkTW9kZSwgYm9vbCYgZWxlbWVudElzVGFpbCkKIHsKICAg
ICBpZiAoIWlzVGVtcGxhdGVIZWFkKSB7CkBAIC0zOTc1LDE5ICszNzIyLDE0IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlUHJpbWFyeUV4cHJlCiAgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+c2V0SW5uZXJBcnJv
d0Z1bmN0aW9uVXNlc1RoaXMoKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhpc0V4
cHIobG9jYXRpb24pOwogICAgIH0KLSAgICBjYXNlIEFXQUlUOgogICAgIGNhc2UgSURFTlQ6IHsK
ICAgICBpZGVudGlmaWVyRXhwcmVzc2lvbjoKICAgICAgICAgSlNUZXh0UG9zaXRpb24gc3RhcnQg
PSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQg
PSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgLy8gRklYTUU6IFRo
aXMgYnJhbmNoIGNvbnRyaWJ1dGVzIHRvIGEgMSUgb2N0YW5lIGNvZGUtbG9hZCByZWdyZXNzaW9u
LgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4
MjExCi0gICAgICAgIGlmIChVTkxJS0VMWShtYXRjaChGVU5DVElPTikgJiYgIW1fbGV4ZXItPnBy
ZXZUZXJtaW5hdG9yKCkgJiYgKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmFzeW5jKSkg
ewotICAgICAgICAgICAgaWYgKG1fcnVudGltZUZsYWdzLmlzQXN5bmNBd2FpdEVuYWJsZWQoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbihjb250
ZXh0KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoVU5MSUtFTFkobWF0Y2goQVJST1dGVU5DVElP
TikpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VW
YXJpYWJsZShpZGVudCwgbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqaWRlbnQpOwogICAg
ICAgICBtX3BhcnNlclN0YXRlLmxhc3RJZGVudGlmaWVyID0gaWRlbnQ7CiAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVJlc29sdmUobG9jYXRpb24sICppZGVudCwgc3RhcnQsIGxhc3RUb2tl
bkVuZFBvc2l0aW9uKCkpOwpAQCAtNDE2Myw3ICszOTA1LDYgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJF
eHByZXMKICAgICAgICAgICAgIGZhaWxEdWVUb1VuZXhwZWN0ZWRUb2tlbigpOwogICAgIH0KIAot
ICAgIGJvb2wgYmFzZUlzQXN5bmNLZXl3b3JkID0gZmFsc2U7CiAgICAgaWYgKGJhc2VJc1N1cGVy
KSB7CiAgICAgICAgIFNjb3BlUmVmIGNsb3Nlc3RPcmRpbmFyeUZ1bmN0aW9uU2NvcGUgPSBjbG9z
ZXN0UGFyZW50T3JkaW5hcnlGdW5jdGlvbk5vbkxleGljYWxTY29wZSgpOwogICAgICAgICBzZW1h
bnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCkgfHwgKGNsb3Nlc3RP
cmRpbmFyeUZ1bmN0aW9uU2NvcGUtPmlzRXZhbENvbnRleHQoKSAmJiBjbG9zZXN0T3JkaW5hcnlG
dW5jdGlvblNjb3BlLT5leHBlY3RlZFN1cGVyQmluZGluZygpID09IFN1cGVyQmluZGluZzo6TmVl
ZGVkKSwgInN1cGVyIGlzIG5vdCB2YWxpZCBpbiB0aGlzIGNvbnRleHQiKTsKQEAgLTQxODEsMjQg
KzM5MjIsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoZnVuY3Rpb25TdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOb3RO
ZWVkZWQsICJzdXBlciBpcyBub3QgdmFsaWQgaW4gdGhpcyBjb250ZXh0Iik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKCFiYXNlSXNOZXdUYXJnZXQpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFRoaXMgYnJhbmNoIGNvbnRyaWJ1dGVzIHRvIGEgMSUgb2N0YW5lIGNvZGUt
bG9hZCByZWdyZXNzaW9uLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU4MjExCi0gICAgICAgIGNvbnN0IGJvb2wgaXNBc3luYyA9IG1hdGNoQ29u
dGV4dHVhbEtleXdvcmQobV92bS0+cHJvcGVydHlOYW1lcy0+YXN5bmMpOworICAgIH0gZWxzZSBp
ZiAoIWJhc2VJc05ld1RhcmdldCkKICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Np
b24oY29udGV4dCk7Ci0gICAgICAgIGZhaWxJZkZhbHNlKGJhc2UsICJDYW5ub3QgcGFyc2UgYmFz
ZSBleHByZXNzaW9uIik7Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX3J1bnRpbWVGbGFncy5pc0Fz
eW5jQXdhaXRFbmFibGVkKCkgJiYgaXNBc3luYyAmJiBjb250ZXh0LmlzUmVzb2x2ZShiYXNlKSAm
JiAhbV9sZXhlci0+cHJldlRlcm1pbmF0b3IoKSkpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaFNw
ZWNJZGVudGlmaWVyKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBBc3luY0Fycm93RnVuY3Rpb24K
LSAgICAgICAgICAgICAgICBmb3JjZUNsYXNzaWZ5RXhwcmVzc2lvbkVycm9yKEVycm9ySW5kaWNh
dGVzQXN5bmNBcnJvd0Z1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJhc2VJc0FzeW5jS2V5d29yZCA9IHRydWU7Ci0gICAgICAg
IH0KLSAgICB9CiAKICAgICBmYWlsSWZGYWxzZShiYXNlLCAiQ2Fubm90IHBhcnNlIGJhc2UgZXhw
cmVzc2lvbiIpOwotCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgbG9jYXRpb24gPSB0b2tl
bkxvY2F0aW9uKCk7CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKQEAgLTQyMzEs
OCArMzk1OCw2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGV4cHJlc3Npb25FbmQgPSBsYXN0VG9r
ZW5FbmRQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRz
ID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KGJhc2VJc0FzeW5jS2V5d29yZCAmJiAoIWFyZ3VtZW50cyB8fCBtYXRjaChBUlJPV0ZVTkNUSU9O
KSkpKQotICAgICAgICAgICAgICAgICAgICBmb3JjZUNsYXNzaWZ5RXhwcmVzc2lvbkVycm9yKEVy
cm9ySW5kaWNhdGVzQXN5bmNBcnJvd0Z1bmN0aW9uKTsKICAgICAgICAgICAgICAgICBmYWlsSWZG
YWxzZShhcmd1bWVudHMsICJDYW5ub3QgcGFyc2UgY2FsbCBhcmd1bWVudHMiKTsKICAgICAgICAg
ICAgICAgICBpZiAoYmFzZUlzU3VwZXIpIHsKICAgICAgICAgICAgICAgICAgICAgU2NvcGVSZWYg
ZnVuY3Rpb25TY29wZSA9IGN1cnJlbnRGdW5jdGlvblNjb3BlKCk7CkBAIC00MjkxLDcgKzQwMTYs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihUcmVlQnVpbGRlciYg
Y29udGV4dCwgYm9vbCBpc0FzeW5jKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247
CiAKQEAgLTQyOTksOSArNDAyNCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyb3dGdW5jdGlvCiAgICAgbG9j
YXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWls
ZGVyPiBpbmZvOwogICAgIGluZm8ubmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRl
bnRpZmllcjsKLSAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gaXNBc3luYyA/IFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSA6IFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGU7Ci0KLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgcGFyc2VNb2RlLCB0cnVlLCBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFy
dCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6RXhwcmVzc2lvbikpLCAiQ2Fubm90IHBh
cnNlIGFycm93IGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgU291cmNlUGFyc2VN
b2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBl
ckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGU6OkV4cHJlc3Npb24pKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlv
biBleHByZXNzaW9uIik7CiAKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJvd0Z1bmN0aW9u
RXhwcihsb2NhdGlvbiwgaW5mbyk7CiB9CkBAIC00MzQ1LDE0ICs0MDY4LDYgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VVbmFyeUV4cHJlc3MKICAgICBib29sIG1vZGlmaWVzRXhwciA9IGZhbHNlOwogICAgIGJvb2wg
cmVxdWlyZXNMRXhwciA9IGZhbHNlOwogICAgIHVuc2lnbmVkIGxhc3RPcGVyYXRvciA9IDA7Ci0K
LSAgICAvLyBGSVhNRTogVGhpcyBicmFuY2ggY29udHJpYnV0ZXMgdG8gYSAxJSBvY3RhbmUgY29k
ZS1sb2FkIHJlZ3Jlc3Npb24uCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1ODIxMQotICAgIGlmIChVTkxJS0VMWShtYXRjaChBV0FJVCkpKSB7Ci0gICAg
ICAgIGlmIChtX3J1bnRpbWVGbGFncy5pc0FzeW5jQXdhaXRFbmFibGVkKCkgJiYgY3VycmVudEZ1
bmN0aW9uU2NvcGUoKS0+aXNBc3luY0Z1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFy
c2VBd2FpdEV4cHJlc3Npb24oY29udGV4dCk7Ci0gICAgfQotCiAgICAgd2hpbGUgKGlzVW5hcnlP
cChtX3Rva2VuLm1fdHlwZSkpIHsKICAgICAgICAgaWYgKHN0cmljdE1vZGUoKSkgewogICAgICAg
ICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewpAQCAtNDUzMyw3ICs0MjQ4LDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6cHJpbnRV
bmV4cGVjdGVkVG9rZW5UZXh0KFcKICAgICBjYXNlIElOVkFMSURfUFJJVkFURV9OQU1FX0VSUk9S
VE9LOgogICAgICAgICBvdXQucHJpbnQoIkludmFsaWQgcHJpdmF0ZSBuYW1lICciLCBnZXRUb2tl
bigpLCAiJyIpOwogICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgICAgIAogICAgIGNhc2UgSURF
TlQ6CiAgICAgICAgIG91dC5wcmludCgiVW5leHBlY3RlZCBpZGVudGlmaWVyICciLCBnZXRUb2tl
bigpLCAiJyIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAppbmRleCBmOTU1NzEwZWFmOWJhN2U0ZTA3YzQ1N2QzNDZmMjdiMjA3YzNjY2E1Li5jNzAw
ZjA3NjcwMTdiNWY1MTNiZDk3OWYyNGYxMDEzYjA1OTI4ZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJQYXJzZXJFcnJv
ci5oIgogI2luY2x1ZGUgIlBhcnNlckZ1bmN0aW9uSW5mby5oIgogI2luY2x1ZGUgIlBhcnNlclRv
a2Vucy5oIgotI2luY2x1ZGUgIlJ1bnRpbWVGbGFncy5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiU291cmNlUHJvdmlkZXJDYWNoZS5oIgogI2luY2x1ZGUgIlNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtLmgiCkBAIC0xNTQsNyArMTUzLDcgQEAgc3RydWN0IFNjb3BlIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY29wZSk7CiAKIHB1YmxpYzoKLSAgICBTY29wZShj
b25zdCBWTSogdm0sIGJvb2wgaXNGdW5jdGlvbiwgYm9vbCBpc0dlbmVyYXRvciwgYm9vbCBzdHJp
Y3RNb2RlLCBib29sIGlzQXJyb3dGdW5jdGlvbiwgYm9vbCBpc0FzeW5jRnVuY3Rpb24pCisgICAg
U2NvcGUoY29uc3QgVk0qIHZtLCBib29sIGlzRnVuY3Rpb24sIGJvb2wgaXNHZW5lcmF0b3IsIGJv
b2wgc3RyaWN0TW9kZSwgYm9vbCBpc0Fycm93RnVuY3Rpb24pCiAgICAgICAgIDogbV92bSh2bSkK
ICAgICAgICAgLCBtX3NoYWRvd3NBcmd1bWVudHMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzRXZh
bChmYWxzZSkKQEAgLTE2OSw4ICsxNjgsNiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICAsIG1f
aXNHZW5lcmF0b3JCb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzQXJyb3dGdW5jdGlvbihp
c0Fycm93RnVuY3Rpb24pCiAgICAgICAgICwgbV9pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeShmYWxz
ZSkKLSAgICAgICAgLCBtX2lzQXN5bmNGdW5jdGlvbihpc0FzeW5jRnVuY3Rpb24pCi0gICAgICAg
ICwgbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeShmYWxzZSkKICAgICAgICAgLCBtX2lzTGV4aWNh
bFNjb3BlKGZhbHNlKQogICAgICAgICAsIG1faXNGdW5jdGlvbkJvdW5kYXJ5KGZhbHNlKQogICAg
ICAgICAsIG1faXNWYWxpZFN0cmljdE1vZGUodHJ1ZSkKQEAgLTI1OCwxNCArMjU1LDYgQEAgc3Ry
dWN0IFNjb3BlIHsKICAgICB2b2lkIHNldFNvdXJjZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUg
bW9kZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobW9kZSkgewotICAgICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAgICBzZXRJ
c0FzeW5jQXJyb3dGdW5jdGlvbkJvZHkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGU6Ci0gICAgICAgICAg
ICBzZXRJc0FzeW5jRnVuY3Rpb25Cb2R5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CiAgICAgICAgICAgICBz
ZXRJc0dlbmVyYXRvcigpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yODUsMTUgKzI3NCw2IEBA
IHN0cnVjdCBTY29wZSB7CiAgICAgICAgICAgICBzZXRJc0Fycm93RnVuY3Rpb24oKTsKICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0
aW9uTW9kZToKLSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZToK
LSAgICAgICAgICAgIHNldElzQXN5bmNGdW5jdGlvbigpOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6Ci0g
ICAgICAgICAgICBzZXRJc0FzeW5jQXJyb3dGdW5jdGlvbigpOwotICAgICAgICAgICAgYnJlYWs7
Ci0KICAgICAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgogICAgICAgICAg
ICAgYnJlYWs7CiAKQEAgLTMwOCw4ICsyODgsNiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wg
aXNGdW5jdGlvbkJvdW5kYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bmN0aW9uQm91bmRhcnk7
IH0KICAgICBib29sIGlzR2VuZXJhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9pc0dlbmVyYXRvcjsg
fQogICAgIGJvb2wgaXNHZW5lcmF0b3JCb3VuZGFyeSgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5l
cmF0b3JCb3VuZGFyeTsgfQotICAgIGJvb2wgaXNBc3luY0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9pc0FzeW5jRnVuY3Rpb247IH0KLSAgICBib29sIGlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5
KCkgY29uc3QgeyByZXR1cm4gbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFyeTsgfQogCiAgICAgYm9v
bCBoYXNBcmd1bWVudHMoKSBjb25zdCB7IHJldHVybiBtX2hhc0FyZ3VtZW50czsgfQogCkBAIC0z
MzksMTEgKzMxNyw2IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIHJldHVybiAqbV9tb2R1bGVT
Y29wZURhdGE7CiAgICAgfQogCi0gICAgYm9vbCBpc01vZHVsZSgpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gISFtX21vZHVsZVNjb3BlRGF0YTsKLSAgICB9Ci0KICAgICB2b2lkIGNvbXB1
dGVMZXhpY2FsbHlDYXB0dXJlZFZhcmlhYmxlc0FuZFB1cmdlQ2FuZGlkYXRlcygpCiAgICAgewog
ICAgICAgICAvLyBCZWNhdXNlIHZhcmlhYmxlcyBtYXkgYmUgZGVmaW5lZCBhdCBhbnkgdGltZSBp
biB0aGUgcmFuZ2Ugb2YgYSBsZXhpY2FsIHNjb3BlLCB3ZSBtdXN0CkBAIC03MjYsOCArNjk5LDYg
QEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgbV9pc0dlbmVyYXRvckJvdW5kYXJ5ID0gZmFsc2U7
CiAgICAgICAgIG1faXNBcnJvd0Z1bmN0aW9uQm91bmRhcnkgPSBmYWxzZTsKICAgICAgICAgbV9p
c0Fycm93RnVuY3Rpb24gPSBmYWxzZTsKLSAgICAgICAgbV9pc0FzeW5jRnVuY3Rpb25Cb3VuZGFy
eSA9IGZhbHNlOwotICAgICAgICBtX2lzQXN5bmNGdW5jdGlvbiA9IGZhbHNlOwogICAgIH0KIAog
ICAgIHZvaWQgc2V0SXNHZW5lcmF0b3JGdW5jdGlvbigpCkBAIC03NTEsMzQgKzcyMiw2IEBAIHN0
cnVjdCBTY29wZSB7CiAgICAgICAgIG1faXNBcnJvd0Z1bmN0aW9uID0gdHJ1ZTsKICAgICB9CiAK
LSAgICB2b2lkIHNldElzQXN5bmNBcnJvd0Z1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHNldElz
QXJyb3dGdW5jdGlvbigpOwotICAgICAgICBtX2lzQXN5bmNGdW5jdGlvbiA9IHRydWU7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRJc0FzeW5jRnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc2V0SXNG
dW5jdGlvbigpOwotICAgICAgICBtX2lzQXN5bmNGdW5jdGlvbiA9IHRydWU7Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXRJc0FzeW5jRnVuY3Rpb25Cb2R5KCkKLSAgICB7Ci0gICAgICAgIHNldElzRnVu
Y3Rpb24oKTsKLSAgICAgICAgbV9oYXNBcmd1bWVudHMgPSBmYWxzZTsKLSAgICAgICAgbV9pc0Fz
eW5jRnVuY3Rpb24gPSB0cnVlOwotICAgICAgICBtX2lzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5ID0g
dHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldElzQXN5bmNBcnJvd0Z1bmN0aW9uQm9keSgpCi0g
ICAgewotICAgICAgICBzZXRJc0Fycm93RnVuY3Rpb24oKTsKLSAgICAgICAgbV9oYXNBcmd1bWVu
dHMgPSBmYWxzZTsKLSAgICAgICAgbV9pc0FzeW5jRnVuY3Rpb24gPSB0cnVlOwotICAgICAgICBt
X2lzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5ID0gdHJ1ZTsKLSAgICB9Ci0KICAgICB2b2lkIHNldElz
TW9kdWxlKCkKICAgICB7CiAgICAgICAgIG1fbW9kdWxlU2NvcGVEYXRhID0gTW9kdWxlU2NvcGVE
YXRhOjpjcmVhdGUoKTsKQEAgLTc5OCw4ICs3NDEsNiBAQCBzdHJ1Y3QgU2NvcGUgewogICAgIGJv
b2wgbV9pc0dlbmVyYXRvckJvdW5kYXJ5OwogICAgIGJvb2wgbV9pc0Fycm93RnVuY3Rpb247CiAg
ICAgYm9vbCBtX2lzQXJyb3dGdW5jdGlvbkJvdW5kYXJ5OwotICAgIGJvb2wgbV9pc0FzeW5jRnVu
Y3Rpb247Ci0gICAgYm9vbCBtX2lzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5OwogICAgIGJvb2wgbV9p
c0xleGljYWxTY29wZTsKICAgICBib29sIG1faXNGdW5jdGlvbkJvdW5kYXJ5OwogICAgIGJvb2wg
bV9pc1ZhbGlkU3RyaWN0TW9kZTsKQEAgLTg3Myw3ICs4MTQsNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiBwdWJsaWM6Ci0gICAgUGFyc2VyKFZNKiwg
UnVudGltZUZsYWdzLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQ
YXJzZXJTdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUsIFN1cGVyQmluZGluZywgQ29uc3RydWN0
b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIERl
cml2ZWRDb250ZXh0VHlwZSA9IERlcml2ZWRDb250ZXh0VHlwZTo6Tm9uZSwgYm9vbCBpc0V2YWxD
b250ZXh0ID0gZmFsc2UsIEV2YWxDb250ZXh0VHlwZSA9IEV2YWxDb250ZXh0VHlwZTo6Tm9uZSk7
CisgICAgUGFyc2VyKFZNKiwgY29uc3QgU291cmNlQ29kZSYsIEpTUGFyc2VyQnVpbHRpbk1vZGUs
IEpTUGFyc2VyU3RyaWN0TW9kZSwgU291cmNlUGFyc2VNb2RlLCBTdXBlckJpbmRpbmcsIENvbnN0
cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25l
LCBEZXJpdmVkQ29udGV4dFR5cGUgPSBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUsIGJvb2wgaXNF
dmFsQ29udGV4dCA9IGZhbHNlLCBFdmFsQ29udGV4dFR5cGUgPSBFdmFsQ29udGV4dFR5cGU6Ok5v
bmUpOwogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgpA
QCAtOTYyLDkgKzkwMyw4IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgfTsKIAogICAgIGVudW0gRXhw
cmVzc2lvbkVycm9yQ2xhc3MgewotICAgICAgICBFcnJvckluZGljYXRlc05vdGhpbmcgPSAwLAot
ICAgICAgICBFcnJvckluZGljYXRlc1BhdHRlcm4sCi0gICAgICAgIEVycm9ySW5kaWNhdGVzQXN5
bmNBcnJvd0Z1bmN0aW9uCisgICAgICAgIEVycm9ySW5kaWNhdGVzTm90aGluZywKKyAgICAgICAg
RXJyb3JJbmRpY2F0ZXNQYXR0ZXJuCiAgICAgfTsKIAogICAgIHN0cnVjdCBFeHByZXNzaW9uRXJy
b3JDbGFzc2lmaWVyIHsKQEAgLTk4OCwxMSArOTI4LDYgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAg
ICAgICAgIG1fY2xhc3MgPSBjbGFzc2lmaWNhdGlvbjsKICAgICAgICAgfQogCi0gICAgICAgIHZv
aWQgZm9yY2VDbGFzc2lmeUV4cHJlc3Npb25FcnJvcihFeHByZXNzaW9uRXJyb3JDbGFzcyBjbGFz
c2lmaWNhdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgbV9jbGFzcyA9IGNsYXNzaWZpY2F0
aW9uOwotICAgICAgICB9Ci0KICAgICAgICAgdm9pZCByZWNsYXNzaWZ5RXhwcmVzc2lvbkVycm9y
KEV4cHJlc3Npb25FcnJvckNsYXNzIG9sZENsYXNzaWZpY2F0aW9uLCBFeHByZXNzaW9uRXJyb3JD
bGFzcyBjbGFzc2lmaWNhdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKG1fY2xhc3Mg
IT0gb2xkQ2xhc3NpZmljYXRpb24pCkBAIC0xMDAyLDEyICs5MzcsMTIgQEAgY2xhc3MgUGFyc2Vy
IHsKIAogICAgICAgICB2b2lkIHByb3BhZ2F0ZUV4cHJlc3Npb25FcnJvckNsYXNzKCkKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKG1fcHJldmlvdXMpCisgICAgICAgICAgICBpZiAobV9wcmV2
aW91cyAmJiBtX2NsYXNzICE9IEVycm9ySW5kaWNhdGVzTm90aGluZykKICAgICAgICAgICAgICAg
ICBtX3ByZXZpb3VzLT5tX2NsYXNzID0gbV9jbGFzczsKICAgICAgICAgfQogCiAgICAgICAgIGJv
b2wgaW5kaWNhdGVzUG9zc2libGVQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9jbGFzcyA9PSBF
cnJvckluZGljYXRlc1BhdHRlcm47IH0KLSAgICAgICAgYm9vbCBpbmRpY2F0ZXNQb3NzaWJsZUFz
eW5jQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3MgPT0gRXJyb3JJbmRpY2F0
ZXNBc3luY0Fycm93RnVuY3Rpb247IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIEV4cHJlc3Np
b25FcnJvckNsYXNzIG1fY2xhc3M7CiAgICAgICAgIEV4cHJlc3Npb25FcnJvckNsYXNzaWZpZXIq
IG1fcHJldmlvdXM7CkBAIC0xMDIwLDEyICs5NTUsNiBAQCBjbGFzcyBQYXJzZXIgewogICAgICAg
ICAgICAgbV9leHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyLT5jbGFzc2lmeUV4cHJlc3Npb25FcnJv
cihjbGFzc2lmaWNhdGlvbik7CiAgICAgfQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIGZvcmNl
Q2xhc3NpZnlFeHByZXNzaW9uRXJyb3IoRXhwcmVzc2lvbkVycm9yQ2xhc3MgY2xhc3NpZmljYXRp
b24pCi0gICAgewotICAgICAgICBpZiAobV9leHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyKQotICAg
ICAgICAgICAgbV9leHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyLT5mb3JjZUNsYXNzaWZ5RXhwcmVz
c2lvbkVycm9yKGNsYXNzaWZpY2F0aW9uKTsKLSAgICB9Ci0KICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcmVjbGFzc2lmeUV4cHJlc3Npb25FcnJvcihFeHByZXNzaW9uRXJyb3JDbGFzcyBvbGRDbGFz
c2lmaWNhdGlvbiwgRXhwcmVzc2lvbkVycm9yQ2xhc3MgY2xhc3NpZmljYXRpb24pCiAgICAgewog
ICAgICAgICBpZiAobV9leHByZXNzaW9uRXJyb3JDbGFzc2lmaWVyKQpAQCAtMTA0NywxOSArOTc2
LDYgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgcmV0dXJuIERlc3RydWN0dXJpbmdLaW5kOjpE
ZXN0cnVjdHVyZVRvVmFyaWFibGVzOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgY29uc3Qg
Y2hhciogZGVjbGFyYXRpb25UeXBlVG9WYXJpYWJsZUtpbmQoRGVjbGFyYXRpb25UeXBlIHR5cGUp
Ci0gICAgewotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBEZWNsYXJhdGlv
blR5cGU6OlZhckRlY2xhcmF0aW9uOgotICAgICAgICAgICAgcmV0dXJuICJ2YXJpYWJsZSBuYW1l
IjsKLSAgICAgICAgY2FzZSBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xhcmF0aW9uOgotICAgICAg
ICBjYXNlIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbjoKLSAgICAgICAgICAgIHJl
dHVybiAibGV4aWNhbCB2YXJpYWJsZSBuYW1lIjsKLSAgICAgICAgfQotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gImludmFsaWQiOwotICAgIH0K
LQogICAgIEFMV0FZU19JTkxJTkUgQXNzaWdubWVudENvbnRleHQgYXNzaWdubWVudENvbnRleHRG
cm9tRGVjbGFyYXRpb25UeXBlKERlY2xhcmF0aW9uVHlwZSB0eXBlKQogICAgIHsKICAgICAgICAg
c3dpdGNoICh0eXBlKSB7CkBAIC0xMDcyLDEyICs5ODgsNiBAQCBjbGFzcyBQYXJzZXIgewogCiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzRXZhbE9yQXJndW1lbnRzKGNvbnN0IElkZW50aWZpZXIq
IGlkZW50KSB7IHJldHVybiBpc0V2YWxPckFyZ3VtZW50c0lkZW50aWZpZXIobV92bSwgaWRlbnQp
OyB9CiAKLSAgICBTY29wZVJlZiB1cHBlclNjb3BlKHVuc2lnbmVkIG4pCi0gICAgewotICAgICAg
ICBBU1NFUlQobV9zY29wZVN0YWNrLnNpemUoKSA+PSAoMSArIG4pKTsKLSAgICAgICAgcmV0dXJu
IFNjb3BlUmVmKCZtX3Njb3BlU3RhY2ssIG1fc2NvcGVTdGFjay5zaXplKCkgLSAxIC0gbik7Ci0g
ICAgfQotCiAgICAgU2NvcGVSZWYgY3VycmVudFNjb3BlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBTY29wZVJlZigmbV9zY29wZVN0YWNrLCBtX3Njb3BlU3RhY2suc2l6ZSgpIC0gMSk7CkBAIC0x
MTIyLDcgKzEwMzIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHsKICAgICAgICAgdW5zaWduZWQg
aSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwogICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVT
dGFjay5zaXplKCkgJiYgbV9zY29wZVN0YWNrLnNpemUoKSk7Ci0gICAgICAgIHdoaWxlIChpICYm
ICghbV9zY29wZVN0YWNrW2ldLmlzRnVuY3Rpb25Cb3VuZGFyeSgpIHx8IG1fc2NvcGVTdGFja1tp
XS5pc0dlbmVyYXRvckJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzQXJyb3dGdW5jdGlv
bkJvdW5kYXJ5KCkgfHwgbV9zY29wZVN0YWNrW2ldLmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkp
KQorICAgICAgICB3aGlsZSAoaSAmJiAoIW1fc2NvcGVTdGFja1tpXS5pc0Z1bmN0aW9uQm91bmRh
cnkoKSB8fCBtX3Njb3BlU3RhY2tbaV0uaXNHZW5lcmF0b3JCb3VuZGFyeSgpIHx8IG1fc2NvcGVT
dGFja1tpXS5pc0Fycm93RnVuY3Rpb25Cb3VuZGFyeSgpKSkKICAgICAgICAgICAgIGktLTsKICAg
ICAgICAgLy8gV2hlbiByZWFjaGluZyB0aGUgdG9wIGxldmVsIHNjb3BlIChpdCBjYW4gYmUgbm9u
IG9yZGluYXJ5IGZ1bmN0aW9uIHNjb3BlKSwgd2UgcmV0dXJuIGl0LgogICAgICAgICByZXR1cm4g
U2NvcGVSZWYoJm1fc2NvcGVTdGFjaywgaSk7CkBAIC0xMTM0LDE1ICsxMDQ0LDEzIEBAIGNsYXNz
IFBhcnNlciB7CiAgICAgICAgIGJvb2wgaXNTdHJpY3QgPSBmYWxzZTsKICAgICAgICAgYm9vbCBp
c0dlbmVyYXRvciA9IGZhbHNlOwogICAgICAgICBib29sIGlzQXJyb3dGdW5jdGlvbiA9IGZhbHNl
OwotICAgICAgICBib29sIGlzQXN5bmNGdW5jdGlvbiA9IGZhbHNlOwogICAgICAgICBpZiAoIW1f
c2NvcGVTdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlzU3RyaWN0ID0gbV9zY29wZVN0
YWNrLmxhc3QoKS5zdHJpY3RNb2RlKCk7CiAgICAgICAgICAgICBpc0Z1bmN0aW9uID0gbV9zY29w
ZVN0YWNrLmxhc3QoKS5pc0Z1bmN0aW9uKCk7CiAgICAgICAgICAgICBpc0dlbmVyYXRvciA9IG1f
c2NvcGVTdGFjay5sYXN0KCkuaXNHZW5lcmF0b3IoKTsKICAgICAgICAgICAgIGlzQXJyb3dGdW5j
dGlvbiA9IG1fc2NvcGVTdGFjay5sYXN0KCkuaXNBcnJvd0Z1bmN0aW9uKCk7Ci0gICAgICAgICAg
ICBpc0FzeW5jRnVuY3Rpb24gPSBtX3Njb3BlU3RhY2subGFzdCgpLmlzQXN5bmNGdW5jdGlvbigp
OwogICAgICAgICB9Ci0gICAgICAgIG1fc2NvcGVTdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQobV92
bSwgaXNGdW5jdGlvbiwgaXNHZW5lcmF0b3IsIGlzU3RyaWN0LCBpc0Fycm93RnVuY3Rpb24sIGlz
QXN5bmNGdW5jdGlvbik7CisgICAgICAgIG1fc2NvcGVTdGFjay5jb25zdHJ1Y3RBbmRBcHBlbmQo
bV92bSwgaXNGdW5jdGlvbiwgaXNHZW5lcmF0b3IsIGlzU3RyaWN0LCBpc0Fycm93RnVuY3Rpb24p
OwogICAgICAgICByZXR1cm4gY3VycmVudFNjb3BlKCk7CiAgICAgfQogCkBAIC0xMTU0LDcgKzEw
NjIsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAKICAgICAgICAgaWYgKG1fc2NvcGVTdGFj
ay5sYXN0KCkuaXNBcnJvd0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICBtX3Njb3BlU3RhY2subGFz
dCgpLnNldElubmVyQXJyb3dGdW5jdGlvblVzZXNFdmFsQW5kVXNlQXJndW1lbnRzSWZOZWVkZWQo
KTsKLQorICAgICAgICAKICAgICAgICAgaWYgKCEobV9zY29wZVN0YWNrLmxhc3QoKS5pc0Z1bmN0
aW9uQm91bmRhcnkoKSAmJiAhbV9zY29wZVN0YWNrLmxhc3QoKS5pc0Fycm93RnVuY3Rpb25Cb3Vu
ZGFyeSgpKSkKICAgICAgICAgICAgIG1fc2NvcGVTdGFja1ttX3Njb3BlU3RhY2suc2l6ZSgpIC0g
Ml0ubWVyZ2VJbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcyhtX3Njb3BlU3RhY2subGFzdCgpLmlu
bmVyQXJyb3dGdW5jdGlvbkZlYXR1cmVzKCkpOwogCkBAIC0xNDUxLDI1ICsxMzU5LDIxIEBAIGNs
YXNzIFBhcnNlciB7CiAgICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRp
Y3MtZWFybHktZXJyb3JzCiAgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoU3BlY0lkZW50aWZp
ZXIoYm9vbCBpbkdlbmVyYXRvcikKICAgICB7Ci0gICAgICAgIHJldHVybiBtYXRjaChJREVOVCkg
fHwgbWF0Y2goQVdBSVQpIHx8IGlzTEVUTWFza2VkQXNJREVOVCgpIHx8IGlzWUlFTERNYXNrZWRB
c0lERU5UKGluR2VuZXJhdG9yKTsKKyAgICAgICAgcmV0dXJuIG1hdGNoKElERU5UKSB8fCBpc0xF
VE1hc2tlZEFzSURFTlQoKSB8fCBpc1lJRUxETWFza2VkQXNJREVOVChpbkdlbmVyYXRvcik7CiAg
ICAgfQogCi0gICAgLy8gaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4w
LyNzZWMtZ2VuZXJhdG9yLWZ1bmN0aW9uLWRlZmluaXRpb25zLXN0YXRpYy1zZW1hbnRpY3MtZWFy
bHktZXJyb3JzCiAgICAgQUxXQVlTX0lOTElORSBib29sIG1hdGNoU3BlY0lkZW50aWZpZXIoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1hdGNoKElERU5UKSB8fCBtYXRjaChBV0FJVCkgfHwgaXNM
RVRNYXNrZWRBc0lERU5UKCkgfHwgaXNZSUVMRE1hc2tlZEFzSURFTlQoY3VycmVudFNjb3BlKCkt
PmlzR2VuZXJhdG9yKCkpOworICAgICAgICByZXR1cm4gbWF0Y2hTcGVjSWRlbnRpZmllcihjdXJy
ZW50U2NvcGUoKS0+aXNHZW5lcmF0b3IoKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTb3VyY2VFbGVtZW50cyhUcmVl
QnVpbGRlciYsIFNvdXJjZUVsZW1lbnRzTW9kZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VHZW5lcmF0b3JGdW5jdGlvblNvdXJjZUVs
ZW1lbnRzKFRyZWVCdWlsZGVyJiwgU291cmNlRWxlbWVudHNNb2RlKTsKLSAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZUFzeW5jRnVuY3Rpb25T
b3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBpc0Fycm93
RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbiwgU291cmNlRWxlbWVudHNNb2RlKTsKICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRl
bShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBk
aXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlm
aWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOwog
ICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVkLCBOb3RFeHBvcnRlZCB9OwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUNsYXNzRGVj
bGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlwZTo6Tm90RXhwb3J0
ZWQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJz
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhwb3J0VHlw
ZTo6Tm90RXhwb3J0ZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb25TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBi
b29sIGlzQXN5bmMsIGJvb2wgcGFyZW50QWxsb3dzRnVuY3Rpb25EZWNsYXJhdGlvbkFzU3RhdGVt
ZW50KTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VBc3luY0Z1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0gRXhw
b3J0VHlwZTo6Tm90RXhwb3J0ZWQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBEZWNs
YXJhdGlvblR5cGUsIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCk7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRG9XaGlsZVN0
YXRlbWVudChUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBwYXJzZVdoaWxlU3RhdGVtZW50KFRyZWVCdWlsZGVyJik7CkBAIC0xNDk2
LDI1ICsxNDAwLDIzIEBAIGNsYXNzIFBhcnNlciB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlQ29uZGl0aW9uYWxFeHBy
ZXNzaW9uKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBB
TFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlQmluYXJ5RXhwcmVzc2lvbihUcmVlQnVp
bGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBU
cmVlRXhwcmVzc2lvbiBwYXJzZVVuYXJ5RXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwotICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBh
cnNlQXdhaXRFeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZU1lbWJlckV4cHJlc3Npb24oVHJlZUJ1aWxk
ZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJl
ZUV4cHJlc3Npb24gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwogICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBw
YXJzZUFycmF5TGl0ZXJhbChUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZU9iamVjdExpdGVyYWwo
VHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lO
TElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoVHJlZUJ1aWxkZXIm
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4
cHJlc3Npb24gcGFyc2VGdW5jdGlvbkV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gcGFy
c2VBc3luY0Z1bmN0aW9uRXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlQXJndW1lbnRzIHBhcnNlQXJndW1l
bnRzKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdB
WVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlQXJndW1lbnQoVHJlZUJ1aWxkZXImLCBBcmd1
bWVudFR5cGUmKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0
eSBwYXJzZVByb3BlcnR5KFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QpOwotICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VQcm9wZXJ0eU1ldGhvZChU
cmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSWRlbnRpZmllciogbWV0aG9kTmFtZSwgYm9vbCBp
c0dlbmVyYXRvciwgYm9vbCBpc0FzeW5jTWV0aG9kKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlUHJvcGVydHlNZXRob2QoVHJlZUJ1aWxkZXIm
IGNvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqIG1ldGhvZE5hbWUsIGJvb2wgaXNHZW5lcmF0b3Ip
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlR2V0
dGVyU2V0dGVyKFRyZWVCdWlsZGVyJiwgYm9vbCBzdHJpY3QsIFByb3BlcnR5Tm9kZTo6VHlwZSwg
dW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgQ29uc3RydWN0b3JLaW5kLCBib29s
IGlzQ2xhc3NQcm9wZXJ0eSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdB
WVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXIm
LCBTeW50YXhDaGVja2VyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFy
dCwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIEZ1bmN0aW9uQm9keVR5cGUsIHVuc2ln
bmVkLCBTb3VyY2VQYXJzZU1vZGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
QUxXQVlTX0lOTElORSBib29sIHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFRy
ZWVGb3JtYWxQYXJhbWV0ZXJMaXN0LCB1bnNpZ25lZCYpOwogICAgIGVudW0gVmFyRGVjbGFyYXRp
b25MaXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJEZWNsYXJhdGlvbkNvbnRleHQgfTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlVmFy
aWFibGVEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJl
ZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJ
bml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBp
bml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250
ZXh0LCBEZWNsYXJhdGlvblR5cGUsIEV4cG9ydFR5cGUsIGJvb2wmIGZvckxvb3BDb25zdERvZXNO
b3RIYXZlSW5pdGlhbGl6ZXIpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVNvdXJjZUVsZW1lbnRzIHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291
cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oVHJlZUJ1aWxk
ZXImLCBib29sIGlzQXN5bmMpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gcGFyc2VBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihUcmVlQnVpbGRlciYpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVj
dHVyaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlc3RydWN0
dXJpbmdLaW5kLCBFeHBvcnRUeXBlLCBjb25zdCBJZGVudGlmaWVyJiwgSlNUb2tlbiwgQXNzaWdu
bWVudENvbnRleHQsIGNvbnN0IElkZW50aWZpZXIqKiBkdXBsaWNhdGVJZGVudGlmaWVyKTsKICAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4gY3JlYXRlQXNzaWdubWVudEVsZW1lbnQoVHJlZUJ1aWxkZXImLCBUcmVlRXhw
cmVzc2lvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mKTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1
Y3R1cmluZ1BhdHRlcm4gcGFyc2VCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChUcmVlQnVpbGRl
ciYgY29udGV4dCwgRGVzdHJ1Y3R1cmluZ0tpbmQsIEV4cG9ydFR5cGUsIGNvbnN0IElkZW50aWZp
ZXIqKiBkdXBsaWNhdGVJZGVudGlmaWVyLCBib29sKiBoYXNEZXN0cnVjdHVyaW5nUGF0dGVybiwg
QXNzaWdubWVudENvbnRleHQgYmluZGluZ0NvbnRleHQsIGludCBkZXB0aCk7CkBAIC0xNTcyLDIx
ICsxNDc0LDYgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgcmV0dXJuICFtX2Vycm9yTWVzc2Fn
ZS5pc051bGwoKTsKICAgICB9CiAKLSAgICBib29sIGlzRGlzYWxsb3dlZElkZW50aWZpZXJBd2Fp
dChjb25zdCBKU1Rva2VuJiB0b2tlbikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0b2tlbi5tX3R5
cGUgPT0gQVdBSVQgJiYgKCFtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQgfHwgY3VycmVudFNjb3Bl
KCktPmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkgfHwgY3VycmVudFNjb3BlKCktPmlzTW9kdWxl
KCkpOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIGRpc2FsbG93ZWRJZGVudGlmaWVyQXdhaXRS
ZWFzb24oKQotICAgIHsKLSAgICAgICAgaWYgKCFtX3BhcnNlclN0YXRlLmFsbG93QXdhaXQgfHwg
Y3VycmVudFNjb3BlKCktPmlzQXN5bmNGdW5jdGlvbkJvdW5kYXJ5KCkpCi0gICAgICAgICAgICBy
ZXR1cm4gImluIGFuIGFzeW5jIGZ1bmN0aW9uIjsKLSAgICAgICAgaWYgKGN1cnJlbnRTY29wZSgp
LT5pc01vZHVsZSgpKQotICAgICAgICAgICAgcmV0dXJuICJpbiBhIG1vZHVsZSI7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KLQogICAgIGVudW0gY2xhc3MgRnVuY3Rpb25QYXJzZVBoYXNlIHsgUGFyYW1ldGVycywg
Qm9keSB9OwogICAgIHN0cnVjdCBQYXJzZXJTdGF0ZSB7CiAgICAgICAgIGludCBhc3NpZ25tZW50
Q291bnQgeyAwIH07CkBAIC0xNTk1LDcgKzE0ODIsNiBAQCBjbGFzcyBQYXJzZXIgewogICAgICAg
ICBGdW5jdGlvblBhcnNlUGhhc2UgZnVuY3Rpb25QYXJzZVBoYXNlIHsgRnVuY3Rpb25QYXJzZVBo
YXNlOjpCb2R5IH07CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGxhc3RJZGVudGlmaWVyIHsg
bnVsbHB0ciB9OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsYXN0RnVuY3Rpb25OYW1lIHsg
bnVsbHB0ciB9OwotICAgICAgICBib29sIGFsbG93QXdhaXQgeyB0cnVlIH07CiAgICAgfTsKIAog
ICAgIC8vIElmIHlvdSdyZSB1c2luZyB0aGlzIGRpcmVjdGx5LCB5b3UgcHJvYmFibHkgc2hvdWxk
IGJlIHVzaW5nCkBAIC0xNzA2LDcgKzE1OTIsNiBAQCBjbGFzcyBQYXJzZXIgewogICAgIGJvb2wg
bV9oYXNTdGFja092ZXJmbG93OwogICAgIFN0cmluZyBtX2Vycm9yTWVzc2FnZTsKICAgICBKU1Rv
a2VuIG1fdG9rZW47Ci0gICAgUnVudGltZUZsYWdzIG1fcnVudGltZUZsYWdzOwogICAgIGJvb2wg
bV9hbGxvd3NJbjsKICAgICBKU1RleHRQb3NpdGlvbiBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uOwog
ICAgIGJvb2wgbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkOwpAQCAtMTgzOSw3ICsxNzI0LDcgQEAg
c3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJz
ZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkKIAogdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+CiBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCi0gICAgVk0qIHZtLCBSdW50aW1lRmxh
Z3MgcnVudGltZUZsYWdzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCisgICAgVk0qIHZtLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQ
YXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3Ry
aWN0TW9kZSwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSwgU3VwZXJCaW5kaW5nIHN1cGVyQmlu
ZGluZywKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKQEAgLTE4NDcsNyArMTczMiw3IEBAIHN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKIHsKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0s
IHJ1bnRpbWVGbGFncywgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgcGFyc2VNb2Rl
LCBzdXBlckJpbmRpbmcsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIGRlcml2ZWRDb250ZXh0VHlw
ZSwgaXNFdmFsTm9kZTxQYXJzZWROb2RlPigpLCBldmFsQ29udGV4dFR5cGUpOworICAgICAgICBQ
YXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsIHBhcnNlTW9kZSwgc3VwZXJCaW5kaW5nLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBk
ZXJpdmVkQ29udGV4dFR5cGUsIGlzRXZhbE5vZGU8UGFyc2VkTm9kZT4oKSwgZXZhbENvbnRleHRU
eXBlKTsKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNl
ci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYg
KHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVM
YXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CkBAIC0xODU4
LDcgKzE3NDMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENv
bnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJs
ZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0
cmluZyIpOwotICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgcnVudGltZUZsYWdz
LCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIHN1cGVyQmluZGlu
ZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgZGVyaXZlZENvbnRleHRUeXBlLCBpc0V2YWxOb2Rl
PFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSk7CisgICAgUGFyc2VyPExleGVyPFVDaGFy
Pj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUs
IHN1cGVyQmluZGluZywgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgZGVyaXZlZENvbnRleHRUeXBl
LCBpc0V2YWxOb2RlPFBhcnNlZE5vZGU+KCksIGV2YWxDb250ZXh0VHlwZSk7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihl
cnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSkKICAgICAgICAgKnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25C
ZWZvcmVMYXN0TmV3bGluZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCmluZGV4IDdhYjI0MWQwMWNmYjNiYWRjMzI1ZTllZTdkOGE1YjlhOWM1YWRjNWUuLmQy
NTcxZTU4Mjg4NzIwYzc2M2JmZmU3NmMzMjk0MzM1ZTFhMDIyNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNpZm5kZWYg
UGFyc2VyTW9kZXNfaAogI2RlZmluZSBQYXJzZXJNb2Rlc19oCiAKLSNpbmNsdWRlICJDb25zdHJ1
Y3RBYmlsaXR5LmgiCiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogCiBuYW1lc3BhY2UgSlNDIHsK
QEAgLTQzLDEyMCArNDIsODAgQEAgZW51bSBEZWJ1Z2dlck1vZGUgeyBEZWJ1Z2dlck9mZiwgRGVi
dWdnZXJPbiB9OwogCiBlbnVtIGNsYXNzIEZ1bmN0aW9uTW9kZSB7IEZ1bmN0aW9uRXhwcmVzc2lv
biwgRnVuY3Rpb25EZWNsYXJhdGlvbiwgTWV0aG9kRGVmaW5pdGlvbiB9OwogCi0vLyBXaGVuIHlv
dSBhZGQgYSBuZXcgc291cmNlIHBhcnNlIG1vZGUsIGRvIG5vdCBmb3JnZXQgdG8gZW5zdXJlIHRo
YXQgdGhlIHByZWRpY2F0ZXMgZGVmaW5lZCBpbiB0aGlzCi0vLyBmaWxlIHdvcmsgd2l0aCB0aGUg
bmV3bHkgYWRkZWQgbW9kZS4KLWVudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIDogdWludDE2X3Qg
ewotICAgIE5vcm1hbEZ1bmN0aW9uTW9kZSAgICAgICAgICAgID0gMGIwMDAwMDAwMDAwMDAwMDAx
LAotICAgIEdlbmVyYXRvckJvZHlNb2RlICAgICAgICAgICAgID0gMGIwMDAwMDAwMDAwMDAwMDEw
LAotICAgIEdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUgID0gMGIwMDAwMDAwMDAwMDAwMTAw
LAotICAgIEdldHRlck1vZGUgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAwMDAwMDAxMDAw
LAotICAgIFNldHRlck1vZGUgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAwMDAwMDEwMDAw
LAotICAgIE1ldGhvZE1vZGUgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAwMDAwMTAwMDAw
LAotICAgIEFycm93RnVuY3Rpb25Nb2RlICAgICAgICAgICAgID0gMGIwMDAwMDAwMDAxMDAwMDAw
LAotICAgIEFzeW5jRnVuY3Rpb25Cb2R5TW9kZSAgICAgICAgID0gMGIwMDAwMDAwMDEwMDAwMDAw
LAotICAgIEFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlICAgID0gMGIwMDAwMDAwMTAwMDAwMDAw
LAotICAgIEFzeW5jRnVuY3Rpb25Nb2RlICAgICAgICAgICAgID0gMGIwMDAwMDAxMDAwMDAwMDAw
LAotICAgIEFzeW5jTWV0aG9kTW9kZSAgICAgICAgICAgICAgID0gMGIwMDAwMDEwMDAwMDAwMDAw
LAotICAgIEFzeW5jQXJyb3dGdW5jdGlvbk1vZGUgICAgICAgID0gMGIwMDAwMTAwMDAwMDAwMDAw
LAotICAgIFByb2dyYW1Nb2RlICAgICAgICAgICAgICAgICAgID0gMGIwMDAxMDAwMDAwMDAwMDAw
LAotICAgIE1vZHVsZUFuYWx5emVNb2RlICAgICAgICAgICAgID0gMGIwMDEwMDAwMDAwMDAwMDAw
LAotICAgIE1vZHVsZUV2YWx1YXRlTW9kZSAgICAgICAgICAgID0gMGIwMTAwMDAwMDAwMDAwMDAw
LAorZW51bSBjbGFzcyBTb3VyY2VQYXJzZU1vZGUgOiB1aW50OF90IHsKKyAgICBOb3JtYWxGdW5j
dGlvbk1vZGUsCisgICAgR2VuZXJhdG9yQm9keU1vZGUsCisgICAgR2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZSwKKyAgICBHZXR0ZXJNb2RlLAorICAgIFNldHRlck1vZGUsCisgICAgTWV0aG9k
TW9kZSwKKyAgICBBcnJvd0Z1bmN0aW9uTW9kZSwKKyAgICBQcm9ncmFtTW9kZSwKKyAgICBNb2R1
bGVBbmFseXplTW9kZSwKKyAgICBNb2R1bGVFdmFsdWF0ZU1vZGUKIH07CiAKLWNsYXNzIFNvdXJj
ZVBhcnNlTW9kZVNldCB7Ci1wdWJsaWM6Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gTW9kZXM+
Ci0gICAgU291cmNlUGFyc2VNb2RlU2V0KE1vZGVzLi4uIGFyZ3MpCi0gICAgICAgIDogbV9tYXNr
KG1lcmdlU291cmNlUGFyc2VNb2RlcyhhcmdzLi4uKSkKLSAgICB7Ci0gICAgfQotCi0gICAgQUxX
QVlTX0lOTElORSBib29sIGNvbnRhaW5zKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb2RlKSAmIG1fbWFzazsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdW5zaWduZWQgbWVyZ2VTb3Vy
Y2VQYXJzZU1vZGVzKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb2RlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZS4uLiBSZXN0PgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHVuc2lnbmVkIG1lcmdlU291
cmNlUGFyc2VNb2RlcyhTb3VyY2VQYXJzZU1vZGUgbW9kZSwgUmVzdC4uLiByZXN0KQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb2RlKSB8IG1lcmdlU291cmNl
UGFyc2VNb2RlcyhyZXN0Li4uKTsKLSAgICB9Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBtX21hc2s7
Ci19OwotCi1BTFdBWVNfSU5MSU5FIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKQotewotICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCi0gICAg
ICAgIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlLAotICAgICAgICBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6Okdl
bmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6R2V0
dGVyTW9kZSwKLSAgICAgICAgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLAotICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJv
ZHlNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlLAotICAg
ICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jTWV0aG9kTW9kZSwKLSAgICAgICAgU291cmNlUGFy
c2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOwotfQotCi1B
TFdBWVNfSU5MSU5FIGJvb2wgaXNBc3luY0Z1bmN0aW9uUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUpCi17Ci0gICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldCgKLSAgICAgICAg
U291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uQm9keU1vZGUsCi0gICAgICAgIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNNZXRob2RNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlv
bk1vZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1v
ZGUpLmNvbnRhaW5zKHBhcnNlTW9kZSk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgYm9vbCBpc0FzeW5j
QXJyb3dGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoraW5saW5l
IGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewot
ICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6
QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZSwKLSAgICAgICAgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fy
cm93RnVuY3Rpb25Cb2R5TW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKLX0KLQotQUxXQVlTX0lO
TElORSBib29sIGlzQXN5bmNGdW5jdGlvbldyYXBwZXJQYXJzZU1vZGUoU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSkKLXsKLSAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAotICAgICAgICBT
b3VyY2VQYXJzZU1vZGU6OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGUsCi0gICAgICAgIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNGdW5jdGlvbk1vZGUsCi0gICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6QXN5
bmNNZXRob2RNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOwotfQotCi1BTFdBWVNfSU5MSU5FIGJv
b2wgaXNBc3luY0Z1bmN0aW9uQm9keVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQotewotICAgIHJldHVybiBTb3VyY2VQYXJzZU1vZGVTZXQoCi0gICAgICAgIFNvdXJjZVBhcnNl
TW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jQXJyb3dGdW5jdGlvbkJvZHlNb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOwotfQotCi1BTFdB
WVNfSU5MSU5FIGJvb2wgaXNNb2R1bGVQYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKLXsKLSAgICByZXR1cm4gU291cmNlUGFyc2VNb2RlU2V0KAotICAgICAgICBTb3VyY2VQYXJz
ZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlLAotICAgICAgICBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVs
ZUV2YWx1YXRlTW9kZSkuY29udGFpbnMocGFyc2VNb2RlKTsKKyAgICBzd2l0Y2ggKHBhcnNlTW9k
ZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CisgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVyYXRvckJvZHlNb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJN
b2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpN
b2R1bGVFdmFsdWF0ZU1vZGU6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgYm9vbCBpc1Byb2dyYW1QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9k
ZSkKK2lubGluZSBib29sIGlzTW9kdWxlUGFyc2VNb2RlKFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1v
ZGUpCiB7Ci0gICAgcmV0dXJuIFNvdXJjZVBhcnNlTW9kZVNldChTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlKS5jb250YWlucyhwYXJzZU1vZGUpOworICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlOgorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU6CisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yQm9keU1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdlbmVyYXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OkdldHRlck1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGU6CisgICAgY2FzZSBTb3Vy
Y2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotQUxXQVlTX0lO
TElORSBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxpdHlGb3JQYXJzZU1vZGUoU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKK2lubGluZSBib29sIGlzUHJvZ3JhbVBhcnNlTW9kZShTb3Vy
Y2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFy
c2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGUpCi0gICAgICAgIHJldHVybiBDb25zdHJ1Y3RBYmls
aXR5OjpDYW5Db25zdHJ1Y3Q7Ci0gICAgcmV0dXJuIENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdDsKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VN
b2RlOjpQcm9ncmFtTW9kZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2Rl
OjpHZW5lcmF0b3JCb2R5TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9y
V3JhcHBlckZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9k
ZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU6CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGlubGluZSBib29sIGZ1bmN0aW9uTmFtZUlzSW5TY29w
ZShjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBGdW5jdGlvbk1vZGUgZnVuY3Rpb25Nb2RlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggMjQ4ZDBlZTc1
NTU3OGQ3ZmVhYjdiZWM5ZWI0ZjM4MWUyOTg0NGEwMC4uYWZmNGEzMDEzM2M3NTFlNjFmYWYxMjNl
ZDU2ODBlOTBkYTk2NDcxNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCkBAIC04Miw3ICs4Miw2IEBAIGVudW0gSlNUb2tlblR5cGUgewogICAgIENMQVNT
VE9LRU4sCiAgICAgRVhURU5EUywKICAgICBTVVBFUiwKLSAgICBBV0FJVCwKICAgICBPUEVOQlJB
Q0UgPSAwLAogICAgIENMT1NFQlJBQ0UsCiAgICAgT1BFTlBBUkVOLApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VDb2RlS2V5LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXkuaAppbmRleCBiMzJmMjQ1MDQzZTY3ZDBlYTBi
MzRmOTFiNmQ2YjVhNjZlYjU3N2M0Li5lZThhNTBmMmQ4ZjA0MmNhZTk1YTI4NGQ5N2FlYTJkYzg0
M2FlMjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNv
ZGVLZXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZUNvZGVLZXku
aApAQCAtMjgsNyArMjgsNiBAQAogI2RlZmluZSBTb3VyY2VDb2RlS2V5X2gKIAogI2luY2x1ZGUg
IlBhcnNlck1vZGVzLmgiCi0jaW5jbHVkZSAiUnVudGltZUZsYWdzLmgiCiAjaW5jbHVkZSAiU291
cmNlQ29kZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAKQEAgLTY3LDEyICs2Niwx
MSBAQCBjbGFzcyBTb3VyY2VDb2RlS2V5IHsKICAgICB7CiAgICAgfQogCi0gICAgU291cmNlQ29k
ZUtleShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1
bnRpbWVGbGFncywgY29uc3QgU3RyaW5nJiBuYW1lLCBTb3VyY2VDb2RlVHlwZSBjb2RlVHlwZSwg
SlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUsIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUsIEV2YWxDb250ZXh0
VHlwZSBldmFsQ29udGV4dFR5cGUsIGJvb2wgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCkKKyAgICBT
b3VyY2VDb2RlS2V5KGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIGNvbnN0IFN0cmluZyYg
bmFtZSwgU291cmNlQ29kZVR5cGUgY29kZVR5cGUsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRp
bk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBEZXJpdmVkQ29udGV4dFR5cGUg
ZGVyaXZlZENvbnRleHRUeXBlLCBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlLCBib29s
IGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpCiAgICAgICAgIDogbV9zb3VyY2VDb2RlKHNvdXJjZUNv
ZGUpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9mbGFncyhjb2RlVHlwZSwg
YnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGRlcml2ZWRDb250ZXh0VHlwZSwgZXZhbENvbnRleHRU
eXBlLCBpc0Fycm93RnVuY3Rpb25Db250ZXh0KQogICAgICAgICAsIG1faGFzaChzb3VyY2VDb2Rl
Lmhhc2goKSkKLSAgICAgICAgLCBtX3J1bnRpbWVGbGFncyhydW50aW1lRmxhZ3MpCiAgICAgewog
ICAgIH0KIApAQCAtOTMsMTYgKzkxLDEzIEBAIGNsYXNzIFNvdXJjZUNvZGVLZXkgewogICAgIC8v
IHByb3ZpZGVycyBjYWNoZSB0aGVpciBzdHJpbmdzIHRvIG1ha2UgdGhpcyBlZmZpY2llbnQuCiAg
ICAgU3RyaW5nVmlldyBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUNvZGUudmlldygp
OyB9CiAKLSAgICBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncygpIGNvbnN0IHsgcmV0
dXJuIG1fcnVudGltZUZsYWdzOyB9Ci0KICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU291cmNl
Q29kZUtleSYgb3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gbV9oYXNoID09IG90
aGVyLm1faGFzaAogICAgICAgICAgICAgJiYgbGVuZ3RoKCkgPT0gb3RoZXIubGVuZ3RoKCkKICAg
ICAgICAgICAgICYmIG1fZmxhZ3MgPT0gb3RoZXIubV9mbGFncwogICAgICAgICAgICAgJiYgbV9u
YW1lID09IG90aGVyLm1fbmFtZQotICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3Ry
aW5nKCkKLSAgICAgICAgICAgICYmIG1fcnVudGltZUZsYWdzID09IG90aGVyLnJ1bnRpbWVGbGFn
cygpOworICAgICAgICAgICAgJiYgc3RyaW5nKCkgPT0gb3RoZXIuc3RyaW5nKCk7CiAgICAgfQog
CiAgICAgc3RydWN0IEhhc2ggewpAQCAtMTIxLDcgKzExNiw2IEBAIGNsYXNzIFNvdXJjZUNvZGVL
ZXkgewogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU291cmNlQ29kZUZsYWdzIG1fZmxhZ3M7CiAg
ICAgdW5zaWduZWQgbV9oYXNoOwotICAgIFJ1bnRpbWVGbGFncyBtX3J1bnRpbWVGbGFnczsKIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5k
ZXggOTJhZTMxYWVjYmIyNjM1MmMwYWZiNGRhYTU1YmE1MzQyOTI4YmM5ZC4uYmYwZDhmZmY3MmIz
YmU2MmZlMjNlZTNhMTJlNDdmOWI4YzQ5ZTI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTE4NCw3ICsxODQsNiBAQCBjbGFzcyBTeW50YXhD
aGVja2VyIHsKICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVZaWVsZChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gWWll
bGRFeHByOyB9CiAgICAgQ2xhc3NFeHByZXNzaW9uIGNyZWF0ZUNsYXNzRXhwcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJDbGFzc0luZm88U3ludGF4Q2hlY2tlcj4mLCBWYXJp
YWJsZUVudmlyb25tZW50JiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBQcm9wZXJ0
eUxpc3QsIFByb3BlcnR5TGlzdCkgeyByZXR1cm4gQ2xhc3NFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBh
cnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsg
fQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzeW5jRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBi
b29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgdW5zaWdu
ZWQsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCwgSW5uZXJBcnJvd0Z1bmN0aW9uQ29kZUZlYXR1cmVz
ID0gTm9Jbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcykgeyByZXR1cm4gRnVuY3Rpb25Cb2R5UmVz
dWx0OyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgUGFyc2VyRnVuY3Rpb25JbmZvPFN5bnRheENoZWNrZXI+
JikgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTWV0
aG9kRGVmaW5pdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBQYXJzZXJGdW5jdGlv
bkluZm88U3ludGF4Q2hlY2tlcj4mKSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTI0NmY5ZTI0MzJlN2E2
ZGY0OWY4YzM1NGQ2MjAyNDIzYTMzMzFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVyIDxjYWl0cEBpZ2FsaWEuY29tPi4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFzeW5jRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIgotCi0jaW5jbHVkZSAiQXN5bmNGdW5jdGlvblByb3RvdHlwZS5oIgotI2luY2x1
ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1TVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVDVElCTEUo
QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKTsKLQotY29uc3QgQ2xhc3NJbmZvIEFzeW5jRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8s
IG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKSB9
OwotCi1Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OkFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvcihW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbih2bSwg
c3RydWN0dXJlKQotewotfQotCi12b2lkIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1bmN0aW9uUHJv
dG90eXBlKQotewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAiQXN5bmNGdW5jdGlvbiIp
OwotICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8
IFJlYWRPbmx5KTsKLQotICAgIC8vIE51bWJlciBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9y
Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMSksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKLX0K
LQotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEFzeW5jRnVuY3Rpb25D
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgQXJnTGlzdCBhcmdzKGV4ZWMpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY29uc3RydWN0RnVuY3Rpb24oZXhlYywgYXNJbnRl
cm5hbEZ1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+Z2xvYmFsT2JqZWN0KCksIGFyZ3MsIEZ1bmN0
aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMpKTsKLX0KLQotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY29uc3RydWN0QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICBBcmdMaXN0IGFyZ3MoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhc0ludGVybmFsRnVuY3Rpb24oZXhlYy0+
Y2FsbGVlKCkpLT5nbG9iYWxPYmplY3QoKSwgYXJncywgRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2Rl
OjpBc3luYykpOwotfQotCi1DYWxsVHlwZSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3I6OmdldENh
bGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJiBjYWxsRGF0YSkKLXsKLSAgICBjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24gPSBjYWxsQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOwotICAgIHJldHVybiBD
YWxsVHlwZTo6SG9zdDsKLX0KLQotQ29uc3RydWN0VHlwZSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0
YSkKLXsKLSAgICBjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IGNvbnN0cnVjdEFzeW5j
RnVuY3Rpb25Db25zdHJ1Y3RvcjsKLSAgICByZXR1cm4gQ29uc3RydWN0VHlwZTo6SG9zdDsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAzYzRhZmNmZjgzMDdhZjM1ZGM0MzQ1NDIxNjAwYzBlOGQ0OWExNDdkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRl
ciA8Y2FpdHBAaWdhbGlhLmNvbT4uCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQXN5bmNGdW5jdGlvbkNv
bnN0cnVjdG9yX2gKLSNkZWZpbmUgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yX2gKLQotI2luY2x1
ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKLQotbmFtZXNwYWNlIFdURiB7Ci1jbGFzcyBUZXh0UG9z
aXRpb247Ci19Ci0KLW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90
eXBlOwotCi1jbGFzcyBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxG
dW5jdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7Ci0K
LSAgICBzdGF0aWMgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogYXN5bmNGdW5jdGlvblBy
b3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIEFzeW5jRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3Ry
dWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I+KHZtLmhlYXApKSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Ci0g
ICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgYXN5bmNGdW5jdGlvblByb3Rv
dHlwZSk7Ci0gICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKLSAgICB9Ci0KLSAgICBERUNMQVJF
X0lORk87Ci0KLSAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJl
Kik7Ci0gICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUq
KTsKLSAgICBzdGF0aWMgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENv
bnN0cnVjdERhdGEmKTsKLSAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoSlNDZWxsKiwg
Q2FsbERhdGEmKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gQXN5bmNG
dW5jdGlvbkNvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDliODE0Yjc0ZDliNTA2NzJiMzhhOWZmNmIyZmQzZjEzZmVlZGQwYjcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvblByb3RvdHlwZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IENhaXRsaW4gUG90dGVy
IDxjYWl0cEBpZ2FsaWEuY29tPi4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkFzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaCIKLQotI2luY2x1ZGUgIkJ1aWx0aW5FeGVj
dXRhYmxlcy5oIgotI2luY2x1ZGUgIkJ1aWx0aW5OYW1lcy5oIgotI2luY2x1ZGUgIkVycm9yLmgi
Ci0jaW5jbHVkZSAiSlNBcnJheS5oIgotI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKLSNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNTdHJpbmcuaCIKLSNpbmNsdWRlICJKU1N0cmlu
Z0J1aWxkZXIuaCIKLSNpbmNsdWRlICJMZXhlci5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLQotU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKEFzeW5jRnVuY3Rpb25Qcm90b3R5
cGUpOwotCi1jb25zdCBDbGFzc0luZm8gQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6c19pbmZvID0g
eyAiQXN5bmNGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIENSRUFURV9NRVRIT0Rf
VEFCTEUoQXN5bmNGdW5jdGlvblByb3RvdHlwZSkgfTsKLQotQXN5bmNGdW5jdGlvblByb3RvdHlw
ZTo6QXN5bmNGdW5jdGlvblByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQot
ICAgIDogSlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0dXJlKQotewotfQotCi12b2lkIEFzeW5j
RnVuY3Rpb25Qcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKLXsKLSAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3lt
Ym9sLCBqc1N0cmluZygmdm0sICJBc3luY0Z1bmN0aW9uIiksIERvbnRFbnVtIHwgUmVhZE9ubHkp
OwotICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzFh
ZjQyNDk5ZTcxMTgxZmQ5NjUwZDEwYjJiM2QwYzZjZWRkOWU3Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIgPGNhaXRwQGlnYWxpYS5j
b20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGVfaAotI2RlZmlu
ZSBBc3luY0Z1bmN0aW9uUHJvdG90eXBlX2gKLQotI2luY2x1ZGUgIkpTT2JqZWN0LmgiCi0KLW5h
bWVzcGFjZSBKU0MgewotCi1jbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewotcHVibGljOgotICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOwotCi0gICAgc3RhdGljIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgQXN5bmNGdW5jdGlvblByb3Rv
dHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXN5bmNGdW5jdGlv
blByb3RvdHlwZT4odm0uaGVhcCkpIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUodm0sIHN0cnVjdHVy
ZSk7Ci0gICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0pOwotICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
Ci0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
LSAgICB9Ci0KLSAgICBERUNMQVJFX0lORk87Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKFZNJik7Ci0KLXByaXZhdGU6Ci0gICAgQXN5bmNGdW5jdGlvblByb3RvdHlwZShW
TSYsIFN0cnVjdHVyZSopOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLSNlbmRpZiAvLyBB
c3luY0Z1bmN0aW9uUHJvdG90eXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlQ2FjaGUuY3BwCmluZGV4IGMzMWUyN2IxODNjYmY2NjNlYWFiMmY0NmYwNTVjN2UyMTllZjQ5
YzguLjk2YmJkMTcxYWUzMDE4OWZkMDdmZTEwZTdkODI1ZWRiNWEzMTI4YTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtODEsMTEgKzgxLDExIEBA
IHRlbXBsYXRlIDw+IHN0cnVjdCBDYWNoZVR5cGVzPFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVC
bG9jaz4gewogfTsKIAogdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xh
c3MgRXhlY3V0YWJsZVR5cGU+Ci1VbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0
R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgY29uc3QgUnVudGltZUZsYWdzJiBydW50aW1lRmxhZ3Ms
IEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
UGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RN
b2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxD
b250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZh
cmlhYmxlc1VuZGVyVERaKQorVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEds
b2JhbENvZGVCbG9jayhWTSYgdm0sIEV4ZWN1dGFibGVUeXBlKiBleGVjdXRhYmxlLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFy
c2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2RlLCBQYXJz
ZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBldmFsQ29udGV4dFR5cGUsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVyVERaKQogewogICAgIERlcml2ZWRDb250
ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUgPSBleGVjdXRhYmxlLT5kZXJpdmVkQ29udGV4dFR5
cGUoKTsKICAgICBib29sIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQgPSBleGVjdXRhYmxlLT5pc0Fy
cm93RnVuY3Rpb25Db250ZXh0KCk7Ci0gICAgU291cmNlQ29kZUtleSBrZXkoc291cmNlLCBydW50
aW1lRmxhZ3MsIFN0cmluZygpLCBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OmNv
ZGVUeXBlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgZGVyaXZlZENvbnRleHRUeXBlLCBldmFs
Q29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQpOworICAgIFNvdXJjZUNvZGVLZXkg
a2V5KHNvdXJjZSwgU3RyaW5nKCksIENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6
Y29kZVR5cGUsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2
YWxDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0aW9uQ29udGV4dCk7CiAgICAgU291cmNlQ29kZVZh
bHVlKiBjYWNoZSA9IG1fc291cmNlQ29kZS5maW5kQ2FjaGVBbmRVcGRhdGVBZ2Uoa2V5KTsKICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIHNvbWV0aGluZyBzbWFydCBmb3IgVERaIGluc3RlYWQg
b2YganVzdCBkaXNhYmxpbmcgY2FjaGluZy4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MDEwCkBAIC0xMDQsNyArMTA0LDcgQEAgVW5saW5rZWRDb2Rl
QmxvY2tUeXBlKiBDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFJ1
bnRpbWVGbGFncyYKICAgICB9CiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlu
a2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgICZ2bSwgcnVu
dGltZUZsYWdzLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IENhY2hlVHlwZXM8VW5saW5rZWRDb2RlQmxvY2tUeXBlPjo6cGFyc2VNb2RlLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZXJyb3IsIG51bGxwdHIsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgZGVy
aXZlZENvbnRleHRUeXBlLCBldmFsQ29udGV4dFR5cGUpOworICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgQ2FjaGVUeXBlczxVbmxpbmtl
ZENvZGVCbG9ja1R5cGU+OjpwYXJzZU1vZGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBlcnJv
ciwgbnVsbHB0ciwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBkZXJpdmVkQ29udGV4dFR5cGUsIGV2
YWxDb250ZXh0VHlwZSk7CiAgICAgaWYgKCFyb290Tm9kZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKQEAgLTEzMywyOSArMTMzLDI5IEBAIFVubGlua2VkQ29kZUJsb2NrVHlwZSogQ29kZUNh
Y2hlOjpnZXRHbG9iYWxDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBSdW50aW1lRmxhZ3MmCiAgICAg
cmV0dXJuIHVubGlua2VkQ29kZUJsb2NrOwogfQogCi1VbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sq
IENvZGVDYWNoZTo6Z2V0UHJvZ3JhbUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFJ1bnRpbWVGbGFn
cyYgcnVudGltZUZsYWdzLCBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBKU1BhcnNl
clN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUGFyc2Vy
RXJyb3ImIGVycm9yKQorVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldFBy
b2dyYW1Db2RlQmxvY2soVk0mIHZtLCBQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwg
UGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgZW1wdHlQYXJl
bnRURFpWYXJpYWJsZXM7Ci0gICAgcmV0dXJuIGdldEdsb2JhbENvZGVCbG9jazxVbmxpbmtlZFBy
b2dyYW1Db2RlQmxvY2s+KHZtLCBydW50aW1lRmxhZ3MsIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVp
bHRpbk1vZGUsIHN0cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKKyAgICByZXR1cm4gZ2V0R2xvYmFs
Q29kZUJsb2NrPFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJj
ZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIEV2YWxDb250
ZXh0VHlwZTo6Tm9uZSwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKIH0KIAotVW5saW5rZWRF
dmFsQ29kZUJsb2NrKiBDb2RlQ2FjaGU6OmdldEV2YWxDb2RlQmxvY2soVk0mIHZtLCBjb25zdCBS
dW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncywgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUs
IFBhcnNlckVycm9yJiBlcnJvciwgRXZhbENvbnRleHRUeXBlIGV2YWxDb250ZXh0VHlwZSwgY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCogdmFyaWFibGVzVW5kZXJURFopCitVbmxpbmtlZEV2YWxD
b2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0RXZhbENvZGVCbG9jayhWTSYgdm0sIEV2YWxFeGVjdXRh
YmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTUGFyc2VyQnVpbHRp
bk1vZGUgYnVpbHRpbk1vZGUsIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBEZWJ1Z2dl
ck1vZGUgZGVidWdnZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IsIEV2YWxDb250ZXh0VHlwZSBl
dmFsQ29udGV4dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqIHZhcmlhYmxlc1VuZGVy
VERaKQogewotICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRFdmFsQ29kZUJs
b2NrPih2bSwgcnVudGltZUZsYWdzLCBleGVjdXRhYmxlLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlhYmxl
c1VuZGVyVERaKTsKKyAgICByZXR1cm4gZ2V0R2xvYmFsQ29kZUJsb2NrPFVubGlua2VkRXZhbENv
ZGVCbG9jaz4odm0sIGV4ZWN1dGFibGUsIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUs
IGRlYnVnZ2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFop
OwogfQogCi1VbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0TW9k
dWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYgdm0sIGNvbnN0IFJ1bnRpbWVGbGFncyYgcnVudGltZUZs
YWdzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCBEZWJ1Z2dlck1vZGUg
ZGVidWdnZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIENvZGVDYWNoZTo6Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jayhWTSYgdm0sIE1v
ZHVsZVByb2dyYW1FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUsIERlYnVnZ2VyTW9kZSBkZWJ1Z2dl
ck1vZGUsIFBhcnNlckVycm9yJiBlcnJvcikKIHsKICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVt
cHR5UGFyZW50VERaVmFyaWFibGVzOwotICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5s
aW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrPih2bSwgcnVudGltZUZsYWdzLCBleGVjdXRhYmxl
LCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgZGVidWdn
ZXJNb2RlLCBlcnJvciwgRXZhbENvbnRleHRUeXBlOjpOb25lLCAmZW1wdHlQYXJlbnRURFpWYXJp
YWJsZXMpOworICAgIHJldHVybiBnZXRHbG9iYWxDb2RlQmxvY2s8VW5saW5rZWRNb2R1bGVQcm9n
cmFtQ29kZUJsb2NrPih2bSwgZXhlY3V0YWJsZSwgc291cmNlLCBidWlsdGluTW9kZSwgSlNQYXJz
ZXJTdHJpY3RNb2RlOjpTdHJpY3QsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIEV2YWxDb250ZXh0VHlw
ZTo6Tm9uZSwgJmVtcHR5UGFyZW50VERaVmFyaWFibGVzKTsKIH0KIAogLy8gRklYTUU6IFRoZXJl
J3Mgbm8gbmVlZCB0byBhZGQgdGhlIGZ1bmN0aW9uJ3MgbmFtZSB0byB0aGUga2V5IGhlcmUuIEl0
J3MgYWxyZWFkeSBpbiB0aGUgc291cmNlIGNvZGUuCi1VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYgdm0s
IGNvbnN0IFJ1bnRpbWVGbGFncyYgcnVudGltZUZsYWdzLCBjb25zdCBJZGVudGlmaWVyJiBuYW1l
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKK1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21H
bG9iYWxDb2RlKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgYm9vbCBpc0Fycm93RnVuY3Rp
b25Db250ZXh0ID0gZmFsc2U7CiAgICAgU291cmNlQ29kZUtleSBrZXkoCi0gICAgICAgIHNvdXJj
ZSwgcnVudGltZUZsYWdzLCBuYW1lLnN0cmluZygpLCBTb3VyY2VDb2RlVHlwZTo6RnVuY3Rpb25U
eXBlLAorICAgICAgICBzb3VyY2UsIG5hbWUuc3RyaW5nKCksIFNvdXJjZUNvZGVUeXBlOjpGdW5j
dGlvblR5cGUsCiAgICAgICAgIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAgICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LAogICAgICAgICBEZXJpdmVkQ29udGV4
dFR5cGU6Ok5vbmUsCkBAIC0xNzEsNyArMTcxLDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUqIENvZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUoVk0mIHYK
IAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmU7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFByb2dyYW1Ob2RlPiBwcm9ncmFtID0gcGFyc2U8UHJvZ3JhbU5vZGU+KAot
ICAgICAgICAmdm0sIHJ1bnRpbWVGbGFncywgc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVy
KCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCiAgICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwKICAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKTsKICAgICBpZiAoIXByb2dyYW0pIHsKQEAgLTIwMSw5ICsyMDEsNyBAQCBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSogQ29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xv
YmFsQ29kZShWTSYgdgogICAgIG1ldGFkYXRhLT5zZXRFbmRQb3NpdGlvbihwb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKTsKICAgICAvLyBUaGUgRnVuY3Rpb24gY29uc3RydWN0b3Igb25seSBoYXMg
YWNjZXNzIHRvIGdsb2JhbCB2YXJpYWJsZXMsIHNvIG5vIHZhcmlhYmxlcyB3aWxsIGJlIHVuZGVy
IFREWi4KICAgICBWYXJpYWJsZUVudmlyb25tZW50IGVtcHR5VERaVmFyaWFibGVzOwotCi0gICAg
Q29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gY29uc3RydWN0QWJpbGl0eUZvclBh
cnNlTW9kZShtZXRhZGF0YS0+cGFyc2VNb2RlKCkpOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y3JlYXRlKCZ2bSwgc291cmNlLCBtZXRhZGF0YSwgVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgY29u
c3RydWN0QWJpbGl0eSwgZW1wdHlURFpWYXJpYWJsZXMsIERlcml2ZWRDb250ZXh0VHlwZTo6Tm9u
ZSk7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUoJnZtLCBzb3VyY2UsIG1ldGFkYXRh
LCBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uLCBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5Db25zdHJ1Y3Qs
IGVtcHR5VERaVmFyaWFibGVzLCBEZXJpdmVkQ29udGV4dFR5cGU6Ok5vbmUpOwogCiAgICAgZnVu
Y3Rpb25FeGVjdXRhYmxlLT5zZXRTb3VyY2VVUkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCkt
PnNvdXJjZVVSTCgpKTsKICAgICBmdW5jdGlvbkV4ZWN1dGFibGUtPnNldFNvdXJjZU1hcHBpbmdV
UkxEaXJlY3RpdmUoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZU1hcHBpbmdVUkwoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5oCmluZGV4IDJiNjRiM2VmZDgyMDk5
NWExMTMwYzkxMjJjNGIzNmEyMGQ1NzdiYTguLjUyOWM0ODk2ZTljNTEzZGRkMDUyNzZiNzUyZThh
ZGQ5OWJlZWI3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVDYWNoZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5o
CkBAIC00OSw3ICs0OSw2IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOwogY2xh
c3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVW5saW5rZWRQcm9ncmFt
Q29kZUJsb2NrOwogY2xhc3MgVk07Ci1jbGFzcyBSdW50aW1lRmxhZ3M7CiBjbGFzcyBWYXJpYWJs
ZUVudmlyb25tZW50OwogCiBzdHJ1Y3QgU291cmNlQ29kZVZhbHVlIHsKQEAgLTE4OCwxMCArMTg3
LDEwIEBAIGNsYXNzIENvZGVDYWNoZSB7CiAgICAgQ29kZUNhY2hlKCk7CiAgICAgfkNvZGVDYWNo
ZSgpOwogCi0gICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrKiBnZXRQcm9ncmFtQ29kZUJsb2Nr
KFZNJiwgY29uc3QgUnVudGltZUZsYWdzJiwgUHJvZ3JhbUV4ZWN1dGFibGUqLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1Z2dl
ck1vZGUsIFBhcnNlckVycm9yJik7Ci0gICAgVW5saW5rZWRFdmFsQ29kZUJsb2NrKiBnZXRFdmFs
Q29kZUJsb2NrKFZNJiwgY29uc3QgUnVudGltZUZsYWdzJiwgRXZhbEV4ZWN1dGFibGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBE
ZWJ1Z2dlck1vZGUsIFBhcnNlckVycm9yJiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50Kik7Ci0gICAgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrKiBnZXRN
b2R1bGVQcm9ncmFtQ29kZUJsb2NrKFZNJiwgY29uc3QgUnVudGltZUZsYWdzJiwgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNQYXJzZXJCdWlsdGluTW9kZSwg
RGVidWdnZXJNb2RlLCBQYXJzZXJFcnJvciYpOwotICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBnZXRGdW5jdGlvbkV4ZWN1dGFibGVGcm9tR2xvYmFsQ29kZShWTSYsIGNvbnN0IFJ1bnRp
bWVGbGFncyYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJy
b3ImKTsKKyAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIGdldFByb2dyYW1Db2RlQmxvY2so
Vk0mLCBQcm9ncmFtRXhlY3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUGFyc2VyRXJyb3ImKTsK
KyAgICBVbmxpbmtlZEV2YWxDb2RlQmxvY2sqIGdldEV2YWxDb2RlQmxvY2soVk0mLCBFdmFsRXhl
Y3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNl
clN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4dFR5cGUs
IGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKKyAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1D
b2RlQmxvY2sqIGdldE1vZHVsZVByb2dyYW1Db2RlQmxvY2soVk0mLCBNb2R1bGVQcm9ncmFtRXhl
Y3V0YWJsZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBEZWJ1Z2dl
ck1vZGUsIFBhcnNlckVycm9yJik7CisgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGdl
dEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogCiAgICAgdm9pZCBjbGVhcigpCiAg
ICAgewpAQCAtMjAwLDcgKzE5OSw3IEBAIGNsYXNzIENvZGVDYWNoZSB7CiAKIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFVubGlua2VkQ29kZUJsb2NrVHlwZSwgY2xhc3MgRXhlY3V0YWJs
ZVR5cGU+IAotICAgIFVubGlua2VkQ29kZUJsb2NrVHlwZSogZ2V0R2xvYmFsQ29kZUJsb2NrKFZN
JiwgY29uc3QgUnVudGltZUZsYWdzJiwgRXhlY3V0YWJsZVR5cGUqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgSlNQYXJzZXJCdWlsdGluTW9kZSwgSlNQYXJzZXJTdHJpY3RNb2RlLCBEZWJ1Z2dlck1vZGUs
IFBhcnNlckVycm9yJiwgRXZhbENvbnRleHRUeXBlLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50
Kik7CisgICAgVW5saW5rZWRDb2RlQmxvY2tUeXBlKiBnZXRHbG9iYWxDb2RlQmxvY2soVk0mLCBF
eGVjdXRhYmxlVHlwZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBK
U1BhcnNlclN0cmljdE1vZGUsIERlYnVnZ2VyTW9kZSwgUGFyc2VyRXJyb3ImLCBFdmFsQ29udGV4
dFR5cGUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQqKTsKIAogICAgIENvZGVDYWNoZU1hcCBt
X3NvdXJjZUNvZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKaW5kZXggNjQyZTdlZjA1MjBmMjBkNTk4NDYzNjcxN2U2N2Q2YzI5
MWY4NjI5Yi4uMWQzMjUzOWE1NGE2ZjdhYTJhZjFkNGNhNzVlYjE2OGIyNDU5OTA2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBA
IC0xMDYsNyArMTA2LDYgQEAKICAgICBtYWNybyhhcmd1bWVudHMpIFwKICAgICBtYWNybyhhcykg
XAogICAgIG1hY3JvKGFzc2lnbikgXAotICAgIG1hY3JvKGFzeW5jKSBcCiAgICAgbWFjcm8oYmFj
aykgXAogICAgIG1hY3JvKGJpbmQpIFwKICAgICBtYWNybyhibHVyKSBcCkBAIC0yNjcsNyArMjY2
LDYgQEAKICAgICBtYWNybyh5ZWFyKQogCiAjZGVmaW5lIEpTQ19DT01NT05fSURFTlRJRklFUlNf
RUFDSF9LRVlXT1JEKG1hY3JvKSBcCi0gICAgbWFjcm8oYXdhaXQpIFwKICAgICBtYWNybyhicmVh
aykgXAogICAgIG1hY3JvKGNhc2UpIFwKICAgICBtYWNybyhjYXRjaCkgXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBjZTc0MmFmMmY4YmZmNTc3
YWZiNzQ2YWUxZmU1NWE2MzFkMDUwYzc0Li5kZWM1NTUzZWIyNTJkZmQ5YmU3MGJkZTE0N2UxMDA5
ZjVmNzI2NmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmNwcApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCiAjaW5j
bHVkZSAiTW9kdWxlTG9hZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCi0jaW5jbHVk
ZSAiUnVudGltZUZsYWdzLmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsaW5nU2NvcGUuaCIKICNp
bmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCkBAIC02MSwxMiArNjAsMTIgQEAgYm9vbCBj
aGVja1N5bnRheChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNW
YWx1ZSogcmV0dXJuZWRFeGMKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKLWJvb2wgY2hlY2tT
eW50YXgoVk0mIHZtLCBjb25zdCBSdW50aW1lRmxhZ3MmIHJ1bnRpbWVGbGFncywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCitib29sIGNoZWNrU3ludGF4KFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLmF0b21pY1N0
cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1RhYmxlKCkpOwogICAg
IHJldHVybiAhIXBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBydW50aW1lRmxhZ3Ms
IHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAor
ICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpO
b3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNl
UGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsK
IH0KIApAQCAtNzYsNyArNzUsNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZQogICAgIEpTTG9j
a0hvbGRlciBsb2NrKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJs
ZSgpID09IHd0ZlRocmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8TW9k
dWxlUHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+cnVudGltZUZsYWdzKCksIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpOb3RCdWlsdGluLAorICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6
OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5n
OjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAoIW1vZHVsZVByb2dyYW1Ob2RlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9u
LmgKaW5kZXggYjlkOTBhZjE0MTEwN2YzM2Q0YTlkNDMzMzI0MGI1ZjNlNTYzMDY5NC4uZjEzMWNj
NWFlNTcxY2I2YmUwYjZkM2NiMDE1ZTg5OTFhMjI0MGI1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtMzMsMTIgKzMzLDExIEBAIGNsYXNzIEV4Y2Vw
dGlvbjsKIGNsYXNzIEV4ZWNTdGF0ZTsKIGNsYXNzIEpTT2JqZWN0OwogY2xhc3MgUGFyc2VyRXJy
b3I7Ci1jbGFzcyBSdW50aW1lRmxhZ3M7CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgVk07CiBj
bGFzcyBKU0ludGVybmFsUHJvbWlzZTsKIAotSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5
bnRheChWTSYsIGNvbnN0IFJ1bnRpbWVGbGFncyYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJF
cnJvciYpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChWTSYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5
bnRheChFeGVjU3RhdGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0g
MCk7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrTW9kdWxlU3ludGF4KEV4ZWNTdGF0ZSos
IGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmluZGV4IGIxZGU5OWY3YTM3MTlmOGNkYzQ2ZDhj
MGVmOWQ5NjMyYTY1ZmI4ODcuLjQ5ZDlmOTg1NjA5N2M0Y2UzZTdkZDBlYWM2ODY3ODBhYTQzOTM3
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBA
IC0zMTQsNyArMzE0LDcgQEAgQ29kZUJsb2NrKiBTY3JpcHRFeGVjdXRhYmxlOjpuZXdDb2RlQmxv
Y2tGb3IoCiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFz
SW50ZXJhY3RpdmVEZWJ1Z2dlcigpID8gRGVidWdnZXJPbiA6IERlYnVnZ2VyT2ZmOwogICAgIFVu
bGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gCiAgICAgICAgIGV4
ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT51bmxpbmtlZENvZGVCbG9ja0ZvcigKLSAg
ICAgICAgICAgICp2bSwgZ2xvYmFsT2JqZWN0LT5ydW50aW1lRmxhZ3MoKSwgZXhlY3V0YWJsZS0+
bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgZXJyb3IsIAorICAgICAgICAgICAgKnZtLCBl
eGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBlcnJvciwgCiAgICAgICAg
ICAgICBleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSk7CiAgICAgcmVjb3JkUGFyc2UoCiAgICAgICAg
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5mZWF0dXJlcygpLCAKQEAgLTU2OSw3
ICs1NjksNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KEV4ZWNT
dGF0ZSogZXhlYykKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKICAgICBKU0dsb2JhbE9iamVj
dCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW1Ob2RlID0gcGFyc2U8UHJvZ3Jh
bU5vZGU+KAotICAgICAgICB2bSwgbGV4aWNhbEdsb2JhbE9iamVjdC0+cnVudGltZUZsYWdzKCks
IG1fc291cmNlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4s
IAorICAgICAgICB2bSwgbV9zb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9k
ZTo6Tm90QnVpbHRpbiwgCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBT
b3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZXJy
b3IpOwogICAgIGlmIChwcm9ncmFtTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggZWNjZTI3NDA0YmJkMDQwOGQ5
ZjY2MGFhYzBhNzdmYzkwMTY0ODFlMy4uYjc5YTU5YmU4YjJkODU0OTZmZjcyN2FmNmMyODc3M2M1
OGMzMGI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApA
QCAtNjUyLDcgKzY1Miw2IEBAIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICBDb25zdHJ1Y3RBYmlsaXR5IGNvbnN0cnVjdEFiaWxp
dHkoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0
eSgpOyB9CiAgICAgYm9vbCBpc0NsYXNzKCkgY29uc3QgeyByZXR1cm4gIWNsYXNzU291cmNlKCku
aXNOdWxsKCk7IH0KICAgICBib29sIGlzQXJyb3dGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIHBh
cnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU7IH0KLSAgICBi
b29sIGlzQXN5bmNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGlzQXN5bmNGdW5jdGlvblBhcnNl
TW9kZShwYXJzZU1vZGUoKSk7IH0KICAgICBib29sIGlzR2V0dGVyKCkgY29uc3QgeyByZXR1cm4g
cGFyc2VNb2RlKCkgPT0gU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOyB9CiAgICAgYm9vbCBp
c1NldHRlcigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlTW9kZSgpID09IFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZTsgfQogICAgIERlcml2ZWRDb250ZXh0VHlwZSBkZXJpdmVkQ29udGV4dFR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkRXhlY3V0YWJsZS0+ZGVyaXZlZENvbnRleHRUeXBl
KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAKaW5kZXggOThkNjMwNDc0ZGIxOGViOWEwOTQ0NjdjNDc0MDAxYmFhMDg5
ZGJiZS4uZDQzOTA2NjNiYTBmMmEwNTY1Mjk5NzI2OWQxMzM1NGRlYTQyN2RjZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKQEAgLTk1LDE4ICs5NSwxNCBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGlu
Z0V2YWxFbmFibGVkQ2hlY2soCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yNDM1MC4KICAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5p
c0VtcHR5KCkpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCJ7IiwgZnVuY3Rpb25Db25z
dHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6QXN5bmMgPyAiYXN5bmMg
ZnVuY3Rpb24gIiA6ICJmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVu
Y3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVuY3Rpb25OYW1l
LnN0cmluZygpLCAiKCkge1xuXG59fSIpOworICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygi
e2Z1bmN0aW9uICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVj
dGlvbk1vZGU6OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIo
KSB7XG5cbn19Iik7CiAgICAgZWxzZSBpZiAoYXJncy5zaXplKCkgPT0gMSkKLSAgICAgICAgcHJv
Z3JhbSA9IG1ha2VTdHJpbmcoInsiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlOjpBc3luYyA/ICJhc3luYyBmdW5jdGlvbiAiIDogImZ1bmN0aW9u
ICIsIGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6
OkdlbmVyYXRvciA/ICIqIiA6ICIiLCBmdW5jdGlvbk5hbWUuc3RyaW5nKCksICIoKSB7XG4iLCBh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlxufX0iKTsKKyAgICAgICAg
cHJvZ3JhbSA9IG1ha2VTdHJpbmcoIntmdW5jdGlvbiAiLCBmdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0b3IgPyAiKiIgOiAiIiwgZnVu
Y3Rpb25OYW1lLnN0cmluZygpLCAiKCkge1xuIiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyksICJcbn19Iik7CiAgICAgZWxzZSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIg
YnVpbGRlcjsKLSAgICAgICAgaWYgKGZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSA9PSBGdW5jdGlv
bkNvbnN0cnVjdGlvbk1vZGU6OkFzeW5jKQotICAgICAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRl
cmFsKCJ7YXN5bmMgZnVuY3Rpb24gIik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7Ci0gICAgICAgICAgICBpZiAoZnVuY3Rp
b25Db25zdHJ1Y3Rpb25Nb2RlID09IEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZTo6R2VuZXJhdG9y
KQotICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcqJyk7Ci0gICAgICAgIH0KKyAgICAg
ICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJ7ZnVuY3Rpb24gIik7CisgICAgICAgIGlmIChmdW5j
dGlvbkNvbnN0cnVjdGlvbk1vZGUgPT0gRnVuY3Rpb25Db25zdHJ1Y3Rpb25Nb2RlOjpHZW5lcmF0
b3IpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnKicpOwogICAgICAgICBidWlsZGVyLmFw
cGVuZChmdW5jdGlvbk5hbWUuc3RyaW5nKCkpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKCcp
OwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52aWV3
KGV4ZWMpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaAppbmRleCA1NGMxMmY0NjY5MjYwODdmNDYyMjAwMTIzNmFiYTM4
MTQ5MDE0OTcyLi42M2JjNDA4YzRiMDE3ZDhkNTRiNGVmZmRjYWRkMDlmNzBkMTNkNTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rv
ci5oCkBAIC01OSw3ICs1OSw2IEBAIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CiBlbnVtIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0aW9uTW9kZSB7
CiAgICAgRnVuY3Rpb24sCiAgICAgR2VuZXJhdG9yLAotICAgIEFzeW5jCiB9OwogCiBKU09iamVj
dCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBjb25zdCBB
cmdMaXN0JiwgY29uc3QgSWRlbnRpZmllciYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCwgY29uc3QgV1RGOjpUZXh0UG9zaXRpb24mLCBGdW5jdGlvbkNvbnN0cnVjdGlvbk1v
ZGUgPSBGdW5jdGlvbkNvbnN0cnVjdGlvbk1vZGU6OkZ1bmN0aW9uLCBKU1ZhbHVlIG5ld1Rhcmdl
dCA9IEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FzeW5jRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
c3luY0Z1bmN0aW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM0OTA5Njdm
NzM2ZDcyYTYxYmM4NDM1MzIxZTQwNDBhMmQyMTQ4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fz
eW5jRnVuY3Rpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBDYWl0bGluIFBvdHRlciA8Y2FpdHBAaWdhbGlhLmNvbT4uCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJKU0FzeW5jRnVuY3Rpb24uaCIK
LQotI2luY2x1ZGUgIkVycm9yLmgiCi0jaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUg
IkpTQ0pTVmFsdWUuaCIKLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSlNGdW5j
dGlvbklubGluZXMuaCIKLSNpbmNsdWRlICJKU09iamVjdC5oIgotI2luY2x1ZGUgIlByb3BlcnR5
U2xvdC5oIgotI2luY2x1ZGUgIlZNLmgiCi0KLW5hbWVzcGFjZSBKU0MgewotCi1jb25zdCBDbGFz
c0luZm8gSlNBc3luY0Z1bmN0aW9uOjpzX2luZm8gPSB7ICJBc3luY0Z1bmN0aW9uIiwgJkJhc2U6
OnNfaW5mbywgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0FzeW5jRnVuY3Rpb24pIH07
Ci0KLUpTQXN5bmNGdW5jdGlvbjo6SlNBc3luY0Z1bmN0aW9uKFZNJiB2bSwgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKLSAgICA6IEJhc2Uodm0sIGV4ZWN1
dGFibGUsIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmFzeW5jRnVuY3Rpb25TdHJ1Y3R1
cmUoKSkKLXsKLX0KLQotSlNBc3luY0Z1bmN0aW9uKiBKU0FzeW5jRnVuY3Rpb246OmNyZWF0ZUlt
cGwoVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3Bl
KQotewotICAgIEpTQXN5bmNGdW5jdGlvbiogYXN5bmNGdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPEpTQXN5bmNGdW5jdGlvbj4odm0uaGVhcCkpIEpTQXN5bmNGdW5jdGlvbih2
bSwgZXhlY3V0YWJsZSwgc2NvcGUpOwotICAgIEFTU0VSVChhc3luY0Z1bmN0aW9uLT5zdHJ1Y3R1
cmUoKS0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIGFzeW5jRnVuY3Rpb24tPmZpbmlzaENyZWF0aW9u
KHZtKTsKLSAgICByZXR1cm4gYXN5bmNGdW5jdGlvbjsKLX0KLQotSlNBc3luY0Z1bmN0aW9uKiBK
U0FzeW5jRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUpCi17Ci0gICAgSlNBc3luY0Z1bmN0aW9uKiBhc3luY0Z1bmN0
aW9uID0gY3JlYXRlSW1wbCh2bSwgZXhlY3V0YWJsZSwgc2NvcGUpOwotICAgIGV4ZWN1dGFibGUt
PnNpbmdsZXRvbkZ1bmN0aW9uKCktPm5vdGlmeVdyaXRlKHZtLCBhc3luY0Z1bmN0aW9uLCAiQWxs
b2NhdGluZyBhbiBhc3luYyBmdW5jdGlvbiIpOwotICAgIHJldHVybiBhc3luY0Z1bmN0aW9uOwot
fQotCi1KU0FzeW5jRnVuY3Rpb24qIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlV2l0aEludmFsaWRh
dGVkUmVhbGxvY2F0aW9uV2F0Y2hwb2ludChWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCi17Ci0gICAgcmV0dXJuIGNyZWF0ZUltcGwodm0sIGV4
ZWN1dGFibGUsIHNjb3BlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KLQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBc3luY0Z1bmN0aW9uLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZTk5NTllYzU1MzFlYjc1NGI3ZmRiNmZhZGNmYmU2ZjUzMzgyMzg1
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FzeW5jRnVuY3Rpb24uaAorKysgL2Rldi9udWxsCkBA
IC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2FpdGxpbiBQb3R0ZXIg
PGNhaXRwQGlnYWxpYS5jb20+LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEpTQXN5bmNGdW5jdGlvbl9o
Ci0jZGVmaW5lIEpTQXN5bmNGdW5jdGlvbl9oCi0KLSNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKLWNsYXNzIExMSW50RGVzaXJlZE9mZnNldHM7Ci0KLWNsYXNzIEpTQXN5
bmNGdW5jdGlvbiA6IHB1YmxpYyBKU0Z1bmN0aW9uIHsKLSAgICBmcmllbmQgY2xhc3MgSklUOwot
I2lmIEVOQUJMRShERkdfSklUKQotICAgIGZyaWVuZCBjbGFzcyBERkc6OlNwZWN1bGF0aXZlSklU
OwotICAgIGZyaWVuZCBjbGFzcyBERkc6OkpJVENvbXBpbGVyOwotI2VuZGlmCi0gICAgZnJpZW5k
IGNsYXNzIFZNOwotcHVibGljOgotICAgIHR5cGVkZWYgSlNGdW5jdGlvbiBCYXNlOwotCi0gICAg
Y29uc3Qgc3RhdGljIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxh
Z3M7Ci0KLSAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwotCi0gICAgc3RhdGljIEpTQXN5bmNGdW5j
dGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOwotICAgIHN0
YXRpYyBKU0FzeW5jRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxsb2NhdGlvbldh
dGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7Ci0KLSAgICBzdGF0
aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBpbmxpbmVDYXBhY2l0eSkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9VTlVTRUQoaW5saW5lQ2FwYWNpdHksICFpbmxpbmVDYXBhY2l0eSk7Ci0g
ICAgICAgIHJldHVybiBzaXplb2YoSlNBc3luY0Z1bmN0aW9uKTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChnbG9i
YWxPYmplY3QpOwotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhKU0Z1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3Mp
LCBpbmZvKCkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBKU0FzeW5jRnVuY3Rpb24oVk0mLCBG
dW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7Ci0KLSAgICBzdGF0aWMgSlNBc3luY0Z1bmN0
aW9uKiBjcmVhdGVJbXBsKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOwotCi0g
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKLX07Ci0KLX0gLy8gbmFtZXNw
YWNlIEpTQwotCi0jZW5kaWYgLy8gSlNBc3luY0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggMzE3NGFiYzg3OWQ2Mjg2OWVkMDA5
ZWJlYWY4MzA2MDcwNGRjOGMyNi4uYWUzMGRjYzYwNDViZjZmYTcyOTFiMjhkNjk2ZWU1MmIwZDZh
OWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAK
QEAgLTM1MSw3ICszNTEsNyBAQCBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChK
U09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TgogICAgIGlmICh0aGlz
T2JqZWN0LT5pc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gQmFzZTo6
Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7
CiAKLSAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5
cGUgJiYgIXRoaXNPYmplY3QtPmpzRXhlY3V0YWJsZSgpLT5pc0Fycm93RnVuY3Rpb24oKSAmJiAh
dGhpc09iamVjdC0+anNFeGVjdXRhYmxlKCktPmlzQXN5bmNGdW5jdGlvbigpKSB7CisgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlICYmICF0aGlz
T2JqZWN0LT5qc0V4ZWN1dGFibGUoKS0+aXNBcnJvd0Z1bmN0aW9uKCkpIHsKICAgICAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICAgICAg
UHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gdGhpc09iamVjdC0+Z2V0RGlyZWN0T2Zmc2V0KHZtLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDQwZWE4ODk4ZWE0YzA2MDIyMGJiNWQxN2Nl
ZGQ2MDNlMzEyMmJmMDUuLjdhNWIwNWM3YjQ0ZDFmNWQyNDhkYWY4Y2JiOTc5ZmU5NTM5NDRmMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5j
cHAKQEAgLTMzLDggKzMzLDYgQEAKICNpbmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiQXJyYXlJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkFycmF5UHJvdG90eXBl
LmgiCi0jaW5jbHVkZSAiQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCi0jaW5jbHVkZSAiQXN5
bmNGdW5jdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkJvb2xlYW5Db25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkJvb2xlYW5Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJCdWlsdGluTmFtZXMuaCIK
QEAgLTY2LDcgKzY0LDYgQEAKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuaCIK
ICNpbmNsdWRlICJKU0FycmF5QnVmZmVyUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUl0
ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNBc3luY0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3Vu
ZEZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNCb3VuZFNsb3RCYXNlRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU0NJbmxpbmVzLmgiCkBAIC02MTUsMTEgKzYxMiw2IEBAIG1fICMjIGxvd2VyTmFtZSAj
IyBQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5jCiAgICAgICAgICAgICBpbml0LnNldChOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjpjcmVh
dGUoaW5pdC52bSwgaW5pdC5vd25lciwgaW5pdC5vd25lci0+bV9uYXRpdmVFcnJvclN0cnVjdHVy
ZS5nZXQoKSwgaW5pdC5vd25lci0+bV9uYXRpdmVFcnJvclByb3RvdHlwZVN0cnVjdHVyZS5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJVUklFcnJvciIpKSk7CiAgICAgICAgIH0pOwogCi0gICAgbV9hc3lu
Y0Z1bmN0aW9uUHJvdG90eXBlLnNldCh2bSwgdGhpcywgQXN5bmNGdW5jdGlvblByb3RvdHlwZTo6
Y3JlYXRlKHZtLCBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRo
aXMsIG1fZnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKSk7Ci0gICAgQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yKiBhc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IgPSBBc3luY0Z1bmN0aW9uQ29uc3RydWN0
b3I6OmNyZWF0ZSh2bSwgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIGZ1bmN0aW9uQ29uc3RydWN0b3IpLCBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUu
Z2V0KCkpOwotICAgIG1fYXN5bmNGdW5jdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBhc3luY0Z1bmN0aW9u
Q29uc3RydWN0b3IsIERvbnRFbnVtIHwgUmVhZE9ubHkpOwotICAgIG1fYXN5bmNGdW5jdGlvblN0
cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQXN5bmNGdW5jdGlvbjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpKTsKLQogICAgIG1fZ2VuZXJh
dG9yRnVuY3Rpb25Qcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBHZW5lcmF0b3JGdW5jdGlvblByb3Rv
dHlwZTo6Y3JlYXRlKHZtLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSkpOwogICAgIEdlbmVyYXRv
ckZ1bmN0aW9uQ29uc3RydWN0b3IqIGdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IgPSBHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgZnVuY3Rpb25Db25zdHJ1Y3Rvciks
IG1fZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuZ2V0KCkpOwogICAgIG1fZ2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwgZ2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvciwgRG9udEVu
dW0pOwpAQCAtNzcyLDggKzc2NCw2IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT4ganNOYW1lLCBsb3dlck5hbWUgIyMgQ29uc3RydWN0CiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5nZW5l
cmF0b3JSZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rp
b24odm0sIGdlbmVyYXRvclByb3RvdHlwZUdlbmVyYXRvclJlc3VtZUNvZGVHZW5lcmF0b3Iodm0p
LCB0aGlzKSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9i
YWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhpc1RpbWVW
YWx1ZVByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jVGhpc1RpbWVWYWx1ZSwgRG9udEVudW0gfCBE
b250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJv
cGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkudGhpc051bWJlclZhbHVlUHJpdmF0ZU5hbWUoKSwg
cHJpdmF0ZUZ1bmNUaGlzTnVtYmVyVmFsdWUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmFzeW5jRnVuY3Rpb25SZXN1bWVQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpj
cmVhdGVCdWlsdGluRnVuY3Rpb24odm0sIGFzeW5jRnVuY3Rpb25Qcm90b3R5cGVBc3luY0Z1bmN0
aW9uUmVzdW1lQ29kZUdlbmVyYXRvcih2bSksIHRoaXMpLCBEb250RW51bSB8IERvbnREZWxldGUg
fCBSZWFkT25seSksCi0KICNpZiBFTkFCTEUoSU5UTCkKICAgICAgICAgR2xvYmFsUHJvcGVydHlJ
bmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkNvbGxhdG9yUHJpdmF0ZU5hbWUo
KSwgaW50bC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5Db2xsYXRvciksIERvbnRF
bnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZv
KHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkRhdGVUaW1lRm9ybWF0UHJpdmF0ZU5h
bWUoKSwgaW50bC0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5EYXRlVGltZUZvcm1h
dCksIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKQEAgLTEyMjYsNyArMTIxNiw3
IEBAIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVByb2dy
YW1Db2RlQmxvY2soQ2FsbEZyYW1lKiBjYWxsCiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmlj
dE1vZGUgPSBleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUoKSA/IEpTUGFyc2VyU3RyaWN0TW9kZTo6
U3RyaWN0IDogSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3Q7CiAgICAgRGVidWdnZXJNb2Rl
IGRlYnVnZ2VyTW9kZSA9IGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBE
ZWJ1Z2dlck9mZjsKICAgICBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJs
b2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0UHJvZ3JhbUNvZGVCbG9jaygKLSAgICAgICAgdm0o
KSwgcnVudGltZUZsYWdzKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1Bh
cnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBzdHJpY3RNb2RlLCAKKyAgICAgICAgdm0oKSwg
ZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5v
dEJ1aWx0aW4sIHN0cmljdE1vZGUsIAogICAgICAgICBkZWJ1Z2dlck1vZGUsIGVycm9yKTsKIAog
ICAgIGlmIChoYXNEZWJ1Z2dlcigpKQpAQCAtMTI0OCw3ICsxMjM4LDcgQEAgVW5saW5rZWRFdmFs
Q29kZUJsb2NrKiBKU0dsb2JhbE9iamVjdDo6Y3JlYXRlRXZhbENvZGVCbG9jayhDYWxsRnJhbWUq
IGNhbGxGcmFtZSwKICAgICBFdmFsQ29udGV4dFR5cGUgZXZhbENvbnRleHRUeXBlID0gZXhlY3V0
YWJsZS0+ZXhlY3V0YWJsZUluZm8oKS5ldmFsQ29udGV4dFR5cGUoKTsKICAgICAKICAgICBVbmxp
bmtlZEV2YWxDb2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0gdm0oKS5jb2RlQ2FjaGUoKS0+
Z2V0RXZhbENvZGVCbG9jaygKLSAgICAgICAgdm0oKSwgcnVudGltZUZsYWdzKCksIGV4ZWN1dGFi
bGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LCBzdHJpY3RNb2RlLCBkZWJ1Z2dlck1vZGUsIGVycm9yLCBldmFsQ29udGV4dFR5cGUsIHZhcmlh
Ymxlc1VuZGVyVERaKTsKKyAgICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291
cmNlKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIHN0cmljdE1vZGUsIGRlYnVn
Z2VyTW9kZSwgZXJyb3IsIGV2YWxDb250ZXh0VHlwZSwgdmFyaWFibGVzVW5kZXJURFopOwogCiAg
ICAgaWYgKGhhc0RlYnVnZ2VyKCkpCiAgICAgICAgIGRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChj
YWxsRnJhbWUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwg
ZXJyb3IubWVzc2FnZSgpKTsKQEAgLTEyNjYsNyArMTI1Niw3IEBAIFVubGlua2VkTW9kdWxlUHJv
Z3JhbUNvZGVCbG9jayogSlNHbG9iYWxPYmplY3Q6OmNyZWF0ZU1vZHVsZVByb2dyYW1Db2RlQmxv
Y2soQ2FsCiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CiAgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSA9IGhhc0ludGVyYWN0aXZlRGVidWdnZXIoKSA/IERlYnVnZ2VyT24gOiBEZWJ1Z2dlck9m
ZjsKICAgICBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2Nr
ID0gdm0oKS5jb2RlQ2FjaGUoKS0+Z2V0TW9kdWxlUHJvZ3JhbUNvZGVCbG9jaygKLSAgICAgICAg
dm0oKSwgcnVudGltZUZsYWdzKCksIGV4ZWN1dGFibGUsIGV4ZWN1dGFibGUtPnNvdXJjZSgpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCBkZWJ1Z2dlck1vZGUsIGVycm9yKTsKKyAg
ICAgICAgdm0oKSwgZXhlY3V0YWJsZSwgZXhlY3V0YWJsZS0+c291cmNlKCksIEpTUGFyc2VyQnVp
bHRpbk1vZGU6Ok5vdEJ1aWx0aW4sIGRlYnVnZ2VyTW9kZSwgZXJyb3IpOwogCiAgICAgaWYgKGhh
c0RlYnVnZ2VyKCkpCiAgICAgICAgIGRlYnVnZ2VyKCktPnNvdXJjZVBhcnNlZChjYWxsRnJhbWUs
IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnByb3ZpZGVyKCksIGVycm9yLmxpbmUoKSwgZXJyb3IubWVz
c2FnZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDBkNWU5ZDY1YjY5M2JhOGZhODBiMzMzMWFhNjlhNGU3NGQ5NmExNTQuLmU5NTIz
NDJlOGNiOTMxOTc0ZDIwMjFmMTZlNmY3ZmYyMTg4ODdkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNTYsNyArNTYsNiBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI7CiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgQXJyYXlQcm90b3R5cGU7Ci1jbGFzcyBBc3luY0Z1bmN0aW9uUHJvdG90eXBlOwogY2xh
c3MgQm9vbGVhblByb3RvdHlwZTsKIGNsYXNzIENvbnNvbGVDbGllbnQ7CiBjbGFzcyBEZWJ1Z2dl
cjsKQEAgLTI1Nyw3ICsyNTYsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBXcml0ZUJhcnJpZXI8T2JqZWN0UHJvdG90eXBl
PiBtX29iamVjdFByb3RvdHlwZTsKICAgICBXcml0ZUJhcnJpZXI8RnVuY3Rpb25Qcm90b3R5cGU+
IG1fZnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEFycmF5UHJvdG90eXBlPiBt
X2FycmF5UHJvdG90eXBlOwotICAgIFdyaXRlQmFycmllcjxBc3luY0Z1bmN0aW9uUHJvdG90eXBl
PiBtX2FzeW5jRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPFJlZ0V4cFByb3Rv
dHlwZT4gbV9yZWdFeHBQcm90b3R5cGU7CiAgICAgV3JpdGVCYXJyaWVyPEl0ZXJhdG9yUHJvdG90
eXBlPiBtX2l0ZXJhdG9yUHJvdG90eXBlOwogICAgIFdyaXRlQmFycmllcjxHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZT4gbV9nZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTsKQEAgLTI5OSw3ICsy
OTcsNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBQcm9wZXJ0eU9mZnNldCBtX2Z1bmN0aW9uTmFtZU9mZnNldDsKICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3ByaXZhdGVOYW1lU3RydWN0dXJlOwogICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fcmVnRXhwU3RydWN0dXJlOwotICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYXN5bmNGdW5jdGlvblN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKQEAgLTUwNCw3ICs1MDEsNiBAQCBj
bGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsK
ICAgICBPYmplY3RQcm90b3R5cGUqIG9iamVjdFByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b2JqZWN0UHJvdG90eXBlLmdldCgpOyB9CiAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9u
UHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKTsgfQog
ICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJy
YXlQcm90b3R5cGUuZ2V0KCk7IH0KLSAgICBBc3luY0Z1bmN0aW9uUHJvdG90eXBlKiBhc3luY0Z1
bmN0aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpOyB9CiAgICAgSlNPYmplY3QqIGJvb2xlYW5Qcm90b3R5cGUoKSBjb25zdCB7IHJldHVy
biBtX2Jvb2xlYW5PYmplY3RTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOyB9CiAgICAgU3RyaW5n
UHJvdG90eXBlKiBzdHJpbmdQcm90b3R5cGUoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1Byb3Rv
dHlwZS5nZXQoKTsgfQogICAgIFN5bWJvbFByb3RvdHlwZSogc3ltYm9sUHJvdG90eXBlKCkgY29u
c3QgeyByZXR1cm4gbV9zeW1ib2xQcm90b3R5cGUuZ2V0KCk7IH0KQEAgLTU3Myw3ICs1NjksNiBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICBTdHJ1Y3R1cmUqIHByaXZhdGVOYW1lU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4g
bV9wcml2YXRlTmFtZVN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogbWFwU3RydWN0
dXJlKCkgY29uc3QgeyByZXR1cm4gbV9tYXBTdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1
cmUqIHJlZ0V4cFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVnRXhwU3RydWN0dXJlLmdl
dCgpOyB9Ci0gICAgU3RydWN0dXJlKiBhc3luY0Z1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hc3luY0Z1bmN0aW9uU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBn
ZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJhdG9yRnVu
Y3Rpb25TdHJ1Y3R1cmUuZ2V0KCk7IH0KICAgICBTdHJ1Y3R1cmUqIHNldFN0cnVjdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc2V0U3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSog
c3RyaW5nT2JqZWN0U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmdPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L01vZHVsZUxvYWRlck9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
b2R1bGVMb2FkZXJPYmplY3QuY3BwCmluZGV4IDU1NTVkMGIxNzI4MjI0MjUzMGQ5YzBhZDI4OTNj
OTQ4MGU5MjhhYjEuLjIwYTRhNmE1ZmQ5YjhmZmYyOTUxZjExMTA0OGQyZDdkMjIzYWU2NjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01vZHVsZUxvYWRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTW9kdWxlTG9hZGVyT2Jq
ZWN0LmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bW9kdWxlTG9hZGVyT2JqZWN0UGFyc2VNb2R1bGUoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgUGFy
c2VyRXJyb3IgZXJyb3I7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBt
b2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZt
LCBleGVjLT52bUVudHJ5R2xvYmFsT2JqZWN0KCktPnJ1bnRpbWVGbGFncygpLCBzb3VyY2VDb2Rl
LCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW4sCisgICAgICAg
ICZ2bSwgc291cmNlQ29kZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RC
dWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VN
b2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsK
IAogICAgIGlmIChlcnJvci5pc1ZhbGlkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1J1bnRpbWVGbGFncy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUnVudGltZUZsYWdzLmgKaW5kZXggMjVhNzc3YzhjNjU4ZTFkZmQ5Nzk1YjQ0MWE1MWEx
YTdjZmY0Nzc1Ni4uOGNkMzBjNmRhNTIzYWJkZDFmNzQ0ODI0MGRkNTgwYzlkYmY5NDk0MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZUZsYWdzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZUZsYWdzLmgKQEAgLTMwLDkg
KzMwLDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLS8vIG1hY3JvKG5hbWUsIGZsYWdOYW1lLCBp
c0VuYWJsZWRGbGFnKQotI2RlZmluZSBKU0NfUlVOVElNRV9GTEFHKG1hY3JvKSBcCi0gICAgbWFj
cm8oQXN5bmNBd2FpdEVuYWJsZWQsIHRydWUpCisvLyBtYWNybyhuYW1lLCBpc0VuYWJsZWRGbGFn
KQorI2RlZmluZSBKU0NfUlVOVElNRV9GTEFHKG1hY3JvKQogCiBjbGFzcyBSdW50aW1lRmxhZ3Mg
ewogcHJpdmF0ZToKQEAgLTkxLDE2ICs5MCw2IEBAIGNsYXNzIFJ1bnRpbWVGbGFncyB7CiAgICAg
ICAgICk7CiAgICAgfQogCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJ1bnRpbWVGbGFncyYg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mbGFncyA9PSBvdGhlci5tX2Zs
YWdzOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSdW50aW1lRmxhZ3MmIG90
aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZmxhZ3MgIT0gb3RoZXIubV9mbGFn
czsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9mbGFnczsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LWJhc2lj
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1iYXNp
Yy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RmNzljN2Y1ODY5ODRlZTkzNDJl
MTQxZmU1Mjk5N2FhMTM0Zjg1Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0
LWJhc2ljLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjk5ICswLDAgQEAKLWZ1bmN0aW9uIHNob3Vs
ZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgewotICAgIGlmIChtc2cgPT09IHZvaWQgMCkKLSAg
ICAgICAgbXNnID0gIiI7Ci0gICAgZWxzZQotICAgICAgICBtc2cgPSAiIGZvciAiICsgbXNnOwot
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJh
ZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
KTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwgcnVuLCBtc2cpIHsKLSAg
ICBsZXQgYWN0dWFsOwotICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwotICAgIHJ1bigpLnRoZW4o
ZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCi0gICAgICAgICAgICAgICBmdW5j
dGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVycm9yOyB9KTsKLSAgICBk
cmFpbk1pY3JvdGFza3MoKTsKLQotICAgIGlmIChoYWRFcnJvcikKLSAgICAgICAgdGhyb3cgYWN0
dWFsOwotCi0gICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNnKTsKLX0KLQotZnVuY3Rp
b24gc2hvdWxkVGhyb3cocnVuLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKLSAgICBsZXQgYWN0dWFs
OwotICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwotCi0gICAgdHJ5IHsKLSAgICAgICAgYWN0dWFs
ID0gcnVuKCk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBoYWRFcnJvciA9IHRydWU7Ci0g
ICAgICAgIGFjdHVhbCA9IGU7Ci0gICAgfQotCi0gICAgaWYgKCFoYWRFcnJvcikKLSAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJv
clR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOwotICAgIGlmICghKGFjdHVhbCBp
bnN0YW5jZW9mIGVycm9yVHlwZSkpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWNlZCAi
ICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIgLCBidXQgdGhyZXcg
JyIgKyBhY3R1YWwgKyAiJyIpOwotICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFs
Lm1lc3NhZ2UgIT09IG1lc3NhZ2UpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
IiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsg
YWN0dWFsLm1lc3NhZ2UgKyAiJyIpOwotfQotCi1mdW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1
biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7Ci0gICAgbGV0IGFjdHVhbDsKLSAgICB2YXIgaGFkRXJy
b3IgPSBmYWxzZTsKLSAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZh
bHVlOyB9LAotICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVl
OyBhY3R1YWwgPSBlcnJvcjsgfSk7Ci0gICAgZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICBpZiAo
IWhhZEVycm9yKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkICIgKyBydW4gKyAi
KCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0IGRpZCBub3QgdGhyb3cuIik7
Ci0gICAgaWYgKCEoYWN0dWFsIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUu
bmFtZSArICIsIGJ1dCB0aHJldyAnIiArIGFjdHVhbCArICInIik7Ci0gICAgaWYgKG1lc3NhZ2Ug
IT09IHZvaWQgMCAmJiBhY3R1YWwubWVzc2FnZSAhPT0gbWVzc2FnZSkKLSAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICciICsgbWVzc2FnZSAr
ICInLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwubWVzc2FnZSArICInIik7Ci19Ci0KLWZ1bmN0aW9u
IHNob3VsZFRocm93U3ludGF4RXJyb3Ioc3RyLCBtZXNzYWdlKSB7Ci0gICAgdHJ5IHsKLSAgICAg
ICAgZXZhbChzdHIpOwotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3Ry
ICsgImAgdG8gdGhyb3cgYSBTeW50YXhFcnJvciwgYnV0IGRpZCBub3QgdGhyb3cuIikKLSAgICB9
IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlLmNvbnN0cnVjdG9yICE9PSBTeW50YXhFcnJvcikK
LSAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgYCIgKyBzdHIgKyAiYCB0byB0
aHJvdyBhIFN5bnRheEVycm9yLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsKLSAgICAgICAgaWYg
KG1lc3NhZ2UgIT09IHZvaWQgMCAmJiBlLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCi0gICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGAiICsgc3RyICsgImAgdG8gdGhyb3cgU3ludGF4
RXJyb3I6ICciICsgbWVzc2FnZSArICInLCBidXQgdGhyZXcgJyIgKyBlICsgIiciKTsKLSAgICB9
Ci19Ci0KLS8vIERvIG5vdCBpbnN0YWxsIGBBc3luY0Z1bmN0aW9uYCBjb25zdHJ1Y3RvciBvbiBn
bG9iYWwgb2JqZWN0Ci1zaG91bGRCZSh1bmRlZmluZWQsIHRoaXMuQXN5bmNGdW5jdGlvbik7Ci1s
ZXQgQXN5bmNGdW5jdGlvbiA9IChhc3luYyBmdW5jdGlvbigpIHt9KS5jb25zdHJ1Y3RvcjsKLQot
Ly8gTGV0IGZ1bmN0aW9uUHJvdG90eXBlIGJlIHRoZSBpbnRyaW5zaWMgb2JqZWN0ICVBc3luY0Z1
bmN0aW9uUHJvdG90eXBlJS4KLWFzeW5jIGZ1bmN0aW9uIGFzeW5jRnVuY3Rpb25Gb3JQcm90bygp
IHt9Ci1zaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlw
ZU9mKGFzeW5jRnVuY3Rpb25Gb3JQcm90bykpOwotc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90
b3R5cGUsIE9iamVjdC5nZXRQcm90b3R5cGVPZihhc3luYyBmdW5jdGlvbigpIHt9KSk7Ci1zaG91
bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0LmdldFByb3RvdHlwZU9mKGFzeW5j
ICgpID0+IHt9KSk7Ci1zaG91bGRCZShBc3luY0Z1bmN0aW9uLnByb3RvdHlwZSwgT2JqZWN0Lmdl
dFByb3RvdHlwZU9mKHsgYXN5bmMgbWV0aG9kKCkge30gfS5tZXRob2QpKTsKLQotLy8gRklYTUU6
IEFzeW5jRnVuY3Rpb24gY29uc3RydWN0b3Igc2hvdWxkIGJ1aWxkIGZ1bmN0aW9ucyB3aXRoIGNv
cnJlY3QgcHJvdG90eXBlLgotLy8gc2hvdWxkQmUoQXN5bmNGdW5jdGlvbi5wcm90b3R5cGUsIE9i
amVjdC5nZXRQcm90b3R5cGVPZihBc3luY0Z1bmN0aW9uKCkpKTsKLQotLy8gQXN5bmNGdW5jdGlv
bkNyZWF0ZSBkb2VzIG5vdCBwcm9kdWNlIGFuIG9iamVjdCB3aXRoIGEgUHJvdG90eXBlCi1zaG91
bGRCZSh1bmRlZmluZWQsIGFzeW5jRnVuY3Rpb25Gb3JQcm90by5wcm90b3R5cGUpOwotc2hvdWxk
QmUoZmFsc2UsIGFzeW5jRnVuY3Rpb25Gb3JQcm90by5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBl
IikpOwotc2hvdWxkQmUodW5kZWZpbmVkLCAoYXN5bmMgZnVuY3Rpb24oKSB7fSkucHJvdG90eXBl
KTsKLXNob3VsZEJlKGZhbHNlLCAoYXN5bmMgZnVuY3Rpb24oKSB7fSkuaGFzT3duUHJvcGVydHko
InByb3RvdHlwZSIpKTsKLXNob3VsZEJlKHVuZGVmaW5lZCwgKGFzeW5jKCkgPT4ge30pLnByb3Rv
dHlwZSk7Ci1zaG91bGRCZShmYWxzZSwgKGFzeW5jKCkgPT4ge30pLmhhc093blByb3BlcnR5KCJw
cm90b3R5cGUiKSk7Ci1zaG91bGRCZSh1bmRlZmluZWQsICh7IGFzeW5jIG1ldGhvZCgpIHt9IH0p
Lm1ldGhvZC5wcm90b3R5cGUpOwotc2hvdWxkQmUoZmFsc2UsICh7IGFzeW5jIG1ldGhvZCgpIHt9
IH0pLm1ldGhvZC5oYXNPd25Qcm9wZXJ0eSgicHJvdG90eXBlIikpOwotc2hvdWxkQmUodW5kZWZp
bmVkLCBBc3luY0Z1bmN0aW9uKCkucHJvdG90eXBlKTsKLXNob3VsZEJlKGZhbHNlLCBBc3luY0Z1
bmN0aW9uKCkuaGFzT3duUHJvcGVydHkoInByb3RvdHlwZSIpKTsKLQotLy8gQXN5bmNGdW5jdGlv
bi5wcm90b3R5cGVbIEBAdG9TdHJpbmdUYWcgXQotdmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEFzeW5jRnVuY3Rpb24ucHJvdG90eXBlLCBTeW1ib2wudG9T
dHJpbmdUYWcpOwotc2hvdWxkQmUoIkFzeW5jRnVuY3Rpb24iLCBkZXNjcmlwdG9yLnZhbHVlKTsK
LXNob3VsZEJlKGZhbHNlLCBkZXNjcmlwdG9yLmVudW1lcmFibGUpOwotc2hvdWxkQmUoZmFsc2Us
IGRlc2NyaXB0b3Iud3JpdGFibGUpOwotc2hvdWxkQmUodHJ1ZSwgZGVzY3JpcHRvci5jb25maWd1
cmFibGUpOwotCi1zaG91bGRCZSgxLCBBc3luY0Z1bmN0aW9uLmxlbmd0aCk7Ci0KLS8vIExldCBG
IGJlICEgRnVuY3Rpb25BbGxvY2F0ZShmdW5jdGlvblByb3RvdHlwZSwgU3RyaWN0LCAibm9uLWNv
bnN0cnVjdG9yIikKLWFzeW5jIGZ1bmN0aW9uIGFzeW5jTm9uQ29uc3RydWN0b3JEZWNsKCkge30K
LXNob3VsZFRocm93KCgpID0+IG5ldyBhc3luY05vbkNvbnN0cnVjdG9yRGVjbCgpLCBUeXBlRXJy
b3IpOwotc2hvdWxkVGhyb3coKCkgPT4gbmV3IChhc3luYyBmdW5jdGlvbigpIHt9KSwgVHlwZUVy
cm9yKTsKLXNob3VsZFRocm93KCgpID0+IG5ldyAoeyBhc3luYyBub25Db25zdHJ1Y3RvcigpIHt9
IH0pLm5vbkNvbnN0cnVjdG9yKCksIFR5cGVFcnJvcik7Ci1zaG91bGRUaHJvdygoKSA9PiBuZXcg
KCgpID0+ICJub3QgYSBjb25zdHJ1Y3RvciEiKSwgVHlwZUVycm9yKTsKLXNob3VsZFRocm93KCgp
ID0+IG5ldyAoQXN5bmNGdW5jdGlvbigpKSwgVHlwZUVycm9yKTsKLQotLy8gTm9ybWFsIGNvbXBs
ZXRpb24KLWFzeW5jIGZ1bmN0aW9uIGFzeW5jRGVjbCgpIHsgcmV0dXJuICJ0ZXN0IjsgfQotc2hv
dWxkQmVBc3luYygidGVzdCIsIGFzeW5jRGVjbCk7Ci1zaG91bGRCZUFzeW5jKCJ0ZXN0MiIsIGFz
eW5jIGZ1bmN0aW9uKCkgeyByZXR1cm4gInRlc3QyIjsgfSk7Ci1zaG91bGRCZUFzeW5jKCJ0ZXN0
MyIsIGFzeW5jICgpID0+ICJ0ZXN0MyIpOwotc2hvdWxkQmVBc3luYygidGVzdDQiLCAoKSA9PiAo
eyBhc3luYyBmKCkgeyByZXR1cm4gInRlc3Q0IjsgfSB9KS5mKCkpOwotCi1jbGFzcyBNeUVycm9y
IGV4dGVuZHMgRXJyb3Ige307Ci0KLS8vIFRocm93IGNvbXBsZXRpb24KLWFzeW5jIGZ1bmN0aW9u
IGFzeW5jRGVjbFRocm93ZXIoZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfQotc2hvdWxkVGhy
b3dBc3luYygoKSA9PiBhc3luY0RlY2xUaHJvd2VyKCJib29tISIpLCBNeUVycm9yLCAiYm9vbSEi
KTsKLXNob3VsZFRocm93QXN5bmMoKCkgPT4gKGFzeW5jIGZ1bmN0aW9uKGUpIHsgdGhyb3cgbmV3
IE15RXJyb3IoZSk7IH0pKCJib29tISEhIiksIE15RXJyb3IsICJib29tISEhIik7Ci1zaG91bGRU
aHJvd0FzeW5jKCgpID0+IChhc3luYyBlID0+IHsgdGhyb3cgbmV3IE15RXJyb3IoZSkgfSkoImJv
b20hISIpLCBNeUVycm9yLCAiYm9vbSEhIik7Ci1zaG91bGRUaHJvd0FzeW5jKCgpID0+ICh7IGFz
eW5jIHRocm93ZXIoZSkgeyB0aHJvdyBuZXcgTXlFcnJvcihlKTsgfSB9KS50aHJvd2VyKCJib29t
ISEhISIpLCBNeUVycm9yLCAiYm9vbSEhISEiKTsKLQotZnVuY3Rpb24gcmVzb2x2ZUxhdGVyKHZh
bHVlKSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpOyB9Ci1mdW5jdGlvbiByZWplY3RM
YXRlcihlcnJvcikgeyByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpOyB9Ci0KLS8vIFJlc3Vt
ZSBhZnRlciBOb3JtYWwgY29tcGxldGlvbgotdmFyIGxvZyA9IFtdOwotYXN5bmMgZnVuY3Rpb24g
cmVzdW1lQWZ0ZXJOb3JtYWwodmFsdWUpIHsKLSAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVl
KTsKLSAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwotICAgIGxvZy5w
dXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKLSAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2
YWx1ZSArIDEpOwotICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKLSAgICByZXR1cm4g
dmFsdWUgKyAxOwotfQotCi1zaG91bGRCZUFzeW5jKDQsICgpID0+IHJlc3VtZUFmdGVyTm9ybWFs
KDEpKTsKLXNob3VsZEJlKCJzdGFydDoxIHJlc3VtZToyIHJlc3VtZTozIiwgbG9nLmpvaW4oIiAi
KSk7Ci0KLXZhciBPID0gewotICAgIGFzeW5jIHJlc3VtZUFmdGVyTm9ybWFsKHZhbHVlKSB7Ci0g
ICAgICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOwotICAgICAgICB2YWx1ZSA9IGF3YWl0
IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwotICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyB2
YWx1ZSk7Ci0gICAgICAgIHZhbHVlID0gYXdhaXQgcmVzb2x2ZUxhdGVyKHZhbHVlICsgMSk7Ci0g
ICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHZhbHVl
ICsgMTsKLSAgICB9Ci19OwotbG9nID0gW107Ci1zaG91bGRCZUFzeW5jKDUsICgpID0+IE8ucmVz
dW1lQWZ0ZXJOb3JtYWwoMikpOwotc2hvdWxkQmUoInN0YXJ0OjIgcmVzdW1lOjMgcmVzdW1lOjQi
LCBsb2cuam9pbigiICIpKTsKLQotdmFyIHJlc3VtZUFmdGVyTm9ybWFsQXJyb3cgPSBhc3luYyAo
dmFsdWUpID0+IHsKLSAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKLSAgICB2YWx1ZSA9
IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwotICAgIGxvZy5wdXNoKCJyZXN1bWU6IiAr
IHZhbHVlKTsKLSAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwotICAg
IGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWUgKyAxOwotfTsK
LWxvZyA9IFtdOwotc2hvdWxkQmVBc3luYyg2LCAoKSA9PiByZXN1bWVBZnRlck5vcm1hbEFycm93
KDMpKTsKLXNob3VsZEJlKCJzdGFydDozIHJlc3VtZTo0IHJlc3VtZTo1IiwgbG9nLmpvaW4oIiAi
KSk7Ci0KLXZhciByZXN1bWVBZnRlck5vcm1hbEV2YWwgPSBBc3luY0Z1bmN0aW9uKCJ2YWx1ZSIs
IGAKLSAgICBsb2cucHVzaCgic3RhcnQ6IiArIHZhbHVlKTsKLSAgICB2YWx1ZSA9IGF3YWl0IHJl
c29sdmVMYXRlcih2YWx1ZSArIDEpOwotICAgIGxvZy5wdXNoKCJyZXN1bWU6IiArIHZhbHVlKTsK
LSAgICB2YWx1ZSA9IGF3YWl0IHJlc29sdmVMYXRlcih2YWx1ZSArIDEpOwotICAgIGxvZy5wdXNo
KCJyZXN1bWU6IiArIHZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWUgKyAxOwotYCk7Ci1sb2cgPSBb
XTsKLXNob3VsZEJlQXN5bmMoNywgKCkgPT4gcmVzdW1lQWZ0ZXJOb3JtYWxFdmFsKDQpKTsKLXNo
b3VsZEJlKCJzdGFydDo0IHJlc3VtZTo1IHJlc3VtZTo2IiwgbG9nLmpvaW4oIiAiKSk7Ci0KLS8v
IFJlc3VtZSBhZnRlciBUaHJvdyBjb21wbGV0aW9uCi1hc3luYyBmdW5jdGlvbiByZXN1bWVBZnRl
clRocm93KHZhbHVlKSB7Ci0gICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2YWx1ZSk7Ci0gICAgdHJ5
IHsKLSAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cxIik7Ci0gICAgfSBj
YXRjaCAoZSkgewotICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKLSAgICB9Ci0gICAg
dHJ5IHsKLSAgICAgICAgdmFsdWUgPSBhd2FpdCByZWplY3RMYXRlcigidGhyb3cyIik7Ci0gICAg
fSBjYXRjaCAoZSkgewotICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHZhbHVlICsgMTsKLX0KLQotbG9nID0gW107Ci1zaG91bGRCZUFzeW5jKDIsICgp
ID0+IHJlc3VtZUFmdGVyVGhyb3coMSkpOwotc2hvdWxkQmUoInN0YXJ0OjEgcmVzdW1lOnRocm93
MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7Ci0KLXZhciBPID0gewotICAgIGFzeW5j
IHJlc3VtZUFmdGVyVGhyb3codmFsdWUpIHsKLSAgICAgICAgbG9nLnB1c2goInN0YXJ0OiIgKyB2
YWx1ZSk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExh
dGVyKCJ0aHJvdzEiKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgbG9nLnB1
c2goInJlc3VtZToiICsgZSk7Ci0gICAgICAgIH0KLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IHZhbHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOwotICAgICAgICB9IGNhdGNoIChl
KSB7Ci0gICAgICAgICAgICBsb2cucHVzaCgicmVzdW1lOiIgKyBlKTsKLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gdmFsdWUgKyAxOwotICAgIH0KLX0KLWxvZyA9IFtdOwotc2hvdWxkQmVBc3lu
YygzLCAoKSA9PiBPLnJlc3VtZUFmdGVyVGhyb3coMikpOwotc2hvdWxkQmUoInN0YXJ0OjIgcmVz
dW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7Ci0KLXZhciByZXN1bWVB
ZnRlclRocm93QXJyb3cgPSBhc3luYyAodmFsdWUpID0+IHsKLSAgICBsb2cucHVzaCgic3RhcnQ6
IiArIHZhbHVlKTsKLSAgICB0cnkgewotICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExhdGVy
KCJ0aHJvdzEiKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGxvZy5wdXNoKCJyZXN1bWU6
IiArIGUpOwotICAgIH0KLSAgICB0cnkgewotICAgICAgICB2YWx1ZSA9IGF3YWl0IHJlamVjdExh
dGVyKCJ0aHJvdzIiKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGxvZy5wdXNoKCJyZXN1
bWU6IiArIGUpOwotICAgIH0KLSAgICByZXR1cm4gdmFsdWUgKyAxOwotfTsKLWxvZyA9IFtdOwot
c2hvdWxkQmVBc3luYyg0LCAoKSA9PiByZXN1bWVBZnRlclRocm93QXJyb3coMykpOwotc2hvdWxk
QmUoInN0YXJ0OjMgcmVzdW1lOnRocm93MSByZXN1bWU6dGhyb3cyIiwgbG9nLmpvaW4oIiAiKSk7
Ci0KLXZhciByZXN1bWVBZnRlclRocm93RXZhbCA9IEFzeW5jRnVuY3Rpb24oInZhbHVlIiwgYAot
ICAgIGxvZy5wdXNoKCJzdGFydDoiICsgdmFsdWUpOwotICAgIHRyeSB7Ci0gICAgICAgIHZhbHVl
ID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MSIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAg
ICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7Ci0gICAgfQotICAgIHRyeSB7Ci0gICAgICAgIHZh
bHVlID0gYXdhaXQgcmVqZWN0TGF0ZXIoInRocm93MiIpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgbG9nLnB1c2goInJlc3VtZToiICsgZSk7Ci0gICAgfQotICAgIHJldHVybiB2YWx1ZSAr
IDE7Ci1gKTsKLWxvZyA9IFtdOwotc2hvdWxkQmVBc3luYyg1LCAoKSA9PiByZXN1bWVBZnRlclRo
cm93RXZhbCg0KSk7Ci1zaG91bGRCZSgic3RhcnQ6NCByZXN1bWU6dGhyb3cxIHJlc3VtZTp0aHJv
dzIiLCBsb2cuam9pbigiICIpKTsKLQotLy8gTWV0aG9vZERlZmluaXRpb24gU3ludGF4RXJyb3Jz
Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyBmb28gOiB0cnVlIH07
IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1
bWVudCBsaXN0LiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMg
Zm9vID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRo
ZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBv
YmogPSB7IGFzeW5jIGZvbyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0
ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIGZvbyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBF
eHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwotCi1zaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAwIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVk
IHRva2VuICc6Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsK
LXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIDAgPSB0cnVlIH07Iiwg
IlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVu
dCBsaXN0LiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgMCAs
IGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBm
b3IgYXJndW1lbnQgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7
IGFzeW5jIDAgfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNp
cyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKLQotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9i
aiA9IHsgYXN5bmMgJ2ZvbycgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBl
Y3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwotc2hvdWxkVGhyb3dTeW50
YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwot
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgJ2ZvbycgLCBiYXIgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgcGFyZW50aGVzaXMgZm9yIGFyZ3Vt
ZW50IGxpc3QuIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0geyBhc3luYyAn
Zm9vJyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZv
ciBhcmd1bWVudCBsaXN0LiIpOwotCi1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgb2JqID0g
eyBhc3luYyBbJ2ZvbyddIDogdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRva2VuICc6Jy4gRXhwZWN0
ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBvYmogPSB7IGFzeW5jIFsnZm9vJ10gPSB0cnVlIH07IiwgIlVuZXhwZWN0ZWQg
dG9rZW4gJz0nLiBFeHBlY3RlZCBhIHBhcmVudGhlc2lzIGZvciBhcmd1bWVudCBsaXN0LiIpOwot
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIG9iaiA9IHsgYXN5bmMgWydmb28nXSAsIGJhciB9
OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNpcyBmb3IgYXJn
dW1lbnQgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBvYmogPSB7IGFzeW5j
IFsnZm9vJ10gfSIsICJVbmV4cGVjdGVkIHRva2VuICd9Jy4gRXhwZWN0ZWQgYSBwYXJlbnRoZXNp
cyBmb3IgYXJndW1lbnQgbGlzdC4iKTsKLQotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3Mg
QyB7IGFzeW5jIGZvbyA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicuIEV4cGVjdGVk
IGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIp
Owotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIGZvbyA9IHRydWUgfTsi
LCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBh
IGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiY2xhc3MgQyB7IGFzeW5jIGZvbyAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4g
RXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVy
IGxpc3QuIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgZm9vIH0i
LCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBh
IGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwotCi1zaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJjbGFzcyBDIHsgYXN5bmMgMCA6IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnOicu
IEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRl
ciBsaXN0LiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIDAgPSB0
cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBi
ZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAwICwgYmFyIH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4g
JywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJh
bWV0ZXIgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3luYyAw
IH0iLCAiVW5leHBlY3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9y
ZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwotCi1zaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgJ2ZvbycgOiB0cnVlIH07IiwgIlVuZXhwZWN0ZWQgdG9r
ZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBw
YXJhbWV0ZXIgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImNsYXNzIEMgeyBhc3lu
YyAnZm9vJyA9IHRydWUgfTsiLCAiVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGFuIG9w
ZW5pbmcgJygnIGJlZm9yZSBhIGFzeW5jIG1ldGhvZCdzIHBhcmFtZXRlciBsaXN0LiIpOwotc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jICdmb28nICwgYmFyIH07IiwgIlVu
ZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3lu
YyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImNs
YXNzIEMgeyBhc3luYyAnZm9vJyB9IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBh
biBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsK
LQotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiY2xhc3MgQyB7IGFzeW5jIFsnZm9vJ10gOiB0cnVl
IH07IiwgIlVuZXhwZWN0ZWQgdG9rZW4gJzonLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZv
cmUgYSBhc3luYyBtZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKLXNob3VsZFRocm93U3ludGF4
RXJyb3IoImNsYXNzIEMgeyBhc3luYyBbJ2ZvbyddID0gdHJ1ZSB9OyIsICJVbmV4cGVjdGVkIHRv
a2VuICc9Jy4gRXhwZWN0ZWQgYW4gb3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3Mg
cGFyYW1ldGVyIGxpc3QuIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5
bmMgWydmb28nXSAsIGJhciB9OyIsICJVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4g
b3BlbmluZyAnKCcgYmVmb3JlIGEgYXN5bmMgbWV0aG9kJ3MgcGFyYW1ldGVyIGxpc3QuIik7Ci1z
aG91bGRUaHJvd1N5bnRheEVycm9yKCJjbGFzcyBDIHsgYXN5bmMgWydmb28nXSB9IiwgIlVuZXhw
ZWN0ZWQgdG9rZW4gJ30nLiBFeHBlY3RlZCBhbiBvcGVuaW5nICcoJyBiZWZvcmUgYSBhc3luYyBt
ZXRob2QncyBwYXJhbWV0ZXIgbGlzdC4iKTsKLQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXN5bmMtYXdhaXQtbW9kdWxlLXJl
c2VydmVkLXdvcmQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMjU2MmNlZTcw
NmVkZGU5NGE5Y2ZiZjM5MzFiMjI4Mzg2ZmQ3NmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9h
c3luYy1hd2FpdC1tb2R1bGUtcmVzZXJ2ZWQtd29yZC5qcworKysgL2Rldi9udWxsCkBAIC0xLDY5
ICswLDAgQEAKLWZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgewotICAg
IHZhciBlcnJvclRocm93biA9IGZhbHNlOwotICAgIHZhciBlcnJvciA9IG51bGw7Ci0gICAgdHJ5
IHsKLSAgICAgICAgZnVuYygpOwotICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZXJyb3JUaHJv
d24gPSB0cnVlOwotICAgICAgICBlcnJvciA9IGU7Ci0gICAgfQotICAgIGlmICghZXJyb3JUaHJv
d24pCi0gICAgICAgIHRocm93IG5ldyBFcnJvcignbm90IHRocm93bicpOwotICAgIGlmIChTdHJp
bmcoZXJyb3IpICE9PSBlcnJvck1lc3NhZ2UpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFk
IGVycm9yOiAke1N0cmluZyhlcnJvcil9YCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrTW9kdWxlU3lu
dGF4RXJyb3Ioc291cmNlLCBlcnJvck1lc3NhZ2UpIHsKLSAgICBzaG91bGRUaHJvdygoKSA9PiBj
aGVja01vZHVsZVN5bnRheChzb3VyY2UpLCBlcnJvck1lc3NhZ2UpOwotfQotCi1jaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCi12YXIgYXdhaXQ7Ci1gLCBgU3ludGF4RXJyb3I6IENh
bid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhIG1vZHVsZS46MmApOwotY2hl
Y2tNb2R1bGVTeW50YXhFcnJvcihgCi1leHBvcnQgdmFyIGF3YWl0OwotYCwgYFN5bnRheEVycm9y
OiBDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsK
LWNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKLWxldCBhd2FpdDsKLWAsIGBTeW50
YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4g
YSBtb2R1bGUuOjJgKTsKLWNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKLWV4cG9y
dCBsZXQgYXdhaXQ7Ci1gLCBgU3ludGF4RXJyb3I6IENhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGEgbW9kdWxlLjoyYCk7Ci1jaGVja01vZHVsZVN5bnRheEVy
cm9yKFN0cmluZy5yYXdgCi1jb25zdCBhd2FpdCA9IDEKLWAsIGBTeW50YXhFcnJvcjogQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsK
LWNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKLWV4cG9ydCBjb25zdCBhd2FpdCA9
IDEKLWAsIGBTeW50YXhFcnJvcjogQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlh
YmxlIG5hbWUgaW4gYSBtb2R1bGUuOjJgKTsKLQotY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJp
bmcucmF3YAotZnVuY3Rpb24gYXdhaXQoKSB7fQotYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgZGVj
bGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxlLjoyYCk7Ci1jaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCi1mdW5jdGlvbiogYXdhaXQoKSB7fQotYCwgYFN5bnRh
eEVycm9yOiBDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGEgbW9kdWxl
LjoyYCk7Ci1jaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCi1hc3luYyBmdW5jdGlv
biBhd2FpdCgpIHt9Ci1gLCBgU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5h
bWVkICdhd2FpdCcgaW4gYSBtb2R1bGUuOjJgKTsKLQotY2hlY2tNb2R1bGVTeW50YXhFcnJvcihT
dHJpbmcucmF3YAotaW1wb3J0IHthd2FpdH0gZnJvbSAnZm9vJzsKLWAsIGBTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRpbmcgbmFtZS46MmApOwotY2hl
Y2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAotaW1wb3J0IHtmb28gYXMgYXdhaXR9IGZy
b20gJ2Zvbyc7Ci1gLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBv
cnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKLWNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AKLWltcG9ydCAqIGFzIGF3YWl0IGZyb20gJ2Zvbyc7Ci1gLCBgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWUuOjJgKTsKLWNoZWNrTW9k
dWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKLWltcG9ydCBhd2FpdCwge3gsIHksIHp9IGZyb20g
J2Zvbyc7Ci1gLCBgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgJ2F3YWl0JyBhcyBhbiBpbXBvcnRl
ZCBiaW5kaW5nIG5hbWUuOjJgKTsKLWNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
LWltcG9ydCBhd2FpdCwge3gsIHksIHosfSBmcm9tICdmb28nOwotYCwgYFN5bnRheEVycm9yOiBD
YW5ub3QgdXNlICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7Ci1jaGVj
a01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCi1pbXBvcnQgYXdhaXQgZnJvbSAnZm9vJzsK
LWAsIGBTeW50YXhFcnJvcjogQ2Fubm90IHVzZSAnYXdhaXQnIGFzIGFuIGltcG9ydGVkIGJpbmRp
bmcgbmFtZS46MmApOwotY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAotaW1wb3J0
IGF3YWl0LCAqIGFzIGZvbyBmcm9tICdmb28nOwotYCwgYFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
ICdhd2FpdCcgYXMgYW4gaW1wb3J0ZWQgYmluZGluZyBuYW1lLjoyYCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEuanMg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0LW1vemlsbGEu
anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhYzcxYWFkNGM0NWRmM2NmOGIyMmE4
MzRiYTc5YTU4N2M5YTQ5ZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hc3luYy1hd2FpdC1t
b3ppbGxhLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzA0ICswLDAgQEAKLS8qIFRoaXMgU291cmNl
IENvZGUgRm9ybSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGUgTW96aWxsYSBQdWJsaWMK
LSAqIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmli
dXRlZCB3aXRoIHRoaXMKLSAqIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96
Lm9yZy9NUEwvMi4wLy4gKi8KLQotZnVuY3Rpb24gc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwg
bXNnKSB7Ci0gICAgaWYgKG1zZyA9PT0gdm9pZCAwKQotICAgICAgICBtc2cgPSAiIjsKLSAgICBl
bHNlCi0gICAgICAgIG1zZyA9ICIgZm9yICIgKyBtc2c7Ci0gICAgaWYgKGFjdHVhbCAhPT0gZXhw
ZWN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIiArIG1zZyArICI6ICIg
KyBhY3R1YWwgKyAiLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWQpOwotfQotCi1mdW5jdGlvbiBzaG91
bGRCZUFzeW5jKGV4cGVjdGVkLCBydW4sIG1zZykgewotICAgIGxldCBhY3R1YWw7Ci0gICAgdmFy
IGhhZEVycm9yID0gZmFsc2U7Ci0gICAgcnVuKCkudGhlbihmdW5jdGlvbih2YWx1ZSkgeyBhY3R1
YWwgPSB2YWx1ZTsgfSwKLSAgICAgICAgICAgICAgIGZ1bmN0aW9uKGVycm9yKSB7IGhhZEVycm9y
ID0gdHJ1ZTsgYWN0dWFsID0gZXJyb3I7IH0pOwotICAgIGRyYWluTWljcm90YXNrcygpOwotICAg
IGlmIChoYWRFcnJvcikKLSAgICAgICAgdGhyb3cgYWN0dWFsOwotICAgIHNob3VsZEJlKGV4cGVj
dGVkLCBhY3R1YWwsIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93KHJ1biwgZXJyb3JU
eXBlLCBtZXNzYWdlKSB7Ci0gICAgbGV0IGFjdHVhbDsKLSAgICB2YXIgaGFkRXJyb3IgPSBmYWxz
ZTsKLSAgICB0cnkgewotICAgICAgICBhY3R1YWwgPSBydW4oKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKLSAgICAgICAgYWN0dWFsID0gZTsKLSAgICB9Ci0g
ICAgaWYgKCFoYWRFcnJvcikKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCAiICsg
cnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSArICIsIGJ1dCBkaWQgbm90IHRo
cm93LiIpOwotICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCi0gICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWNlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJv
clR5cGUubmFtZSArICIgLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwgKyAiJyIpOwotICAgIGlmICht
ZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09IG1lc3NhZ2UpCi0gICAgICAg
IHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAnIiArIG1l
c3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3NhZ2UgKyAiJyIpOwotfQotCi1m
dW5jdGlvbiBzaG91bGRUaHJvd0FzeW5jKHJ1biwgZXJyb3JUeXBlLCBtZXNzYWdlKSB7Ci0gICAg
bGV0IGFjdHVhbDsKLSAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsKLSAgICBydW4oKS50aGVuKGZ1
bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAotICAgICAgICAgICAgICAgZnVuY3Rp
b24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBlcnJvcjsgfSk7Ci0gICAgZHJh
aW5NaWNyb3Rhc2tzKCk7Ci0gICAgaWYgKCFoYWRFcnJvcikKLSAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZCAiICsgcnVuICsgIigpIHRvIHRocm93ICIgKyBlcnJvclR5cGUubmFtZSAr
ICIsIGJ1dCBkaWQgbm90IHRocm93LiIpOwotICAgIGlmICghKGFjdHVhbCBpbnN0YW5jZW9mIGVy
cm9yVHlwZSkpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIo
KSB0byB0aHJvdyAiICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgdGhyZXcgJyIgKyBhY3R1YWwg
KyAiJyIpOwotICAgIGlmIChtZXNzYWdlICE9PSB2b2lkIDAgJiYgYWN0dWFsLm1lc3NhZ2UgIT09
IG1lc3NhZ2UpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIo
KSB0byB0aHJvdyAnIiArIG1lc3NhZ2UgKyAiJywgYnV0IHRocmV3ICciICsgYWN0dWFsLm1lc3Nh
Z2UgKyAiJyIpOwotfQotCi1mdW5jdGlvbiBhc3NlcnQoY29uZCwgbXNnID0gIiIpIHsKLSAgICBp
ZiAoIWNvbmQpCi0gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpOwotfQotCi1mdW5jdGlvbiBz
aG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgewotICAgIHZhciBoYWRFcnJvciA9
IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIGV2YWwoc3RyKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHsKLSAgICAgICAgICAgIGhh
ZEVycm9yID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmlu
ZyIpCi0gICAgICAgICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9PT0gbWVzc2FnZSwgIkV4cGVj
dGVkICciICsgbWVzc2FnZSArICInIGJ1dCB0aHJldyAnIiArIGUubWVzc2FnZSArICInIik7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgYXNzZXJ0KGhhZEVycm9yLCAiRGlkIG5vdCB0aHJvdyBzeW50
YXggZXJyb3IiKTsKLX0KLQotLy8gc2VtYW50aWNzLmpzCi0oZnVuY3Rpb24gbW96U2VtYW50aWNz
KCkgewotCi1hc3luYyBmdW5jdGlvbiBlbXB0eSgpIHsKLX0KLQotYXN5bmMgZnVuY3Rpb24gc2lt
cGxlUmV0dXJuKCkgewotICAgIHJldHVybiAxOwotfQotCi1hc3luYyBmdW5jdGlvbiBzaW1wbGVB
d2FpdCgpIHsKLSAgICB2YXIgcmVzdWx0ID0gYXdhaXQgMjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi1hc3luYyBmdW5jdGlvbiBzaW1wbGVBd2FpdEFzeW5jKCkgewotICAgIHZhciByZXN1bHQg
PSBhd2FpdCBzaW1wbGVSZXR1cm4oKTsKLSAgICByZXR1cm4gMiArIHJlc3VsdDsKLX0KLQotYXN5
bmMgZnVuY3Rpb24gcmV0dXJuT3RoZXJBc3luYygpIHsKLSAgICByZXR1cm4gMSArIGF3YWl0IHNp
bXBsZUF3YWl0QXN5bmMoKTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gc2ltcGxlVGhyb3dlcigpIHsK
LSAgICB0aHJvdyBuZXcgRXJyb3IoKTsKLX0KLQotYXN5bmMgZnVuY3Rpb24gZGVsZWdhdGVkVGhy
b3dlcigpIHsKLSAgICB2YXIgdmFsID0gYXdhaXQgc2ltcGxlVGhyb3dlcigpOwotICAgIHJldHVy
biB2YWw7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIHRyeUNhdGNoKCkgewotICAgIHRyeSB7Ci0gICAg
ICAgIGF3YWl0IGRlbGVnYXRlZFRocm93ZXIoKTsKLSAgICAgICAgcmV0dXJuICdGQUlMRUQnOwot
ICAgIH0gY2F0Y2ggKF8pIHsKLSAgICAgICAgcmV0dXJuIDU7Ci0gICAgfQotfQotCi1hc3luYyBm
dW5jdGlvbiB0cnlDYXRjaFRocm93KCkgewotICAgIHRyeSB7Ci0gICAgICAgIGF3YWl0IGRlbGVn
YXRlZFRocm93ZXIoKTsKLSAgICAgICAgcmV0dXJuICdGQUlMRUQnOwotICAgIH0gY2F0Y2ggKF8p
IHsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlZFRocm93ZXIoKTsKLSAgICB9Ci19Ci0KLWFzeW5j
IGZ1bmN0aW9uIHdlbGxGaW5hbGx5KCkgewotICAgIHRyeSB7Ci0gICAgICAgIGF3YWl0IGRlbGVn
YXRlZFRocm93ZXIoKTsKLSAgICB9IGNhdGNoIChfKSB7Ci0gICAgICAgIHJldHVybiAnRkFJTEVE
JzsKLSAgICB9IGZpbmFsbHkgewotICAgICAgICByZXR1cm4gNjsKLSAgICB9Ci19Ci0KLWFzeW5j
IGZ1bmN0aW9uIGZpbmFsbHlNYXlGYWlsKCkgewotICAgIHRyeSB7Ci0gICAgICAgIGF3YWl0IGRl
bGVnYXRlZFRocm93ZXIoKTsKLSAgICB9IGNhdGNoIChfKSB7Ci0gICAgICAgIHJldHVybiA1Owot
ICAgIH0gZmluYWxseSB7Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZWRUaHJvd2VyKCk7Ci0gICAg
fQotfQotCi1hc3luYyBmdW5jdGlvbiBlbWJlZGRlZCgpIHsKLSAgICBhc3luYyBmdW5jdGlvbiBp
bm5lcigpIHsKLSAgICAgICAgcmV0dXJuIDc7Ci0gICAgfQotICAgIHJldHVybiBhd2FpdCBpbm5l
cigpOwotfQotCi0vLyByZWN1cnNpb24sIGl0IHdvcmtzIQotYXN5bmMgZnVuY3Rpb24gZmliKG4p
IHsKLSAgICByZXR1cm4gKG4gPT0gMCB8fCBuID09IDEpID8gbiA6IGF3YWl0IGZpYihuIC0gMSkg
KyBhd2FpdCBmaWIobiAtIDIpOwotfQotCi0vLyBtdXR1YWwgcmVjdXJzaW9uCi1hc3luYyBmdW5j
dGlvbiBpc09kZChuKSB7Ci0gICAgYXN5bmMgZnVuY3Rpb24gaXNFdmVuKG4pIHsKLSAgICAgICAg
cmV0dXJuIG4gPT09IDAgfHwgYXdhaXQgaXNPZGQobiAtIDEpOwotICAgIH0KLSAgICByZXR1cm4g
biAhPT0gMCAmJiBhd2FpdCBpc0V2ZW4obiAtIDEpOwotfQotCi0vLyByZWN1cnNpb24sIHRha2Ug
dGhyZWUhCi12YXIgaGFyZGNvcmVGaWIgPSBhc3luYyBmdW5jdGlvbiBmaWIyKG4pIHsKLSAgICBy
ZXR1cm4gKG4gPT0gMCB8fCBuID09IDEpID8gbiA6IGF3YWl0IGZpYjIobiAtIDEpICsgYXdhaXQg
ZmliMihuIC0gMik7Ci19Ci0KLXZhciBhc3luY0V4cHIgPSBhc3luYyBmdW5jdGlvbigpIHsKLSAg
ICByZXR1cm4gMTA7Ci19Ci0KLXZhciBuYW1lZEFzeW5jRXhwciA9IGFzeW5jIGZ1bmN0aW9uIHNp
bXBsZSgpIHsKLSAgICByZXR1cm4gMTE7Ci19Ci0KLWFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGlvbk9y
ZGVyKCkgewotICAgIHZhciB2YWx1ZSA9IDA7Ci0gICAgYXN5bmMgZnVuY3Rpb24gZmlyc3QoKSB7
Ci0gICAgICAgIHJldHVybiAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDEgOiB2YWx1ZSk7Ci0gICAg
fQotICAgIGFzeW5jIGZ1bmN0aW9uIHNlY29uZCgpIHsKLSAgICAgICAgcmV0dXJuICh2YWx1ZSA9
IHZhbHVlID09PSAwID8gMiA6IHZhbHVlKTsKLSAgICB9Ci0gICAgYXN5bmMgZnVuY3Rpb24gdGhp
cmQoKSB7Ci0gICAgICAgIHJldHVybiAodmFsdWUgPSB2YWx1ZSA9PT0gMCA/IDMgOiB2YWx1ZSk7
Ci0gICAgfQotICAgIHJldHVybiBhd2FpdCBmaXJzdCgpICsgYXdhaXQgc2Vjb25kKCkgKyBhd2Fp
dCB0aGlyZCgpICsgNjsKLX0KLQotYXN5bmMgZnVuY3Rpb24gbWlzY2VsbGFuZW91cygpIHsKLSAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMyAmJgotICAgICAgICBhcmd1bWVudHMuY2FsbGVl
Lm5hbWUgPT09ICJtaXNjZWxsYW5lb3VzIikKLSAgICAgICAgcmV0dXJuIDE0OwotfQotCi1mdW5j
dGlvbiB0aHJvd2VyKCkgewotICAgIHRocm93IDE1OwotfQotCi1hc3luYyBmdW5jdGlvbiBkZWZh
dWx0QXJncyhhcmcgPSB0aHJvd2VyKCkpIHsKLX0KLQotLy8gQXN5bmMgZnVuY3Rpb25zIGFyZSBu
b3QgY29uc3RydWN0aWJsZQotc2hvdWxkVGhyb3coKCkgPT4gewotICAgIGFzeW5jIGZ1bmN0aW9u
IFBlcnNvbigpIHsKLSAgICB9Ci0gICAgbmV3IFBlcnNvbigpOwotfSwgVHlwZUVycm9yKTsKLQot
c2hvdWxkQmVBc3luYyh1bmRlZmluZWQsIGVtcHR5KTsKLXNob3VsZEJlQXN5bmMoMSwgc2ltcGxl
UmV0dXJuKTsKLXNob3VsZEJlQXN5bmMoMiwgc2ltcGxlQXdhaXQpOwotc2hvdWxkQmVBc3luYygz
LCBzaW1wbGVBd2FpdEFzeW5jKTsKLXNob3VsZEJlQXN5bmMoNCwgcmV0dXJuT3RoZXJBc3luYyk7
Ci1zaG91bGRUaHJvd0FzeW5jKHNpbXBsZVRocm93ZXIsIEVycm9yKTsKLXNob3VsZEJlQXN5bmMo
NSwgdHJ5Q2F0Y2gpOwotc2hvdWxkQmVBc3luYyg2LCB3ZWxsRmluYWxseSk7Ci1zaG91bGRUaHJv
d0FzeW5jKGZpbmFsbHlNYXlGYWlsLCBFcnJvcik7Ci1zaG91bGRCZUFzeW5jKDcsIGVtYmVkZGVk
KTsKLXNob3VsZEJlQXN5bmMoOCwgKCkgPT4gZmliKDYpKTsKLXNob3VsZEJlQXN5bmMoOSwgZXhl
Y3V0aW9uT3JkZXIpOwotc2hvdWxkQmVBc3luYygxMCwgYXN5bmNFeHByKTsKLXNob3VsZEJlQXN5
bmMoMTEsIG5hbWVkQXN5bmNFeHByKTsKLXNob3VsZEJlQXN5bmMoMTIsICgpID0+IGlzT2RkKDEy
KS50aGVuKHYgPT4gdiA/ICJvb3BzIiA6IDEyKSk7Ci1zaG91bGRCZUFzeW5jKDEzLCAoKSA9PiBo
YXJkY29yZUZpYig3KSk7Ci1zaG91bGRCZUFzeW5jKDE0LCAoKSA9PiBtaXNjZWxsYW5lb3VzKDEs
IDIsIDMpKTsKLXNob3VsZEJlQXN5bmMoMTUsICgpID0+IGRlZmF1bHRBcmdzKCkuY2F0Y2goZSA9
PiBlKSk7Ci0KLX0pKCk7Ci0KLS8vIG1ldGhvZHMuanMKLShmdW5jdGlvbiBtb3pNZXRob2RzKCkg
ewotCi1jbGFzcyBYIHsKLSAgICBjb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgdGhpcy52YWx1ZSA9
IDQyOwotICAgIH0KLSAgICBhc3luYyBnZXRWYWx1ZSgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
dmFsdWU7Ci0gICAgfQotICAgIHNldFZhbHVlKHZhbHVlKSB7Ci0gICAgICAgIHRoaXMudmFsdWUg
PSB2YWx1ZTsKLSAgICB9Ci0gICAgYXN5bmMgaW5jcmVtZW50KCkgewotICAgICAgICB2YXIgdmFs
dWUgPSBhd2FpdCB0aGlzLmdldFZhbHVlKCk7Ci0gICAgICAgIHRoaXMuc2V0VmFsdWUodmFsdWUg
KyAxKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoKTsKLSAgICB9Ci0gICAgYXN5bmMg
Z2V0QmFzZUNsYXNzTmFtZSgpIHsKLSAgICAgICAgcmV0dXJuICdYJzsKLSAgICB9Ci0gICAgc3Rh
dGljIGFzeW5jIGdldFN0YXRpY1ZhbHVlKCkgewotICAgICAgICByZXR1cm4gNDQ7Ci0gICAgfQot
fQotCi1jbGFzcyBZIGV4dGVuZHMgWCB7Ci0gICAgYXN5bmMgZ2V0QmFzZUNsYXNzTmFtZSgpIHsK
LSAgICAgICAgcmV0dXJuIHN1cGVyLmdldEJhc2VDbGFzc05hbWUoKTsKLSAgICB9Ci19Ci0KLXZh
ciBvYmpMaXRlcmFsID0gewotICAgIGFzeW5jIGdldCgpIHsKLSAgICAgICAgcmV0dXJuIDQ1Owot
ICAgIH0sCi0gICAgc29tZVN0dWZmOiA1Ci19OwotCi12YXIgeCA9IG5ldyBYKCk7Ci12YXIgeSA9
IG5ldyBZKCk7Ci0KLXNob3VsZEJlQXN5bmMoNDIsICgpID0+IHguZ2V0VmFsdWUoKSk7Ci1zaG91
bGRCZUFzeW5jKDQzLCAoKSA9PiB4LmluY3JlbWVudCgpKTsKLXNob3VsZEJlQXN5bmMoNDQsICgp
ID0+IFguZ2V0U3RhdGljVmFsdWUoKSk7Ci1zaG91bGRCZUFzeW5jKDQ1LCAoKSA9PiBvYmpMaXRl
cmFsLmdldCgpKTsKLXNob3VsZEJlQXN5bmMoJ1gnLCAoKSA9PiB5LmdldEJhc2VDbGFzc05hbWUo
KSk7Ci0KLX0pKCk7Ci0KLShmdW5jdGlvbiBtb3pGdW5jdGlvbk5hbWVJbmZlcnJlbmNlKCkgewot
Ci1hc3luYyBmdW5jdGlvbiB0ZXN0KCkgeyB9Ci0KLXZhciBhbm9uID0gYXN5bmMgZnVuY3Rpb24o
KSB7IH0KLQotc2hvdWxkQmUoInRlc3QiLCB0ZXN0Lm5hbWUpOwotc2hvdWxkQmUoImFub24iLCBh
bm9uLm5hbWUpOwotCi19KSgpOwotCi0oZnVuY3Rpb24gbW96U3ludGF4RXJyb3JzKCkgewotCi1z
aG91bGRUaHJvd1N5bnRheEVycm9yKCIndXNlIHN0cmljdCc7IGFzeW5jIGZ1bmN0aW9uIGV2YWwo
KSB7fSIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiJ3VzZSBzdHJpY3QnOyBhc3luYyBmdW5j
dGlvbiBhcmd1bWVudHMoKSB7fSIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVu
Y3Rpb24gYShrID0gc3VwZXIucHJvcCkgeyB9Iik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJh
c3luYyBmdW5jdGlvbiBhKCkgeyBzdXBlci5wcm9wKCk7IH0iKTsKLXNob3VsZFRocm93U3ludGF4
RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoKSB7IHN1cGVyKCk7IH0iKTsKLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGEoayA9IGF3YWl0IDMpIHt9Iik7Ci0KLX0pKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FzeW5jLWF3YWl0
LXJlc2VydmVkLXdvcmQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Fz
eW5jLWF3YWl0LXJlc2VydmVkLXdvcmQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDljOWYxMDQyNGY5ZjQyYWU0ZDZkYzY1MmY2MDI2NDRkZDNjNDIxZGYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9hc3luYy1hd2FpdC1yZXNlcnZlZC13b3JkLmpzCisrKyAvZGV2L251bGwKQEAg
LTEsMTYzICswLDAgQEAKLWZ1bmN0aW9uIGFzc2VydChjb25kLCBtc2cgPSAiIikgewotICAgIGlm
ICghY29uZCkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7Ci19Ci1ub0lubGluZShhc3Nl
cnQpOwotCi1mdW5jdGlvbiBzaG91bGRUaHJvd1N5bnRheEVycm9yKHN0ciwgbWVzc2FnZSkgewot
ICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwotICAgIHRyeSB7Ci0gICAgICAgIGV2YWwoc3RyKTsK
LSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIGlmIChlIGluc3RhbmNlb2YgU3ludGF4RXJyb3Ip
IHsKLSAgICAgICAgICAgIGhhZEVycm9yID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICh0eXBlb2Yg
bWVzc2FnZSA9PT0gInN0cmluZyIpCi0gICAgICAgICAgICAgICAgYXNzZXJ0KGUubWVzc2FnZSA9
PT0gbWVzc2FnZSwgIkV4cGVjdGVkICciICsgbWVzc2FnZSArICInIGJ1dCB0aHJldyAnIiArIGUu
bWVzc2FnZSArICInIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgYXNzZXJ0KGhhZEVycm9yLCAi
RGlkIG5vdCB0aHJvdyBzeW50YXggZXJyb3IiKTsKLX0KLW5vSW5saW5lKHNob3VsZFRocm93U3lu
dGF4RXJyb3IpOwotCi12YXIgQXN5bmNGdW5jdGlvbiA9IChhc3luYyBmdW5jdGlvbigpIHt9KS5j
b25zdHJ1Y3RvcjsKLQotLy8gQXN5bmNGdW5jdGlvbkV4cHJlc3Npb24KLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgdmFyIGF3YWl0OyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91
bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciBbYXdhaXRdID0gW107
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsg
dmFyIFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
KGFzeW5jIGZ1bmN0aW9uKCkgeyB2YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRU
aHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IHZhciB7aXNBc3luYzogYXdhaXR9
ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlv
bigpIHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgYXdhaXQ7IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBsZXQgW2F3
YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihh
c3luYyBmdW5jdGlvbigpIHsgbGV0IFsuLi5hd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdh
d2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGxldCB7YXdhaXR9
ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5j
IGZ1bmN0aW9uKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgbGV0IHtpc0Fz
eW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVy
cm9yKCIoYXN5bmMgZnVuY3Rpb24oKSB7IGNvbnN0IGF3YWl0OyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
LXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3QgW2F3YWl0
XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbigpIHsgY29uc3QgWy4uLmF3YWl0XSA9IFtdOyB9KSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
LXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qge2F3YWl0
fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3lu
YyBmdW5jdGlvbigpIHsgY29uc3Qge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgY29uc3Qg
e2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbigpIHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9KSIsICJD
YW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uKCkgeyBhc3luYyBm
dW5jdGlvbiBhd2FpdCgpIHt9IH0pIiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdh
d2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCIo
YXN5bmMgZnVuY3Rpb24oYXdhaXQpIHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFt
ZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigiKGFzeW5jIGZ1bmN0aW9uIGYoW2F3YWl0XSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5
bnRheEVycm9yKCIoYXN5bmMgZnVuY3Rpb24gZihbLi4uYXdhaXRdKSB7fSkiLCAiQ2FuJ3QgdXNl
ICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNo
b3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKC4uLmF3YWl0KSB7fSkiLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIihhc3luYyBmdW5jdGlvbiBmKHthd2FpdH0p
IHt9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5j
IGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiKGFzeW5jIGZ1bmN0aW9uIGYo
e2lzQXN5bmM6IGF3YWl0fSkge30pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVy
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci0KLS8vIEFzeW5jRnVuY3Rpb25EZWNsYXJh
dGlvbgotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgdmFyIGF3
YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYo
KSB7IHZhciBbYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFi
bGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3Io
ImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciBbLi4uYXdhaXRdID0gW107IH0pIiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNo
b3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciB7YXdhaXR9ID0g
e307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYo
KSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IHZhciB7aXNBc3luYzogYXdhaXR9ID0ge307
IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7
IGxldCBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUg
bmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGYoKSB7IGxldCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2Fp
dCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1z
aG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBsZXQgWy4uLmF3YWl0
XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMg
ZnVuY3Rpb24gZigpIHsgbGV0IHthd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBh
cyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3Vs
ZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoKSB7IGxldCB7aXNBc3luYzogYXdh
aXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3lu
YyBmdW5jdGlvbiBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IiwgIkNhbid0IHVz
ZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9u
LiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZigpIHsgY29uc3Qg
YXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKCkgeyBjb25zdCBbYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCBbLi4uYXdhaXRd
ID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKCkgeyBjb25zdCB7YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91
bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCB7aXNBc3luYzog
YXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJh
c3luYyBmdW5jdGlvbiBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVu
Y3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBmdW5jdGlvbiBmKCkgeyBm
dW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAiQ2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3
YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFz
eW5jIGZ1bmN0aW9uIGYoKSB7IGFzeW5jIGZ1bmN0aW9uIGF3YWl0KCkge30gfSIsICJDYW5ub3Qg
ZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwot
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigiYXN5bmMgZnVuY3Rpb24gZihhd2FpdCkge30iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoW2F3YWl0XSkge30i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9uIGYoWy4uLmF3
YWl0XSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoImFzeW5jIGZ1bmN0aW9u
IGYoLi4uYXdhaXQpIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJhc3luYyBm
dW5jdGlvbiBmKHthd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVy
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJh
c3luYyBmdW5jdGlvbiBmKHtpc0FzeW5jOiBhd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQn
IGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci0KLS8vIEFzeW5j
QXJyb3dGdW5jdGlvbgotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9
PiB7IHZhciBhd2FpdDsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUg
aW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9
IGFzeW5jICgpID0+IHsgdmFyIFthd2FpdF0gPSBbXTsgfSkiLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciBbLi4uYXdhaXRdID0gW107IH0p
IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5j
dGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyB2
YXIge2F3YWl0fSA9IHt9OyB9KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
ZiA9IGFzeW5jICgpID0+IHsgdmFyIHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSkiLCAiQ2FuJ3Qg
dXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwot
c2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IHZhciB7aXNBc3lu
YzogYXdhaXR9ID0ge307IH0pIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBm
ID0gYXN5bmMgKCkgPT4geyBsZXQgYXdhaXQ7IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJv
d1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgbGV0IFthd2FpdF0gPSBbXTsgfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkg
PT4geyBsZXQgWy4uLmF3YWl0XSA9IFtdOyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGxldCB7YXdhaXR9ID0ge307IH0iLCAi
Q2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+
IHsgbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBsZXQge2lzQXN5bmM6IGF3YWl0
fSA9IHt9OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1l
IGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYg
PSBhc3luYyAoKSA9PiB7IGNvbnN0IGF3YWl0OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoKSA9PiB7IGNvbnN0IFthd2FpdF0gPSBbXTsg
fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMg
KCkgPT4geyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMg
YSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRU
aHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgY29uc3Qge2F3YWl0fSA9IHt9
OyB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFu
IGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3lu
YyAoKSA9PiB7IGNvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
LXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0gYXN5bmMgKCkgPT4geyBjb25zdCB7aXNB
c3luYzogYXdhaXR9ID0ge307IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZh
cmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVy
cm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgZnVuY3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5v
dCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICgpID0+IHsgYXN5bmMgZnVu
Y3Rpb24gYXdhaXQoKSB7fSB9IiwgIkNhbm5vdCBkZWNsYXJlIGZ1bmN0aW9uIG5hbWVkICdhd2Fp
dCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIg
ZiA9IGFzeW5jIChhd2FpdCkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0
ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3Io
InZhciBmID0gYXN5bmMgKFthd2FpdF0pID0+IHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
cGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRh
eEVycm9yKCJ2YXIgZiA9IGFzeW5jIChbLi4uYXdhaXRdKSA9PiB7fSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoLi4uYXdhaXQpID0+IHt9IiwgIkNhbid0
IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgZiA9IGFzeW5jICh7YXdhaXR9KSA9PiB7fSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIGYgPSBhc3luYyAoe2lzQXN5bmM6
IGF3YWl0fSkgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBmID0g
YXN5bmMgYXdhaXQgPT4ge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFt
ZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLQotLy8gQXN5bmNNZXRob2QKLXNob3VsZFRocm93
U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIgYXdhaXQ7IH0gfSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7
Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFyIFthd2Fp
dF0gPSBbXTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyB2YXIgWy4uLmF3YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcg
YXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IHZhciB7YXdhaXR9ID0ge307IH0gfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rp
b24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZigpIHsgdmFy
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFy
aWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJy
b3IoInZhciBPID0geyBhc3luYyBmKCkgeyB2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9IH0i
LCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0
aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxl
dCBhd2FpdDsgfSB9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBu
YW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFy
IE8gPSB7IGFzeW5jIGYoKSB7IGxldCBbYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsK
LXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQgWy4uLmF3
YWl0XSA9IFtdOyB9IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxl
IG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2
YXIgTyA9IHsgYXN5bmMgZigpIHsgbGV0IHthd2FpdH0gPSB7fTsgfSB9IiwgIkNhbid0IHVzZSAn
YXdhaXQnIGFzIGEgbGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Owotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoKSB7IGxldCB7aXNB
c3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwg
dmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4
RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBsZXQge2lzQXN5bmM6IGF3YWl0fSA9IHt9OyB9
IH0iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4g
YXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5
bmMgZigpIHsgY29uc3QgYXdhaXQ7IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCBbYXdhaXRdID0gW107IH0gfSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBm
KCkgeyBjb25zdCBbLi4uYXdhaXRdID0gW107IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRo
cm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7YXdhaXR9ID0ge307
IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBh
biBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBh
c3luYyBmKCkgeyBjb25zdCB7aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBjb25zdCB7
aXNBc3luYzogYXdhaXR9ID0ge307IH0gfSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0iLCAi
Q2Fubm90IGRlY2xhcmUgZnVuY3Rpb24gbmFtZWQgJ2F3YWl0JyBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKCkgeyBhc3lu
YyBmdW5jdGlvbiBhd2FpdCgpIHt9IH0gfSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1l
ZCAnYXdhaXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJv
cigidmFyIE8gPSB7IGFzeW5jIGYoYXdhaXQpIHt9IH0gIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFz
IGEgcGFyYW1ldGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5
bnRheEVycm9yKCJ2YXIgTyA9IHsgYXN5bmMgZihbYXdhaXRdKSB7fSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxk
VGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoWy4uLmF3YWl0XSkge30iLCAiQ2Fu
J3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3luYyBmKC4uLmF3YWl0KSB7
fSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigidmFyIE8gPSB7IGFzeW5jIGYoe2F3
YWl0fSkge30iLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoInZhciBPID0geyBhc3lu
YyBmKHtpc0FzeW5jOiBhd2FpdH0pIHt9IiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgcGFyYW1l
dGVyIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci0KLS8vIEFzeW5jRnVuY3Rpb24gY29u
c3RydWN0b3IKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciBhd2Fp
dDsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMg
ZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIg
W2F3YWl0XSA9IFtdOycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ3ZhciBbLi4uYXdhaXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2
YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhF
cnJvcigiQXN5bmNGdW5jdGlvbigndmFyIHthd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3
YWl0JyBhcyBhIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRU
aHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCd2YXIge2lzQXN5bmM6IGF3YWl0fSA9IHt9
OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ3ZhciB7
aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSB2YXJpYWJs
ZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigi
QXN5bmNGdW5jdGlvbignbGV0IGF3YWl0OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEgbGV4
aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dT
eW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IFthd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1
c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlv
bi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2xldCBbLi4uYXdh
aXRdID0gW107JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBsZXhpY2FsIHZhcmlhYmxlIG5h
bWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJvd1N5bnRheEVycm9yKCJBc3lu
Y0Z1bmN0aW9uKCdsZXQge2F3YWl0fSA9IHt9OycpIiwgIkNhbid0IHVzZSAnYXdhaXQnIGFzIGEg
bGV4aWNhbCB2YXJpYWJsZSBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhy
b3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignbGV0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsn
KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24o
J2xldCB7aXNBc3luYzogYXdhaXR9ID0ge307JykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBs
ZXhpY2FsIHZhcmlhYmxlIG5hbWUgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRUaHJv
d1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdjb25zdCBhd2FpdDsnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4i
KTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IFthd2FpdF0g
PSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ2NvbnN0IFsuLi5hd2FpdF0gPSBbXTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBh
IGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRo
cm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHthd2FpdH0gPSB7fTsnKSIsICJD
YW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBm
dW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0
IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGlj
YWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3lu
dGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2NvbnN0IHtpc0FzeW5jOiBhd2FpdH0gPSB7fTsnKSIs
ICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIGxleGljYWwgdmFyaWFibGUgbmFtZSBpbiBhbiBhc3lu
YyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24oJ2Z1
bmN0aW9uIGF3YWl0KCkge30nKSIsICJDYW5ub3QgZGVjbGFyZSBmdW5jdGlvbiBuYW1lZCAnYXdh
aXQnIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5
bmNGdW5jdGlvbignYXN5bmMgZnVuY3Rpb24gYXdhaXQoKSB7fScpIiwgIkNhbm5vdCBkZWNsYXJl
IGZ1bmN0aW9uIG5hbWVkICdhd2FpdCcgaW4gYW4gYXN5bmMgZnVuY3Rpb24uIik7Ci1zaG91bGRU
aHJvd1N5bnRheEVycm9yKCJBc3luY0Z1bmN0aW9uKCdhd2FpdCcsICcnKSIsICJDYW4ndCB1c2Ug
J2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIpOwotc2hv
dWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignW2F3YWl0XScsICcnKSIsICJDYW4n
dCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1bmN0aW9uLiIp
Owotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignWy4uLmF3YWl0XScsICcn
KSIsICJDYW4ndCB1c2UgJ2F3YWl0JyBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGFuIGFzeW5jIGZ1
bmN0aW9uLiIpOwotc2hvdWxkVGhyb3dTeW50YXhFcnJvcigiQXN5bmNGdW5jdGlvbignLi4uYXdh
aXQnLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBpbiBhbiBh
c3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVuY3Rpb24o
J3thd2FpdH0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBwYXJhbWV0ZXIgbmFtZSBp
biBhbiBhc3luYyBmdW5jdGlvbi4iKTsKLXNob3VsZFRocm93U3ludGF4RXJyb3IoIkFzeW5jRnVu
Y3Rpb24oJ3tpc0FzeW5jOiBhd2FpdH0nLCAnJykiLCAiQ2FuJ3QgdXNlICdhd2FpdCcgYXMgYSBw
YXJhbWV0ZXIgbmFtZSBpbiBhbiBhc3luYyBmdW5jdGlvbi4iKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGlj
YWxfYXJndW1lbnRzX2JpbmRpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX2FyZ3VtZW50c19iaW5kaW5nLmpzCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzY3NjRhMDkwMWViNmY2N2RkNGU4OWY2ZmEz
ZDIzMTQ3ODkxNzkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rp
b25zX2xleGljYWxfYXJndW1lbnRzX2JpbmRpbmcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0NCAr
MCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKLSAgICBp
ZiAobXNnID09PSB2b2lkIDApCi0gICAgICAgIG1zZyA9ICIiOwotICAgIGVsc2UKLSAgICAgICAg
bXNnID0gIiBmb3IgIiArIG1zZzsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIu
IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhw
ZWN0ZWQsIHJ1biwgbXNnKSB7Ci0gICAgbGV0IGFjdHVhbDsKLSAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKLSAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAotICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7Ci0gICAgZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICBpZiAoaGFkRXJy
b3IpCi0gICAgICAgIHRocm93IGFjdHVhbDsKLQotICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUs
IG1lc3NhZ2UpIHsKLSAgICBsZXQgYWN0dWFsOwotICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwot
ICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCi0gICAg
ICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVy
cm9yOyB9KTsKLSAgICBkcmFpbk1pY3JvdGFza3MoKTsKLQotICAgIGlmICghaGFkRXJyb3IpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAi
ICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKLSAgICBpZiAoIShh
Y3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0
IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKLSAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYm
IGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJl
dyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKLX0KLQotdmFyIG5vQXJndW1lbnRzQXJyb3cg
PSBhc3luYyAoKSA9PiBhd2FpdCBbLi4uYXJndW1lbnRzXTsKLXNob3VsZFRocm93QXN5bmMoKCkg
PT4gbm9Bcmd1bWVudHNBcnJvdygxLCAyLCAzKSwgUmVmZXJlbmNlRXJyb3IpOwotdmFyIG5vQXJn
dW1lbnRzQXJyb3cyID0gYXN5bmMgKCkgPT4geyByZXR1cm4gYXdhaXQgWy4uLmFyZ3VtZW50c107
IH0KLXNob3VsZFRocm93QXN5bmMoKCkgPT4gbm9Bcmd1bWVudHNBcnJvdzIoMSwgMiwgMyksIFJl
ZmVyZW5jZUVycm9yKTsKLQotc2hvdWxkQmVBc3luYygiWzEsMiwzXSIsICgpID0+IChmdW5jdGlv
bigpIHsgcmV0dXJuIChhc3luYyAoKSA9PiBKU09OLnN0cmluZ2lmeShbLi4uYXJndW1lbnRzXSkp
KCk7IH0pKDEsIDIsIDMpKTsKLXNob3VsZEJlQXN5bmMoIls0LDUsNl0iLCAoKSA9PiAoZnVuY3Rp
b24oKSB7IHJldHVybiAoYXN5bmMgKCkgPT4geyByZXR1cm4gSlNPTi5zdHJpbmdpZnkoWy4uLmF3
YWl0IGFyZ3VtZW50c10pIH0pKCk7IH0pKDQsIDUsIDYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxf
bmV3LnRhcmdldF9iaW5kaW5nLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9hc3luY19hcnJvd19mdW5jdGlvbnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2ZGYwYTMxMTA2ZTNiY2JlZGJmYWY1OGExYzM5
MzUzMTI0NThjNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hc3luY19hcnJvd19mdW5jdGlv
bnNfbGV4aWNhbF9uZXcudGFyZ2V0X2JpbmRpbmcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1MiAr
MCwwIEBACi1mdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKLSAgICBp
ZiAobXNnID09PSB2b2lkIDApCi0gICAgICAgIG1zZyA9ICIiOwotICAgIGVsc2UKLSAgICAgICAg
bXNnID0gIiBmb3IgIiArIG1zZzsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIu
IEV4cGVjdGVkICIgKyBleHBlY3RlZCk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhw
ZWN0ZWQsIHJ1biwgbXNnKSB7Ci0gICAgbGV0IGFjdHVhbDsKLSAgICB2YXIgaGFkRXJyb3IgPSBm
YWxzZTsKLSAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9
LAotICAgICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1
YWwgPSBlcnJvcjsgfSk7Ci0gICAgZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICBpZiAoaGFkRXJy
b3IpCi0gICAgICAgIHRocm93IGFjdHVhbDsKLQotICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1
YWwsIG1zZyk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZFRocm93QXN5bmMocnVuLCBlcnJvclR5cGUs
IG1lc3NhZ2UpIHsKLSAgICBsZXQgYWN0dWFsOwotICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwot
ICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCi0gICAg
ICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVy
cm9yOyB9KTsKLSAgICBkcmFpbk1pY3JvdGFza3MoKTsKLQotICAgIGlmICghaGFkRXJyb3IpCi0g
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgIiArIHJ1biArICIoKSB0byB0aHJvdyAi
ICsgZXJyb3JUeXBlLm5hbWUgKyAiLCBidXQgZGlkIG5vdCB0aHJvdy4iKTsKLSAgICBpZiAoIShh
Y3R1YWwgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgIiArIGVycm9yVHlwZS5uYW1lICsgIiwgYnV0
IHRocmV3ICciICsgYWN0dWFsICsgIiciKTsKLSAgICBpZiAobWVzc2FnZSAhPT0gdm9pZCAwICYm
IGFjdHVhbC5tZXNzYWdlICE9PSBtZXNzYWdlKQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkICIgKyBydW4gKyAiKCkgdG8gdGhyb3cgJyIgKyBtZXNzYWdlICsgIicsIGJ1dCB0aHJl
dyAnIiArIGFjdHVhbC5tZXNzYWdlICsgIiciKTsKLX0KLQotZnVuY3Rpb24gQzEoKSB7Ci0gICAg
cmV0dXJuIGFzeW5jICgpID0+IGF3YWl0IG5ldy50YXJnZXQ7Ci19Ci0KLWZ1bmN0aW9uIEMyKCkg
ewotICAgIHJldHVybiBhc3luYyAoKSA9PiB7IHJldHVybiBhd2FpdCBuZXcudGFyZ2V0IH07Ci19
Ci0KLXNob3VsZEJlQXN5bmMoQzEsIG5ldyBDMSgpKTsKLXNob3VsZEJlQXN5bmModW5kZWZpbmVk
LCBDMSgpKTsKLXNob3VsZEJlQXN5bmMoQzIsIG5ldyBDMigpKTsKLXNob3VsZEJlQXN5bmModW5k
ZWZpbmVkLCBDMigpKTsKLQotc2hvdWxkVGhyb3dBc3luYyhhc3luYyAoKSA9PiBhd2FpdCBuZXcu
dGFyZ2V0LCBSZWZlcmVuY2VFcnJvcik7Ci1zaG91bGRUaHJvd0FzeW5jKGFzeW5jICgpID0+IHsg
cmV0dXJuIGF3YWl0IG5ldy50YXJnZXQ7IH0sIFJlZmVyZW5jZUVycm9yKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25z
X2xleGljYWxfc3VwZXJfYmluZGluZy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvYXN5bmNfYXJyb3dfZnVuY3Rpb25zX2xleGljYWxfc3VwZXJfYmluZGluZy5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTAwMDQ2M2JhYjljMzUxZjY5OWEwMWY4MGNhYmIz
MGM3MjMyMGU2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9u
c19sZXhpY2FsX3N1cGVyX2JpbmRpbmcuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBA
Ci1mdW5jdGlvbiBzaG91bGRCZShleHBlY3RlZCwgYWN0dWFsLCBtc2cpIHsKLSAgICBpZiAobXNn
ID09PSB2b2lkIDApCi0gICAgICAgIG1zZyA9ICIiOwotICAgIGVsc2UKLSAgICAgICAgbXNnID0g
IiBmb3IgIiArIG1zZzsKLSAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKLSAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiICsgbXNnICsgIjogIiArIGFjdHVhbCArICIuIEV4cGVj
dGVkICIgKyBleHBlY3RlZCk7Ci19Ci0KLWZ1bmN0aW9uIHNob3VsZEJlQXN5bmMoZXhwZWN0ZWQs
IHJ1biwgbXNnKSB7Ci0gICAgbGV0IGFjdHVhbDsKLSAgICB2YXIgaGFkRXJyb3IgPSBmYWxzZTsK
LSAgICBydW4oKS50aGVuKGZ1bmN0aW9uKHZhbHVlKSB7IGFjdHVhbCA9IHZhbHVlOyB9LAotICAg
ICAgICAgICAgICAgZnVuY3Rpb24oZXJyb3IpIHsgaGFkRXJyb3IgPSB0cnVlOyBhY3R1YWwgPSBl
cnJvcjsgfSk7Ci0gICAgZHJhaW5NaWNyb3Rhc2tzKCk7Ci0KLSAgICBpZiAoaGFkRXJyb3IpCi0g
ICAgICAgIHRocm93IGFjdHVhbDsKLQotICAgIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1z
Zyk7Ci19Ci0KLWNsYXNzIEJhc2VDbGFzcyB7Ci0gICAgYmFzZUNsYXNzVmFsdWUoKSB7Ci0gICAg
ICAgIHJldHVybiAiQmFzZUNsYXNzVmFsdWUiOwotICAgIH0KLSAgICBnZXQgcHJvcGVydHkoKSB7
Ci0gICAgICAgIHJldHVybiAidGVzdCEiOwotICAgIH0KLX0KLQotY2xhc3MgQ2hpbGRDbGFzcyBl
eHRlbmRzIEJhc2VDbGFzcyB7Ci0gICAgYXN5bmNTdXBlclByb3AoKSB7Ci0gICAgICAgIHJldHVy
biBhc3luYyB4ID0+IHN1cGVyLmJhc2VDbGFzc1ZhbHVlKCk7Ci0gICAgfQotICAgIGFzeW5jU3Vw
ZXJQcm9wMigpIHsKLSAgICAgICAgcmV0dXJuIGFzeW5jIHggPT4geyByZXR1cm4gc3VwZXIuYmFz
ZUNsYXNzVmFsdWUoKTsgfQotICAgIH0KLX0KLQotc2hvdWxkQmVBc3luYygiQmFzZUNsYXNzVmFs
dWUiLCBuZXcgQ2hpbGRDbGFzcygpLmFzeW5jU3VwZXJQcm9wKCkpOwotc2hvdWxkQmVBc3luYygi
QmFzZUNsYXNzVmFsdWUiLCBuZXcgQ2hpbGRDbGFzcygpLmFzeW5jU3VwZXJQcm9wMigpKTsKLQot
Y2xhc3MgQ2hpbGRDbGFzczIgZXh0ZW5kcyBCYXNlQ2xhc3MgewotICAgIGNvbnN0cnVjdG9yKCkg
ewotICAgICAgICByZXR1cm4gYXN5bmMgKHNlbGYgPSBzdXBlcigpKSA9PiBzZWxmLmJhc2VDbGFz
c1ZhbHVlKCkgKyAnICcgKyBzdXBlci5wcm9wZXJ0eTsKLSAgICB9Ci19Ci0KLXNob3VsZEJlQXN5
bmMoIkJhc2VDbGFzc1ZhbHVlIHRlc3QhIiwgbmV3IENoaWxkQ2xhc3MyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9hc3luY19hcnJvd19mdW5jdGlv
bnNfbGV4aWNhbF90aGlzX2JpbmRpbmcuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9uc19sZXhpY2FsX3RoaXNfYmluZGluZy5qcwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QwNjY4MmI0MWExMzk2MmIyZThmMGVjZjE3MDM5
OTVkZGE4MmE4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2FzeW5jX2Fycm93X2Z1bmN0aW9u
c19sZXhpY2FsX3RoaXNfYmluZGluZy5qcworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAK
LWZ1bmN0aW9uIHNob3VsZEJlKGV4cGVjdGVkLCBhY3R1YWwsIG1zZykgewotICAgIGlmIChtc2cg
PT09IHZvaWQgMCkKLSAgICAgICAgbXNnID0gIiI7Ci0gICAgZWxzZQotICAgICAgICBtc2cgPSAi
IGZvciAiICsgbXNnOwotICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQotICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIgKyBtc2cgKyAiOiAiICsgYWN0dWFsICsgIi4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkKTsKLX0KLQotZnVuY3Rpb24gc2hvdWxkQmVBc3luYyhleHBlY3RlZCwg
cnVuLCBtc2cpIHsKLSAgICBsZXQgYWN0dWFsOwotICAgIHZhciBoYWRFcnJvciA9IGZhbHNlOwot
ICAgIHJ1bigpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHsgYWN0dWFsID0gdmFsdWU7IH0sCi0gICAg
ICAgICAgICAgICBmdW5jdGlvbihlcnJvcikgeyBoYWRFcnJvciA9IHRydWU7IGFjdHVhbCA9IGVy
cm9yOyB9KTsKLSAgICBkcmFpbk1pY3JvdGFza3MoKTsKLQotICAgIGlmIChoYWRFcnJvcikKLSAg
ICAgICAgdGhyb3cgYWN0dWFsOwotCi0gICAgc2hvdWxkQmUoZXhwZWN0ZWQsIGFjdHVhbCwgbXNn
KTsKLX0KLQotdmFyIGQgPSAoeyB4IDogImJhciIsIHkgOiBmdW5jdGlvbigpIHsgcmV0dXJuIGFz
eW5jIHogPT4gdGhpcy54ICsgejsgfX0pLnkoKTsKLXZhciBlID0geyB4IDogImJheiIsIHkgOiBk
IH07Ci0KLXNob3VsZEJlQXN5bmMoImJhcmxleSIsICgpID0+IGQoImxleSIpKTsKLXNob3VsZEJl
QXN5bmMoImJhcmxleSIsICgpID0+IGUueSgibGV5IikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggNDBjZTRkMDYzY2RjM2Jj
YjlhNDE1NDMzYTY2NWZhN2NlNzNjZjgyZS4uMjM5OTRhNmI2OGMyMjMzOWUxYzgwNzAyYTUwZDE4
ZDkxNDQ0NzhhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlc1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzUHJpdmF0ZS5oCkBAIC01Myw3ICs1Myw2IEBAIHR5cGVkZWYgZW51bSB7CiB9IFdlYlN0
b3JhZ2VCbG9ja2luZ1BvbGljeTsKIAogdHlwZWRlZiBlbnVtIHsKLSAgICBXZWJLaXRKYXZhU2Ny
aXB0UnVudGltZUZsYWdzQXN5bmNBd2FpdEVuYWJsZWQgPSAxdSA8PCAwLAogICAgIFdlYktpdEph
dmFTY3JpcHRSdW50aW1lRmxhZ3NBbGxFbmFibGVkID0gMAogfSBXZWJLaXRKYXZhU2NyaXB0UnVu
dGltZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsIGIvU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9J
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAppbmRleCBjZGQxNjg5MjYzNTZmZTNhODcwNTQ5Zjcy
Y2UyMzI2ZTlhMzlmYmY3Li4xNmFmMjk2MzQ1NGE2Mjc0Y2VlNWU1YzA5M2FmNmZmODczODI5ZWVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNl
c1ByaXZhdGUuaWRsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZl
cmVuY2VzUHJpdmF0ZS5pZGwKQEAgLTMyLDcgKzMyLDYgQEAgaW1wb3J0ICJvY2lkbC5pZGwiOwog
I2VuZGlmCiAKIHR5cGVkZWYgZW51bSBXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzIHsKLSAg
ICBXZWJLaXRKYXZhU2NyaXB0UnVudGltZUZsYWdzQXN5bmNBd2FpdEVuYWJsZWQgPSAxLCAvLyAx
dSA8PCAwCiAgICAgV2ViS2l0SmF2YVNjcmlwdFJ1bnRpbWVGbGFnc0FsbEVuYWJsZWQgPSAwCiB9
IFdlYktpdEphdmFTY3JpcHRSdW50aW1lRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKaW5kZXggMjQy
NzIyM2FiY2I5ZTA4Yzg3MTlkZDNiOTM1ZGE3YmFjZTdkNGE4YS4uNWUwOWY2NjU1NTM4MzFiZWQ1
ZDk4MDFmOTcyMjRkMGNjZTI2MDU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmgKQEAgLTUwLDcgKzUwLDYg
QEAgZW51bSBXS0VkaXRhYmxlTGlua0JlaGF2aW9yIHsKIHR5cGVkZWYgZW51bSBXS0VkaXRhYmxl
TGlua0JlaGF2aW9yIFdLRWRpdGFibGVMaW5rQmVoYXZpb3I7CiAKIGVudW0gV0tKYXZhU2NyaXB0
UnVudGltZUZsYWdzIHsKLSAgICBrV0tKYXZhU2NyaXB0UnVudGltZUZsYWdzQXN5bmNBd2FpdEVu
YWJsZWQgPSAxIDw8IDAsCiAgICAga1dLSmF2YVNjcmlwdFJ1bnRpbWVGbGFnc0FsbEVuYWJsZWQg
PSAwCiB9OwogdHlwZWRlZiB1bnNpZ25lZCBXS0phdmFTY3JpcHRSdW50aW1lRmxhZ1NldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcmVmZXJl
bmNlc1ByaXZhdGUuaAppbmRleCBkMDE2MDEwY2I2MjNjZDhjYTM1MDM5ZmY4ODVlZDYzOWJlYWJj
ZTEwLi5hZjhkZGUzNjU4NWI5ODhiODRhMTIxZmVmY2NkMTc2M2EwY2M0YzcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJlZmVyZW5jZXNQcml2YXRl
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1ByZWZlcmVuY2Vz
UHJpdmF0ZS5oCkBAIC00Myw3ICs0Myw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2Vy
LCBfV0tEZWJ1Z092ZXJsYXlSZWdpb25zKSB7CiB9IFdLX0VOVU1fQVZBSUxBQkxFKDEwXzExLCA5
XzApOwogCiB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLSmF2YVNjcmlwdFJ1bnRp
bWVGbGFncykgewotICAgIF9XS0phdmFTY3JpcHRSdW50aW1lRmxhZ3NBc3luY0F3YWl0RW5hYmxl
ZCA9IDEgPDwgMCwKICAgICBfV0tKYXZhU2NyaXB0UnVudGltZUZsYWdzQWxsRW5hYmxlZCA9IDAK
IH0gV0tfRU5VTV9BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>