<?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>154321</bug_id>
          
          <creation_ts>2016-02-16 18:36:28 -0800</creation_ts>
          <short_desc>[ES6] Implement revocable proxies</short_desc>
          <delta_ts>2016-03-07 23:16:14 -0800</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>
          
          <blocked>35731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165464</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-02-16 18:36:28 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171879</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-07 18:14:43 -0800</bug_when>
    <thetext>*** Bug 155135 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171882</commentid>
    <comment_count>2</comment_count>
      <attachid>273255</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-07 18:19:15 -0800</bug_when>
    <thetext>Created attachment 273255
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171885</commentid>
    <comment_count>3</comment_count>
      <attachid>273257</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-07 18:35:02 -0800</bug_when>
    <thetext>Created attachment 273257
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171904</commentid>
    <comment_count>4</comment_count>
      <attachid>273257</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-07 19:45:34 -0800</bug_when>
    <thetext>Comment on attachment 273257
patch

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

r=me

&gt; Source/JavaScriptCore/CMakeLists.txt:767
&gt; +    runtime/ProxyRevoke.cpp

I think you&apos;ll also need to add the new files to the vcproj build files.  I thought Alex removed them already, but a quick check shows that they are still in the repo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171907</commentid>
    <comment_count>5</comment_count>
      <attachid>273262</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-07 20:03:20 -0800</bug_when>
    <thetext>Created attachment 273262
patch for landing

lets see if this fixes the build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171960</commentid>
    <comment_count>6</comment_count>
      <attachid>273262</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 23:16:10 -0800</bug_when>
    <thetext>Comment on attachment 273262
patch for landing

Clearing flags on attachment: 273262

Committed r197732: &lt;http://trac.webkit.org/changeset/197732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171961</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 23:16:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273255</attachid>
            <date>2016-03-07 18:19:15 -0800</date>
            <delta_ts>2016-03-07 18:35:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>36586</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NzE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDE2LTAzLTA3ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtFUzZdIEltcGxlbWVudCByZXZvY2FibGUgcHJveGllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0IGZvcndh
cmQgaW1wbGVtZW50YXRpb24gb2YgUHJveHkucmV2b2NhYmxlCisgICAgICAgIHdpdGggcmVzcGVj
dCB0byBzZWN0aW9uIDI2LjIuMi4xIG9mIHRoZSBFQ01BU2NyaXB0IHNwZWMuCisgICAgICAgIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXByb3h5LnJldm9jYWJsZQorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIGJ1ZyBpbiBQcm94eSB3aGVyZSB3ZQorICAgICAg
ICB3ZXJlIGluY29ycmVjdGx5IGNhY2hpbmcgImluIiwgaS5lLCBgIngiIGluIHByb3h5YC4KKyAg
ICAgICAgV2Ugc2hvdWxkIG5ldmVyIGJsYXRhbnRseSBjYWNoZSB0aGlzIGJlY2F1c2UgY2FjaGlu
ZyBpcyBvYnNlcnZhYmxlCisgICAgICAgIGJlaGF2aW9yIGJ5IHVzZXJzIG9mIHRoZSBsYW5ndWFn
ZS4gV2UgY291bGQgY29tZSB1cCB3aXRoCisgICAgICAgIGEgc21hcnRlciBjYWNoaW5nIHNjaGVt
ZSB0aGF0IGNhY2hlcyBvbmx5IGlmIHRoZSBQcm94eSdzCisgICAgICAgIGhhbmRsZXIgZG9lc24n
dCBoYXZlIGEgImhhcyIgcHJvcGVydHksIGkuZSwgd2UgZG9uJ3QgaGF2ZQorICAgICAgICB0byBj
YWxsIG91dCB0byBKUyBjb2RlLiBCdXQgZm9yIG5vdywgaXQncyBlYXNpZXN0IHRvIGRpc2FibGUK
KyAgICAgICAgY2FjaGluZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpp
bml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Om1vZHVsZVJlY29yZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojptb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6cHJveHlPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cHJveHlSZXZva2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6d2FzbU1vZHVsZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6UHJveHlDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6Om1ha2VSZXZvY2FibGVQcm94eSk6CisgICAgICAgIChKU0M6OnByb3h5UmV2b2NhYmxl
Q29uc3RydWN0b3JUaHJvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlByb3h5
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybVB1dCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgorICAgICAg
ICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtUHJl
dmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0
ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToKKyAgICAg
ICAgKEpTQzo6UHJveHlPYmplY3Q6OmdldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpyZXZva2UpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlByb3h5UmV2b2tlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQ
cm94eVJldm9rZTo6UHJveHlSZXZva2UpOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlSZXZva2UpOgorICAgICAg
ICAoSlNDOjpQcm94eVJldm9rZTo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpQcm94eVJl
dm9rZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9Qcm94eVJldm9rZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UHJveHlSZXZva2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlByb3h5UmV2b2tlOjpwcm94eSk6CisgICAgICAgIChKU0M6OlByb3h5UmV2b2tl
OjpzZXRQcm94eVRvTnVsbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9w
ZXJ0eS5qczoKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnQubGV0LmhhbmRsZXIu
aGFzKToKKyAgICAgICAgKGFzc2VydC5sZXQuZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
cHJveHktcmV2b2tlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0aHJv
dy5uZXcuRXJyb3IuKToKKyAgICAgICAgKHRocm93Lm5ldy5FcnJvcik6CisgICAgICAgIChjYWxs
QWxsSGFuZGxlcnMpOgorICAgICAgICAoc2hvdWxkVGhyb3dOdWxsSGFuZGxlcik6CisgICAgICAg
IChhbGxIYW5kbGVyc1Nob3VsZFRocm93KToKKyAgICAgICAgKGkubGV0LnRyYXAub2YudHJhcHMu
dHJhcC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mdW5jKToKKyAgICAgICAgKGkubGV0LnRyYXAub2Yu
dHJhcHMuZWxzZS5mdW5jKToKKyAgICAgICAgKGkuUHJveHkucmV2b2NhYmxlKToKKwogMjAxNi0w
My0wNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0aGUgcHJvdG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBnZW5lcmF0ZSBmYWN0b3J5IG1ldGhv
ZCBzdHVicyBmb3IgcHJvdG9jb2wgdHlwZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDE5NzcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY0LDYgKzc2NCw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCiAgICAgcnVudGlt
ZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCisgICAg
cnVudGltZS9Qcm94eVJldm9rZS5jcHAKICAgICBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9SZWdFeHAuY3BwCiAgICAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc3MTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTI2OSw2ICsxMjY5LDggQEAKIAkJNzBFQ0E2MDcxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDIxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRl
UmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVDQTYwODFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MDMxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlUmVnaXN0cnlLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3OTE2MERCRDFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkxNjBEQkIx
QzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmNwcCAqLzsgfTsKKwkJNzkxNjBEQkUxQzhF
M0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3OTE2MERCQzFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZv
a2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
OTJDQjM0OTFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVPcmlnaW5NYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkyQ0IzNDcxQzRFRUQ1QzAw
RDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmNwcCAqLzsgfTsKIAkJNzkyQ0IzNEExQzRFRUQ1
QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTJDQjM0ODFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0Nv
ZGVPcmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk2NDY1NjgxQjk1MkZGMDAw
MzA1OUVFIC8qIEdldFB1dEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzQyNyw2ICszNDI5LDggQEAKIAkJNzBFQ0E2MDIxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwRUNBNjAzMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBs
YXRlUmVnaXN0cnlLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxh
dGVSZWdpc3RyeUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTE2MERCQjFD
OEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJveHlSZXZva2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3OTE2MERCQzFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJveHlSZXZva2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzkyQ0IzNDcxQzRFRUQ1QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBDVG9Db2RlT3JpZ2lu
TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkyQ0IzNDgxQzRFRUQ1QzAw
RDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBDVG9Db2RlT3JpZ2luTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc5NjQ2NTY4MUI5NTJGRjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdldFB1dEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU4NTMsNiArNTg1Nyw4IEBACiAJCQkJNzlCMDBDQjkxQzZBQjA3RTAwODhDNjVEIC8q
IFByb3h5Q29uc3RydWN0b3IuaCAqLywKIAkJCQk3OUIwMENCQTFDNkFCMDdFMDA4OEM2NUQgLyog
UHJveHlPYmplY3QuY3BwICovLAogCQkJCTc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94
eU9iamVjdC5oICovLAorCQkJCTc5MTYwREJCMUM4RTNFQzgwMDhDMDg1QSAvKiBQcm94eVJldm9r
ZS5jcHAgKi8sCisJCQkJNzkxNjBEQkMxQzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmgg
Ki8sCiAJCQkJMEY1NzgwQTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLywKIAkJCQkw
RjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8sCiAJCQkJ
MTQ3Qjg0NjIwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLApAQCAtNjg5
OCw2ICs2OTA0LDcgQEAKIAkJCQk3OUIwMENCRDFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk5RUY3QzQxQzU2RUQ5NjAwMkIwNTM0IC8q
IEIzUENUb09yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMDBDQkYxQzZBQjA3RTAw
ODhDNjVEIC8qIFByb3h5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3OTE2MERCRTFDOEUz
RUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MkNCMzRB
MUM0RUVENUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzlDRkM2RjAxQzMzQjEwMDAwQzc2OEVBIC8qIExMSW50UENSYW5nZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc5RDVDRDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTkxNTgsNiArOTE2NSw3IEBACiAJCQkJRTM1NUYzNTIxQjdEQzg1
MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjMzOEUwQjFCRjAyNzZDMDAxM0M4OEYgLyogQjNDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OTE2MERCRDFDOEUzRUM4MDA4QzA4NUEgLyogUHJv
eHlSZXZva2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTExMDdFQzdFNzAwNjUwNDQ2
IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzM0U4RDIw
MUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcg
QEAKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb3h5Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAj
aW5jbHVkZSAiUmVmbGVjdE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCkBAIC0zNzAsNiArMzcxLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX3Byb3h5T2JqZWN0U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb3h5UmV2b2tlU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgUHJveHlSZXZva2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBt
X3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtOTExLDYgKzkxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2FzbU1vZHVsZVN0cnVjdHVyZSk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4Miw3IEBAIHBy
b3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0U3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1
cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNTM1LDYgKzUzNiw3IEBAIHB1Ymxp
YzoKICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9Cisg
ICAgU3RydWN0dXJlKiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
eHlSZXZva2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
U3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9k
dWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc3MTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEzIEBACiAjaW5jbHVkZSAiUHJveHlDb25zdHJ1
Y3Rvci5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKKyNpbmNsdWRlICJQcm94eVJl
dm9rZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC00Miw3ICs0NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBQcm94eUNvbnN0cnVjdG9yOjpzX2lu
Zm8KIFByb3h5Q29uc3RydWN0b3IqIFByb3h5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFByb3h5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IFByb3h5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKHZtLCAiUHJveHkiKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sICJQcm94eSIsIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKIH0KIApAQCAtNTEsMTEgKzU0LDQyIEBAIFByb3h5Q29uc3RydWN0b3I6OlByb3h5
Q29uc3RydWN0b3IoVk0mIHYKIHsKIH0KIAotdm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBj
YWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlci4iKSk7
CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAg
ICBKU1ZhbHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CisgICAgSlNWYWx1ZSBoYW5kbGVyID0gYXJn
cy5hdCgxKTsKKyAgICBQcm94eU9iamVjdCogcHJveHkgPSBQcm94eU9iamVjdDo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJveHlPYmplY3RTdHJ1Y3R1cmUoKSwg
dGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBQcm94eVJldm9rZSogcmV2b2tlID0g
UHJveHlSZXZva2U6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm94
eVJldm9rZVN0cnVjdHVyZSgpLCBwcm94eSk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBKU09iamVjdCog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicHJveHkiKSwgcHJveHksIE5v
bmUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwgInJldm9r
ZSIpLCByZXZva2UsIE5vbmUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9jYWJs
ZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgY2FuIG5v
dCBiZSBjb25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkLiIpKTsKK30KKwordm9pZCBQ
cm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIG5hbWUpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicmV2b2NhYmxlIiksIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCBBU0NJSUxpdGVyYWwoInJldm9jYWJsZSIpLCBtYWtl
UmV2b2NhYmxlUHJveHksIE5vSW50cmluc2ljLCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhy
b3dFcnJvcikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RQcm94eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTc3MTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAogICAgIH0KIAotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgY29uc3QgY2hhciogbmFtZSwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToK
ICAgICBQcm94eUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc3MTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDEwICs1Myw4IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoUHJveHlPYmplY3Qq
IHRhcmdldEFzUHJveHkgPSBqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4odGFyZ2V0KSkgewot
ICAgICAgICAvLyBGSVhNRTogQWRkIHRlc3RzIGZvciB0aGlzIG9uY2Ugd2UgaW1wbGVtZW50IFBy
b3h5LnJldm9rZSguKS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDMyMQogICAgICAgICBpZiAodGFyZ2V0QXNQcm94eS0+aGFuZGxlcigpLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIg
UHJveHkgb2JqZWN0IG11c3QgaGF2ZSBhIG5vbi1udWxsIGhhbmRsZXIuIikpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJZiBhIFByb3h5J3MgaGFuZGxl
ciBpcyBhbm90aGVyIFByb3h5IG9iamVjdCwgdGhlIG90aGVyIFByb3h5IHNob3VsZCBub3QgaGF2
ZSBiZWVuIHJldm9rZWQuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpAQCAtNzcsNiArNzUsOCBAQCB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sCiAgICAgbV9oYW5kbGVyLnNldCh2bSwgdGhpcywgaGFuZGxlcik7CiB9CiAKK3N0YXRpYyBj
b25zdCBjaGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UgPSAiUHJveHkgaGFz
IGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQgdG8g
YmUgcGVyZm9ybWVkIG9uIGl0LiI7CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwZXJmb3JtUHJv
eHlHZXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTExMyw3
ICsxMTMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4CiAKICAg
ICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5T2JqZWN0LT5oYW5kbGVyKCk7CiAgICAgaWYg
KGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJl
IGFuIE9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAgIEpT
T2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMt
PmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVs
bC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNjcsNyArMjY3LDcgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVy
VmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hh
bmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzYwLDcgKzM2
MCw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiAKIAogICAgIEpT
VmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFs
dWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4gT2JqZWN0LiIpKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAg
ICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2FsbGVl
KCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBp
ZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQg
YmUgYW4gT2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAg
SlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmYKICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8
UHJveHlPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hh
bmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZv
a2VkRXJyb3JNZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09i
amVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC01NDYsNyAr
NTQ2LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogCiAgICAg
SlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJW
YWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkgJ2hhbmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxy
ZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtNjE1LDcgKzYxNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0
ZW5zaW8KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAg
IGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUg
YW4gT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtSXNFeHRlbnNpYmxlKEV4CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhh
bmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4g
SXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03MjUsNyArNzI1LDcgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRs
ZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtODA5LDcgKzgwOSw3
IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigp
OwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91
bGQgYmUgYW4gT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTk3MCw3ICs5NzAsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtU2V0UHJvdG90eXBlKEV4CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhh
bmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4g
SXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBKU1ZhbHVl
IFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJW
YWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFu
ZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9y
TWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTA3OCw2
ICsxMDc4LDEzIEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OmdldFByb3RvdHlwZShKU09iamUKICAg
ICByZXR1cm4ganNDYXN0PFByb3h5T2JqZWN0Kj4ob2JqZWN0KS0+cGVyZm9ybUdldFByb3RvdHlw
ZShleGVjKTsKIH0KIAordm9pZCBQcm94eU9iamVjdDo6cmV2b2tlKFZNJiB2bSkKK3sgCisgICAg
Ly8gVGhpcyBzaG91bGQgb25seSBldmVyIGJlIGNhbGxlZCBvbmNlIGFuZCB3ZSBzaG91bGQgc3Ry
aWN0bHkgdHJhbnNpdGlvbiBmcm9tIE9iamVjdCB0byBudWxsLgorICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2hhbmRsZXIuZ2V0KCkuaXNOdWxsKCkgJiYgbV9oYW5kbGVyLmdldCgpLmlzT2JqZWN0KCkp
OworICAgIG1faGFuZGxlci5zZXQodm0sIHRoaXMsIGpzTnVsbCgpKTsKK30KKwogdm9pZCBQcm94
eU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4o
Y2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmgJKHJldmlzaW9uIDE5NzcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV2UgbGllIGFuIHNheSB3ZSBvdmVycmlkZSBnZXRQcm9wZXJ0eU5hbWVzKCkgYmVjYXVz
ZSBpdCBwcmV2ZW50cwogICAgIC8vIHByb3BlcnR5IG5hbWUgZW51bWVyYXRpb24gY2FjaGluZy4K
LSAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFR5cGVPZlNob3VsZENhbGxH
ZXRDYWxsRGF0YSB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIGNvbnN0IHN0
YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgVHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhIHwg
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7
CiAKICAgICBzdGF0aWMgUHJveHlPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogICAgIHsK
QEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICB2b2lkIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0
ZSopOworICAgIHZvaWQgcmV2b2tlKFZNJik7CiAKIHByaXZhdGU6CiAgICAgUHJveHlPYmplY3Qo
Vk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5UmV2b2tlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eVJldm9rZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eVJldm9rZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKFByb3h5UmV2b2tlKTsKKworY29uc3QgQ2xhc3NJbmZvIFByb3h5
UmV2b2tlOjpzX2luZm8gPSB7ICJQcm94eVJldm9rZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUHJveHlSZXZva2UpIH07CisKK1Byb3h5UmV2b2tlKiBQcm94eVJldm9r
ZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3h5T2JqZWN0KiBwcm94
eSkKK3sKKyAgICBQcm94eVJldm9rZSogcmV2b2tlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UHJveHlSZXZva2U+KHZtLmhlYXApKSBQcm94eVJldm9rZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICByZXZva2UtPmZpbmlzaENyZWF0aW9uKHZtLCAicmV2b2tlIiwgcHJveHkpOworICAgIHJldHVy
biByZXZva2U7Cit9CisKK1Byb3h5UmV2b2tlOjpQcm94eVJldm9rZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFBy
b3h5UmV2b2tlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUsIFByb3h5
T2JqZWN0KiBwcm94eSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgU3RyaW5nKG5h
bWUpKTsKKyAgICBtX3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOworCisgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUHJveHlS
ZXZva2UqIHByb3h5UmV2b2tlID0ganNDYXN0PFByb3h5UmV2b2tlKj4oZXhlYy0+Y2FsbGVlKCkp
OworICAgIEpTVmFsdWUgcHJveHlWYWx1ZSA9IHByb3h5UmV2b2tlLT5wcm94eSgpOworICAgIGlm
IChwcm94eVZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2Jq
ZWN0Kj4ocHJveHlWYWx1ZSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBwcm94eS0+
cmV2b2tlKHZtKTsKKyAgICBwcm94eVJldm9rZS0+c2V0UHJveHlUb051bGwodm0pOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0NhbGxUeXBlIFByb3h5
UmV2b2tlOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAg
Y2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gcGVyZm9ybVByb3h5UmV2b2tlOworICAgIHJldHVy
biBDYWxsVHlwZTo6SG9zdDsKK30KKwordm9pZCBQcm94eVJldm9rZTo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFByb3h5UmV2b2tlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5UmV2b2tlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9wcm94eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQcm94eVJldm9rZV9oCisjZGVmaW5lIFByb3h5UmV2b2tlX2gKKworI2luY2x1
ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFByb3h5
T2JqZWN0OworCitjbGFzcyBQcm94eVJldm9rZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIHN0YXRpYyBQcm94eVJldm9rZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUHJveHlPYmpl
Y3QqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKSAKKyAgICB7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7IAorICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBj
b25zdCBjaGFyKiBuYW1lLCBQcm94eU9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICBKU1ZhbHVlIHByb3h5KCkgeyByZXR1
cm4gbV9wcm94eS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UHJveHlUb051bGwoVk0mIHZtKSB7IHJl
dHVybiBtX3Byb3h5LnNldCh2bSwgdGhpcywganNOdWxsKCkpOyB9CisKK3ByaXZhdGU6CisgICAg
UHJveHlSZXZva2UoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBt
X3Byb3h5OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm94eVJldm9r
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1w
cm9wZXJ0eS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5qcwkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1oYXMtcHJvcGVydHkuanMJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0MywzICs0NDMsMjMgQEAgZnVuY3Rpb24gYXNzZXJ0KGIpIHsKICAgICAgICAg
YXNzZXJ0KCFjYWxsZWQxKTsKICAgICB9CiB9CisKK3sKKyAgICBsZXQgY2FsbGVkID0gZmFsc2U7
CisgICAgbGV0IGhhbmRsZXIgPSB7CisgICAgICAgIGhhczogZnVuY3Rpb24oLi4uYXJncykgewor
ICAgICAgICAgICAgY2FsbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBSZWZsZWN0Lmhh
cyguLi5hcmdzKTsKKyAgICAgICAgfQorICAgIH07CisgICAgbGV0IHByb3h5ID0gbmV3IFByb3h5
KHt9LCBoYW5kbGVyKTsKKyAgICBsZXQgZm9vID0gZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2Vy
dCghUmVmbGVjdC5oYXMocHJveHksICJ4IikpOworICAgICAgICBhc3NlcnQoY2FsbGVkKTsKKyAg
ICAgICAgY2FsbGVkID0gZmFsc2U7CisgICAgfQorICAgIG5vSW5saW5lKGZvbykKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAgICAgICAgZm9vKCk7CisgICAgfQorfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1yZXZva2UuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1y
ZXZva2UuanMJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3Ry
ZXNzL3Byb3h5LXJldm9rZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE5MSBAQAorZnVu
Y3Rpb24gYXNzZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigi
YmFkIGFzc2VydGlvbi4iKTsKK30KKworeworICAgIGFzc2VydChQcm94eS5yZXZvY2FibGUubGVu
Z3RoID09PSAyKTsKKyAgICBhc3NlcnQoUHJveHkucmV2b2NhYmxlLm5hbWUgPT09ICJyZXZvY2Fi
bGUiKTsKKworICAgIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgICBuZXcgUHJveHkucmV2b2NhYmxlOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5n
KCkgPT09ICJUeXBlRXJyb3I6IFByb3h5LnJldm9jYWJsZSBjYW4gbm90IGJlIGNvbnN0cnVjdGVk
LiBJdCBjYW4gb25seSBiZSBjYWxsZWQuIik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRo
cmV3KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgUHJveHkucmV2b2NhYmxlKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGUudG9T
dHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkucmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxl
ZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVyLiIpOworICAg
ICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorCisgICAgeworICAgICAgICBs
ZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFByb3h5LnJldm9j
YWJsZSh7fSk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVl
OworICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHku
cmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSB0YXJn
ZXQgYW5kIHRoZSBoYW5kbGVyLiIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7
CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIFByb3h5LnJldm9jYWJsZSh7fSwgbnVsbCk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGUu
dG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUg
YW4gT2JqZWN0Iik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9CisK
KyAgICB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAg
ICAgICAgUHJveHkucmV2b2NhYmxlKG51bGwsIHt9KTsKKyAgICAgICAgfSBjYXRjaChlKSB7Cisg
ICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygp
ID09PSAiVHlwZUVycm9yOiBBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCIp
OworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQorCisgICAgeworICAg
ICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFByb3h5
LnJldm9jYWJsZSh7fSwge30sIHt9KTsgLy8gSXQncyBva2F5IHRvIGNhbGwgd2l0aCA+IDIgYXJn
dW1lbnRzLgorICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBhc3NlcnQoIXRocmV3KTsKKyAgICB9CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgbGV0IHtyZXZva2V9ID0gIFByb3h5LnJldm9jYWJsZSh7
fSwge30pOyAvLyBJdCdzIG9rYXkgdG8gY2FsbCB3aXRoID4gMiBhcmd1bWVudHMuCisgICAgICAg
ICAgICBuZXcgcmV2b2tlOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6
IGZ1bmN0aW9uIGlzIG5vdCBhIGNvbnN0cnVjdG9yIChldmFsdWF0aW5nICduZXcgcmV2b2tlJyki
KTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KKworICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAgICAgZnVuY3Rpb24gZm9vKCkgeworICAg
ICAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgICAgICBsZXQge3Byb3h5LCByZXZv
a2V9ID0gUHJveHkucmV2b2NhYmxlKHt9LCB7fSk7CisgICAgICAgICAgICByZXZva2UoKTsKKyAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbmV3IFByb3h5KHByb3h5LCB7fSk7Cisg
ICAgICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICB0aHJldyA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogSWYgYSBQ
cm94eSdzIGhhbmRsZXIgaXMgYW5vdGhlciBQcm94eSBvYmplY3QsIHRoZSBvdGhlciBQcm94eSBz
aG91bGQgbm90IGhhdmUgYmVlbiByZXZva2VkLiIpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYXNzZXJ0KHRocmV3KTsKKyAgICAgICAgfQorICAgICAgICBmb28oKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGNhbGxBbGxIYW5kbGVycyhwcm94eSkgeworICAgIFJlZmxlY3QuZ2V0UHJvdG90
eXBlT2YocHJveHkpOworICAgIFJlZmxlY3Quc2V0UHJvdG90eXBlT2YocHJveHksIG51bGwpOwor
ICAgIFJlZmxlY3QuaXNFeHRlbnNpYmxlKHByb3h5KTsKKyAgICBSZWZsZWN0LnByZXZlbnRFeHRl
bnNpb25zKHByb3h5KTsKKyAgICBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm94
eSwgIngiKQorICAgIFJlZmxlY3QuaGFzKHByb3h5LCAieCIpCisgICAgUmVmbGVjdC5nZXQocHJv
eHksICJ4IikKKyAgICBwcm94eVsieCJdID0gMjA7IC8vIFJlZmxlY3Quc2V0CisgICAgUmVmbGVj
dC5kZWxldGVQcm9wZXJ0eShwcm94eSwgIngiKTsKKyAgICBSZWZsZWN0LmRlZmluZVByb3BlcnR5
KHByb3h5LCAieCIsIHt2YWx1ZTogNDAsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTog
dHJ1ZX0pOworICAgIFJlZmxlY3Qub3duS2V5cyhwcm94eSk7CisgICAgUmVmbGVjdC5hcHBseShw
cm94eSwgdGhpcywgW10pOworICAgIFJlZmxlY3QuY29uc3RydWN0KHByb3h5LCBbXSk7Cit9CisK
K2Z1bmN0aW9uIHNob3VsZFRocm93TnVsbEhhbmRsZXIoZikgeworICAgIGxldCB0aHJldyA9IGZh
bHNlOworICAgIHRyeSB7CisgICAgICAgIGYoKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
dGhyZXcgPSB0cnVlOworICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9y
OiBQcm94eSBoYXMgYWxyZWFkeSBiZWVuIHJldm9rZWQuIE5vIG1vcmUgb3BlcmF0aW9ucyBhcmUg
YWxsb3dlZCB0byBiZSBwZXJmb3JtZWQgb24gaXQuIik7CisgICAgfQorICAgIGFzc2VydCh0aHJl
dyk7Cit9CisKK2Z1bmN0aW9uIGFsbEhhbmRsZXJzU2hvdWxkVGhyb3cocHJveHkpIHsKKyAgICBz
aG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3QuZ2V0UHJvdG90eXBlT2YocHJveHkp
KTsKKyAgICBzaG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3Quc2V0UHJvdG90eXBl
T2YocHJveHksIG51bGwpKTsKKyAgICBzaG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxl
Y3QuaXNFeHRlbnNpYmxlKHByb3h5KSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9
PiBSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zKHByb3h5KSk7CisgICAgc2hvdWxkVGhyb3dOdWxs
SGFuZGxlcigoKSA9PiBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm94eSwgIngi
KSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0Lmhhcyhwcm94eSwg
IngiKSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0LmdldChwcm94
eSwgIngiKSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBwcm94eVsieCJdID0g
MjApOyAvLyBSZWZsZWN0LnNldAorICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkgPT4gUmVm
bGVjdC5kZWxldGVQcm9wZXJ0eShwcm94eSwgIngiKSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFu
ZGxlcigoKSA9PiBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHByb3h5LCAieCIsIHt2YWx1ZTogNDAs
IGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0pKTsKKyAgICBzaG91bGRUaHJv
d051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3Qub3duS2V5cyhwcm94eSkpOworICAgIHNob3VsZFRo
cm93TnVsbEhhbmRsZXIoKCkgPT4gUmVmbGVjdC5hcHBseShwcm94eSwgdGhpcywgW10pKTsKKyAg
ICBzaG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3QuY29uc3RydWN0KHByb3h5LCBb
XSkpOworfQorCitjb25zdCB0cmFwcyA9IFsKKyAgICAiZ2V0UHJvdG90eXBlT2YiLAorICAgICJz
ZXRQcm90b3R5cGVPZiIsCisgICAgImlzRXh0ZW5zaWJsZSIsCisgICAgInByZXZlbnRFeHRlbnNp
b25zIiwKKyAgICAiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwKKyAgICAiaGFzIiwKKyAgICAi
Z2V0IiwKKyAgICAic2V0IiwKKyAgICAiZGVsZXRlUHJvcGVydHkiLAorICAgICJkZWZpbmVQcm9w
ZXJ0eSIsCisgICAgIm93bktleXMiLAorICAgICJhcHBseSIsCisgICAgImNvbnN0cnVjdCIKK107
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICBsZXQgaGFuZGxlciA9IHt9
OworICAgIGxldCBjb3VudCA9IDA7CisgICAgbGV0IHRyYXBzQ2FsbGVkID0gbmV3IFNldDsKKyAg
ICBmb3IgKGxldCB0cmFwIG9mIHRyYXBzKSB7CisgICAgICAgIGxldCBmdW5jOworICAgICAgICBp
ZiAodHJhcCAhPT0gInNldCIpIHsKKyAgICAgICAgICAgIGZ1bmMgPSBgKGZ1bmN0aW9uICR7dHJh
cH0oLi4uYXJncykgeyBjb3VudCsrOyB0cmFwc0NhbGxlZC5hZGQoJHsiJyIgKyB0cmFwICsgIici
fSk7IHJldHVybiBSZWZsZWN0LiR7dHJhcH0oLi4uYXJncyk7IH0pYDsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGZ1bmMgPSBgKGZ1bmN0aW9uICR7dHJhcH0ocHJveHksIHByb3AsIHYp
IHsgdHJhcHNDYWxsZWQuYWRkKCR7IiciICsgdHJhcCArICInIn0pOyBjb3VudCsrOyBwcm94eVtw
cm9wXSA9IHY7IH0pYDsKKyAgICAgICAgfQorICAgICAgICBoYW5kbGVyW3RyYXBdID0gZXZhbChm
dW5jKTsKKyAgICB9CisKKworICAgIGxldCB7cHJveHksIHJldm9rZX0gPSBQcm94eS5yZXZvY2Fi
bGUoZnVuY3Rpb24oKXt9LCBoYW5kbGVyKTsgLy8gVG8gbWFrZSBjYWxsYWJsZSBhbmQgY29uc3Ry
dWN0aWJsZSB0cnVlLgorICAgIGNhbGxBbGxIYW5kbGVycyhwcm94eSk7CisgICAgYXNzZXJ0KGNv
dW50ID49IHRyYXBzLmxlbmd0aCk7CisgICAgZm9yIChsZXQgdHJhcCBvZiB0cmFwcykgeworICAg
ICAgICBsZXQgcmVzdWx0ID0gdHJhcHNDYWxsZWQuaGFzKHRyYXApOworICAgICAgICBhc3NlcnQo
cmVzdWx0KTsKKyAgICB9CisKKyAgICByZXZva2UoKTsKKyAgICBhbGxIYW5kbGVyc1Nob3VsZFRo
cm93KHByb3h5KTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTA7IGkrKykKKyAgICAgICAg
cmV2b2tlKCk7IC8vIFJlcGVhdGVkbHkgY2FsbGluZyByZXZva2UgaXMgT0suCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273257</attachid>
            <date>2016-03-07 18:35:02 -0800</date>
            <delta_ts>2016-03-07 20:03:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>37100</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NzE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDE2LTAzLTA3ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtFUzZdIEltcGxlbWVudCByZXZvY2FibGUgcHJveGllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0IGZvcndh
cmQgaW1wbGVtZW50YXRpb24gb2YgUHJveHkucmV2b2NhYmxlCisgICAgICAgIHdpdGggcmVzcGVj
dCB0byBzZWN0aW9uIDI2LjIuMi4xIG9mIHRoZSBFQ01BU2NyaXB0IHNwZWMuCisgICAgICAgIGh0
dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXByb3h5LnJldm9jYWJsZQorCisgICAg
ICAgIFRoaXMgcGF0Y2ggYWxzbyBmaXhlcyBhIGJ1ZyBpbiBQcm94eSB3aGVyZSB3ZQorICAgICAg
ICB3ZXJlIGluY29ycmVjdGx5IGNhY2hpbmcgImluIiwgaS5lLCBgIngiIGluIHByb3h5YC4KKyAg
ICAgICAgV2Ugc2hvdWxkIG5ldmVyIGJsYXRhbnRseSBjYWNoZSB0aGlzIGJlY2F1c2UgY2FjaGlu
ZyBpcyBvYnNlcnZhYmxlCisgICAgICAgIGJlaGF2aW9yIGJ5IHVzZXJzIG9mIHRoZSBsYW5ndWFn
ZS4gV2UgY291bGQgY29tZSB1cCB3aXRoCisgICAgICAgIGEgc21hcnRlciBjYWNoaW5nIHNjaGVt
ZSB0aGF0IGNhY2hlcyBvbmx5IGlmIHRoZSBQcm94eSdzCisgICAgICAgIGhhbmRsZXIgZG9lc24n
dCBoYXZlIGEgImhhcyIgcHJvcGVydHksIGkuZSwgd2UgZG9uJ3QgaGF2ZQorICAgICAgICB0byBj
YWxsIG91dCB0byBKUyBjb2RlLiBCdXQgZm9yIG5vdywgaXQncyBlYXNpZXN0IHRvIGRpc2FibGUK
KyAgICAgICAgY2FjaGluZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpp
bml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6Om1vZHVsZVJlY29yZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2Jq
ZWN0Ojptb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6cHJveHlPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6cHJveHlSZXZva2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6d2FzbU1vZHVsZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6UHJveHlDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChKU0M6Om1ha2VSZXZvY2FibGVQcm94eSk6CisgICAgICAgIChKU0M6OnByb3h5UmV2b2NhYmxl
Q29uc3RydWN0b3JUaHJvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlByb3h5
Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9i
amVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybVB1dCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgorICAgICAg
ICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtUHJl
dmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0
ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5
TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6
CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToKKyAgICAg
ICAgKEpTQzo6UHJveHlPYmplY3Q6OmdldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlByb3h5
T2JqZWN0OjpyZXZva2UpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6dmlzaXRDaGlsZHJl
bik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlByb3h5UmV2b2tlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQ
cm94eVJldm9rZTo6UHJveHlSZXZva2UpOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6Zmlu
aXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlSZXZva2UpOgorICAgICAg
ICAoSlNDOjpQcm94eVJldm9rZTo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpQcm94eVJl
dm9rZTo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9Qcm94eVJldm9rZS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6UHJveHlSZXZva2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlByb3h5UmV2b2tlOjpwcm94eSk6CisgICAgICAgIChKU0M6OlByb3h5UmV2b2tl
OjpzZXRQcm94eVRvTnVsbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9w
ZXJ0eS5qczoKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnQubGV0LmhhbmRsZXIu
aGFzKToKKyAgICAgICAgKGFzc2VydC5sZXQuZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3Mv
cHJveHktcmV2b2tlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0aHJv
dy5uZXcuRXJyb3IuKToKKyAgICAgICAgKHRocm93Lm5ldy5FcnJvcik6CisgICAgICAgIChjYWxs
QWxsSGFuZGxlcnMpOgorICAgICAgICAoc2hvdWxkVGhyb3dOdWxsSGFuZGxlcik6CisgICAgICAg
IChhbGxIYW5kbGVyc1Nob3VsZFRocm93KToKKyAgICAgICAgKGkubGV0LnRyYXAub2YudHJhcHMu
dHJhcC5zdHJpbmdfYXBwZWFyZWRfaGVyZS5mdW5jKToKKyAgICAgICAgKGkubGV0LnRyYXAub2Yu
dHJhcHMuZWxzZS5mdW5jKToKKyAgICAgICAgKGkuUHJveHkucmV2b2NhYmxlKToKKwogMjAxNi0w
My0wNyAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiB0aGUgcHJvdG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBnZW5lcmF0ZSBmYWN0b3J5IG1ldGhv
ZCBzdHVicyBmb3IgcHJvdG9jb2wgdHlwZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDE5NzcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY0LDYgKzc2NCw3IEBAIHNldChKYXZhU2Ny
aXB0Q29yZV9TT1VSQ0VTCiAgICAgcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCiAgICAgcnVudGlt
ZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCisgICAg
cnVudGltZS9Qcm94eVJldm9rZS5jcHAKICAgICBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCiAg
ICAgcnVudGltZS9SZWdFeHAuY3BwCiAgICAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc3MTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTI2OSw2ICsxMjY5LDggQEAKIAkJNzBFQ0E2MDcxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDIxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRl
UmVnaXN0cnkuY3BwICovOyB9OwogCQk3MEVDQTYwODFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxh
dGVSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzBFQ0E2MDMxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRC
RUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRl
bXBsYXRlUmVnaXN0cnlLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3OTE2MERCRDFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkxNjBEQkIx
QzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmNwcCAqLzsgfTsKKwkJNzkxNjBEQkUxQzhF
M0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3OTE2MERCQzFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZv
a2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
OTJDQjM0OTFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVPcmlnaW5NYXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkyQ0IzNDcxQzRFRUQ1QzAw
RDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmNwcCAqLzsgfTsKIAkJNzkyQ0IzNEExQzRFRUQ1
QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OTJDQjM0ODFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0Nv
ZGVPcmlnaW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk2NDY1NjgxQjk1MkZGMDAw
MzA1OUVFIC8qIEdldFB1dEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMzQyNyw2ICszNDI5LDggQEAKIAkJNzBFQ0E2MDIxQUZEQkVBMjAw
NDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVGVtcGxhdGVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwRUNBNjAzMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlUmVnaXN0cnkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBs
YXRlUmVnaXN0cnlLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxh
dGVSZWdpc3RyeUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTE2MERCQjFD
OEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUHJveHlSZXZva2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3OTE2MERCQzFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJveHlSZXZva2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzkyQ0IzNDcxQzRFRUQ1QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFw
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBDVG9Db2RlT3JpZ2lu
TWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkyQ0IzNDgxQzRFRUQ1QzAw
RDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBDVG9Db2RlT3JpZ2luTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc5NjQ2NTY4MUI5NTJGRjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdldFB1dEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTU4NTMsNiArNTg1Nyw4IEBACiAJCQkJNzlCMDBDQjkxQzZBQjA3RTAwODhDNjVEIC8q
IFByb3h5Q29uc3RydWN0b3IuaCAqLywKIAkJCQk3OUIwMENCQTFDNkFCMDdFMDA4OEM2NUQgLyog
UHJveHlPYmplY3QuY3BwICovLAogCQkJCTc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94
eU9iamVjdC5oICovLAorCQkJCTc5MTYwREJCMUM4RTNFQzgwMDhDMDg1QSAvKiBQcm94eVJldm9r
ZS5jcHAgKi8sCisJCQkJNzkxNjBEQkMxQzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmgg
Ki8sCiAJCQkJMEY1NzgwQTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLywKIAkJCQkw
RjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8sCiAJCQkJ
MTQ3Qjg0NjIwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLApAQCAtNjg5
OCw2ICs2OTA0LDcgQEAKIAkJCQk3OUIwMENCRDFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk5RUY3QzQxQzU2RUQ5NjAwMkIwNTM0IC8q
IEIzUENUb09yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMDBDQkYxQzZBQjA3RTAw
ODhDNjVEIC8qIFByb3h5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3OTE2MERCRTFDOEUz
RUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MkNCMzRB
MUM0RUVENUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzlDRkM2RjAxQzMzQjEwMDAwQzc2OEVBIC8qIExMSW50UENSYW5nZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTc5RDVDRDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTkxNTgsNiArOTE2NSw3IEBACiAJCQkJRTM1NUYzNTIxQjdEQzg1
MzAwQzUwREM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjMzOEUwQjFCRjAyNzZDMDAxM0M4OEYgLyogQjNDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OTE2MERCRDFDOEUzRUM4MDA4QzA4NUEgLyogUHJv
eHlSZXZva2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTExMDdFQzdFNzAwNjUwNDQ2
IC8qIE5hdGl2ZUVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzM0U4RDIw
MUI5MDEzREUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2Vz
ICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcg
QEAKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb3h5Q29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAj
aW5jbHVkZSAiUmVmbGVjdE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCkBAIC0zNzAsNiArMzcxLDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX3Byb3h5T2JqZWN0U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb3h5UmV2b2tlU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgUHJveHlSZXZva2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlv
blByb3RvdHlwZS5nZXQoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBt
X3dhc21Nb2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0
cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtOTExLDYgKzkxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV9kb2xsYXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
aW50ZXJuYWxGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fcHJveHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2FzbU1vZHVsZVN0cnVjdHVyZSk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4Miw3IEBAIHBy
b3RlY3RlZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0U3Ry
dWN0dXJlOworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1
cmU7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fd2FzbU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNTM1LDYgKzUzNiw3IEBAIHB1Ymxp
YzoKICAgICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVO
YW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFj
ZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlPYmplY3RTdHJ1
Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9Cisg
ICAgU3RydWN0dXJlKiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
eHlSZXZva2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
U3RydWN0dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9k
dWxlU3RydWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc3MTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEzIEBACiAjaW5jbHVkZSAiUHJveHlDb25zdHJ1
Y3Rvci5oIgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5l
cy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5s
aW5lcy5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKKyNpbmNsdWRlICJQcm94eVJl
dm9rZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC00Miw3ICs0NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBQcm94eUNvbnN0cnVjdG9yOjpzX2lu
Zm8KIFByb3h5Q29uc3RydWN0b3IqIFByb3h5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFByb3h5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9y
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IFByb3h5Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKHZtLCAiUHJveHkiKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sICJQcm94eSIsIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKIH0KIApAQCAtNTEsMTEgKzU0LDQyIEBAIFByb3h5Q29uc3RydWN0b3I6OlByb3h5
Q29uc3RydWN0b3IoVk0mIHYKIHsKIH0KIAotdm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBj
YWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlci4iKSk7
CisKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAg
ICBKU1ZhbHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CisgICAgSlNWYWx1ZSBoYW5kbGVyID0gYXJn
cy5hdCgxKTsKKyAgICBQcm94eU9iamVjdCogcHJveHkgPSBQcm94eU9iamVjdDo6Y3JlYXRlKGV4
ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJveHlPYmplY3RTdHJ1Y3R1cmUoKSwg
dGFyZ2V0LCBoYW5kbGVyKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBQcm94eVJldm9rZSogcmV2b2tlID0g
UHJveHlSZXZva2U6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm94
eVJldm9rZVN0cnVjdHVyZSgpLCBwcm94eSk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBKU09iamVjdCog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicHJveHkiKSwgcHJveHksIE5v
bmUpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwgInJldm9r
ZSIpLCByZXZva2UsIE5vbmUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworfQorCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9jYWJs
ZUNvbnN0cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgY2FuIG5v
dCBiZSBjb25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkLiIpKTsKK30KKwordm9pZCBQ
cm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIG5hbWUpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicmV2b2NhYmxlIiksIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCBBU0NJSUxpdGVyYWwoInJldm9jYWJsZSIpLCBtYWtl
UmV2b2NhYmxlUHJveHksIE5vSW50cmluc2ljLCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhy
b3dFcnJvcikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RQcm94eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTc3MTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAogICAgIH0KIAotICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oVk0mLCBjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0
aW9uKFZNJiwgY29uc3QgY2hhciogbmFtZSwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToK
ICAgICBQcm94eUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc3MTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzLDEwICs1Myw4IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoUHJveHlPYmplY3Qq
IHRhcmdldEFzUHJveHkgPSBqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4odGFyZ2V0KSkgewot
ICAgICAgICAvLyBGSVhNRTogQWRkIHRlc3RzIGZvciB0aGlzIG9uY2Ugd2UgaW1wbGVtZW50IFBy
b3h5LnJldm9rZSguKS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1NDMyMQogICAgICAgICBpZiAodGFyZ2V0QXNQcm94eS0+aGFuZGxlcigpLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IklmIGEgUHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIg
UHJveHkgb2JqZWN0IG11c3QgaGF2ZSBhIG5vbi1udWxsIGhhbmRsZXIuIikpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJZiBhIFByb3h5J3MgaGFuZGxl
ciBpcyBhbm90aGVyIFByb3h5IG9iamVjdCwgdGhlIG90aGVyIFByb3h5IHNob3VsZCBub3QgaGF2
ZSBiZWVuIHJldm9rZWQuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpAQCAtNzcsNiArNzUsOCBAQCB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sCiAgICAgbV9oYW5kbGVyLnNldCh2bSwgdGhpcywgaGFuZGxlcik7CiB9CiAKK3N0YXRpYyBj
b25zdCBjaGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UgPSAiUHJveHkgaGFz
IGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQgdG8g
YmUgcGVyZm9ybWVkIG9uIGl0LiI7CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwZXJmb3JtUHJv
eHlHZXQoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTExMyw3
ICsxMTMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4CiAKICAg
ICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5T2JqZWN0LT5oYW5kbGVyKCk7CiAgICAgaWYg
KGhhbmRsZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJl
IGFuIE9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAgIEpT
T2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIFByb3h5T2JqZWN0Ojpw
ZXJmb3JtSW50ZXJuYWxNZXRob2RHCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMt
PmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVs
bC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNjcsNyArMjY3LDcgQEAgYm9vbCBQ
cm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVy
VmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkg
ewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hh
bmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJv
ck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzYwLDcgKzM2
MCw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiAKIAogICAgIEpT
VmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFs
dWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4gT2JqZWN0LiIpKTsK
KyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVh
ZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAg
ICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2FsbGVl
KCkpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBp
ZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQg
YmUgYW4gT2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAg
SlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmYKICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8
UHJveHlPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSBwcm94eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hh
bmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZv
a2VkRXJyb3JNZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09i
amVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC01NDYsNyAr
NTQ2LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogCiAgICAg
SlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJW
YWx1ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiUHJveHkgJ2hhbmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikp
OworICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxy
ZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtNjE1LDcgKzYxNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0
ZW5zaW8KIAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAg
IGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUg
YW4gT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtSXNFeHRlbnNpYmxlKEV4CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhh
bmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4g
SXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03MjUsNyArNzI1LDcgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFs
dWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewot
ICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRs
ZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1l
c3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtODA5LDcgKzgwOSw3
IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigp
OwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91
bGQgYmUgYW4gT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTk3MCw3ICs5NzAsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJm
b3JtU2V0UHJvdG90eXBlKEV4CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhh
bmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4g
SXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBKU1ZhbHVl
IFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJW
YWx1ZSA9IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7
Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFu
ZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9y
TWVzc2FnZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTA3OCw2
ICsxMDc4LDEzIEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OmdldFByb3RvdHlwZShKU09iamUKICAg
ICByZXR1cm4ganNDYXN0PFByb3h5T2JqZWN0Kj4ob2JqZWN0KS0+cGVyZm9ybUdldFByb3RvdHlw
ZShleGVjKTsKIH0KIAordm9pZCBQcm94eU9iamVjdDo6cmV2b2tlKFZNJiB2bSkKK3sgCisgICAg
Ly8gVGhpcyBzaG91bGQgb25seSBldmVyIGJlIGNhbGxlZCBvbmNlIGFuZCB3ZSBzaG91bGQgc3Ry
aWN0bHkgdHJhbnNpdGlvbiBmcm9tIE9iamVjdCB0byBudWxsLgorICAgIFJFTEVBU0VfQVNTRVJU
KCFtX2hhbmRsZXIuZ2V0KCkuaXNOdWxsKCkgJiYgbV9oYW5kbGVyLmdldCgpLmlzT2JqZWN0KCkp
OworICAgIG1faGFuZGxlci5zZXQodm0sIHRoaXMsIGpzTnVsbCgpKTsKK30KKwogdm9pZCBQcm94
eU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9y
KQogewogICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4o
Y2VsbCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0
LmgJKHJldmlzaW9uIDE5NzcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gV2UgbGllIGFuIHNheSB3ZSBvdmVycmlkZSBnZXRQcm9wZXJ0eU5hbWVzKCkgYmVjYXVz
ZSBpdCBwcmV2ZW50cwogICAgIC8vIHByb3BlcnR5IG5hbWUgZW51bWVyYXRpb24gY2FjaGluZy4K
LSAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1
cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFR5cGVPZlNob3VsZENhbGxH
ZXRDYWxsRGF0YSB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIGNvbnN0IHN0
YXRpYyB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3Zl
cnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgVHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhIHwg
SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVy
byB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7
CiAKICAgICBzdGF0aWMgUHJveHlPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogICAgIHsK
QEAgLTY2LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlND
ZWxsKiwgRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNo
b3VsZFRocm93KTsKICAgICB2b2lkIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1
ZSB0aGlzVmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9v
bCBzaG91bGRUaHJvdyk7CiAgICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0
ZSopOworICAgIHZvaWQgcmV2b2tlKFZNJik7CiAKIHByaXZhdGU6CiAgICAgUHJveHlPYmplY3Qo
Vk0mLCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3h5UmV2b2tlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eVJldm9rZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eVJldm9rZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlNsb3RWaXNp
dG9ySW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKFByb3h5UmV2b2tlKTsKKworY29uc3QgQ2xhc3NJbmZvIFByb3h5
UmV2b2tlOjpzX2luZm8gPSB7ICJQcm94eVJldm9rZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoUHJveHlSZXZva2UpIH07CisKK1Byb3h5UmV2b2tlKiBQcm94eVJldm9r
ZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3h5T2JqZWN0KiBwcm94
eSkKK3sKKyAgICBQcm94eVJldm9rZSogcmV2b2tlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8UHJveHlSZXZva2U+KHZtLmhlYXApKSBQcm94eVJldm9rZSh2bSwgc3RydWN0dXJlKTsKKyAg
ICByZXZva2UtPmZpbmlzaENyZWF0aW9uKHZtLCAicmV2b2tlIiwgcHJveHkpOworICAgIHJldHVy
biByZXZva2U7Cit9CisKK1Byb3h5UmV2b2tlOjpQcm94eVJldm9rZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFBy
b3h5UmV2b2tlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUsIFByb3h5
T2JqZWN0KiBwcm94eSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgU3RyaW5nKG5h
bWUpKTsKKyAgICBtX3Byb3h5LnNldCh2bSwgdGhpcywgcHJveHkpOworCisgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHBlcmZvcm1Qcm94eVJldm9rZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgUHJveHlS
ZXZva2UqIHByb3h5UmV2b2tlID0ganNDYXN0PFByb3h5UmV2b2tlKj4oZXhlYy0+Y2FsbGVlKCkp
OworICAgIEpTVmFsdWUgcHJveHlWYWx1ZSA9IHByb3h5UmV2b2tlLT5wcm94eSgpOworICAgIGlm
IChwcm94eVZhbHVlLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworCisgICAgUHJveHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2Jq
ZWN0Kj4ocHJveHlWYWx1ZSk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBwcm94eS0+
cmV2b2tlKHZtKTsKKyAgICBwcm94eVJldm9rZS0+c2V0UHJveHlUb051bGwodm0pOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0NhbGxUeXBlIFByb3h5
UmV2b2tlOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCit7CisgICAg
Y2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uID0gcGVyZm9ybVByb3h5UmV2b2tlOworICAgIHJldHVy
biBDYWxsVHlwZTo6SG9zdDsKK30KKwordm9pZCBQcm94eVJldm9rZTo6dmlzaXRDaGlsZHJlbihK
U0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIFByb3h5UmV2b2tlKiB0
aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5UmV2b2tlKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09C
SkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRy
ZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisKKyAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVj
dC0+bV9wcm94eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eVJldm9rZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQcm94eVJldm9rZV9oCisjZGVmaW5lIFByb3h5UmV2b2tlX2gKKworI2luY2x1
ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFByb3h5
T2JqZWN0OworCitjbGFzcyBQcm94eVJldm9rZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKKwor
ICAgIHN0YXRpYyBQcm94eVJldm9rZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUHJveHlPYmpl
Y3QqKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKSAKKyAgICB7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7IAorICAgIH0KKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBj
b25zdCBjaGFyKiBuYW1lLCBQcm94eU9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKKyAgICBKU1ZhbHVlIHByb3h5KCkgeyByZXR1
cm4gbV9wcm94eS5nZXQoKTsgfQorICAgIHZvaWQgc2V0UHJveHlUb051bGwoVk0mIHZtKSB7IHJl
dHVybiBtX3Byb3h5LnNldCh2bSwgdGhpcywganNOdWxsKCkpOyB9CisKK3ByaXZhdGU6CisgICAg
UHJveHlSZXZva2UoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgQ2FsbFR5cGUgZ2V0Q2Fs
bERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmKTsKKworICAgIFdyaXRlQmFycmllcjxVbmtub3duPiBt
X3Byb3h5OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBQcm94eVJldm9r
ZV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2VzNi55YW1sCShyZXZpc2lvbiAxOTc3
MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvZXM2LnlhbWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEwNjMsNyArMTA2Myw3IEBACiAtIHBhdGg6IGVzNi9Qcm94eV9wcmV2ZW50RXh0ZW5z
aW9uc19oYW5kbGVyLmpzCiAgIGNtZDogcnVuRVM2IDpub3JtYWwKIC0gcGF0aDogZXM2L1Byb3h5
X1Byb3h5LnJldm9jYWJsZS5qcwotICBjbWQ6IHJ1bkVTNiA6ZmFpbAorICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9zZXRfaGFuZGxlci5qcwogICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9zZXRfaGFuZGxlcl9pbnN0YW5jZXNfb2ZfcHJveGll
cy5qcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9wcm94eS1oYXMt
cHJvcGVydHkuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wcm94eS1oYXMtcHJvcGVydHkuanMJKHJldmlzaW9uIDE5NzcxNSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3BlcnR5LmpzCSh3b3JraW5n
IGNvcHkpCkBAIC00NDMsMyArNDQzLDIzIEBAIGZ1bmN0aW9uIGFzc2VydChiKSB7CiAgICAgICAg
IGFzc2VydCghY2FsbGVkMSk7CiAgICAgfQogfQorCit7CisgICAgbGV0IGNhbGxlZCA9IGZhbHNl
OworICAgIGxldCBoYW5kbGVyID0geworICAgICAgICBoYXM6IGZ1bmN0aW9uKC4uLmFyZ3MpIHsK
KyAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gUmVmbGVjdC5o
YXMoLi4uYXJncyk7CisgICAgICAgIH0KKyAgICB9OworICAgIGxldCBwcm94eSA9IG5ldyBQcm94
eSh7fSwgaGFuZGxlcik7CisgICAgbGV0IGZvbyA9IGZ1bmN0aW9uKCkgeworICAgICAgICBhc3Nl
cnQoIVJlZmxlY3QuaGFzKHByb3h5LCAieCIpKTsKKyAgICAgICAgYXNzZXJ0KGNhbGxlZCk7Cisg
ICAgICAgIGNhbGxlZCA9IGZhbHNlOworICAgIH0KKyAgICBub0lubGluZShmb28pCisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgICAgIGZvbygpOworICAgIH0KK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktcmV2b2tlLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHkt
cmV2b2tlLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9wcm94eS1yZXZva2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxOTEgQEAKK2Z1
bmN0aW9uIGFzc2VydChiKSB7CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
ImJhZCBhc3NlcnRpb24uIik7Cit9CisKK3sKKyAgICBhc3NlcnQoUHJveHkucmV2b2NhYmxlLmxl
bmd0aCA9PT0gMik7CisgICAgYXNzZXJ0KFByb3h5LnJldm9jYWJsZS5uYW1lID09PSAicmV2b2Nh
YmxlIik7CisKKyAgICB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgbmV3IFByb3h5LnJldm9jYWJsZTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmlu
ZygpID09PSAiVHlwZUVycm9yOiBQcm94eS5yZXZvY2FibGUgY2FuIG5vdCBiZSBjb25zdHJ1Y3Rl
ZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkLiIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0
aHJldyk7CisgICAgfQorCisgICAgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgIFByb3h5LnJldm9jYWJsZSgpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRv
U3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IFByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxs
ZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlci4iKTsKKyAg
ICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
bGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBQcm94eS5yZXZv
Y2FibGUoe30pOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1
ZTsKKyAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IFByb3h5
LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFy
Z2V0IGFuZCB0aGUgaGFuZGxlci4iKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBQcm94eS5yZXZvY2FibGUoe30sIG51bGwpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2VydChl
LnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEEgUHJveHkncyAnaGFuZGxlcicgc2hvdWxkIGJl
IGFuIE9iamVjdCIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0aHJldyk7CisgICAgfQor
CisgICAgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIFByb3h5LnJldm9jYWJsZShudWxsLCB7fSk7CisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmco
KSA9PT0gIlR5cGVFcnJvcjogQSBQcm94eSdzICd0YXJnZXQnIHNob3VsZCBiZSBhbiBPYmplY3Qi
KTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KKworICAgIHsKKyAg
ICAgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBQcm94
eS5yZXZvY2FibGUoe30sIHt9LCB7fSk7IC8vIEl0J3Mgb2theSB0byBjYWxsIHdpdGggPiAyIGFy
Z3VtZW50cy4KKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KCF0aHJldyk7CisgICAgfQorCisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxldCB7cmV2b2tlfSA9ICBQcm94eS5yZXZvY2FibGUo
e30sIHt9KTsgLy8gSXQncyBva2F5IHRvIGNhbGwgd2l0aCA+IDIgYXJndW1lbnRzLgorICAgICAg
ICAgICAgbmV3IHJldm9rZTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJl
dyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9y
OiBmdW5jdGlvbiBpcyBub3QgYSBjb25zdHJ1Y3RvciAoZXZhbHVhdGluZyAnbmV3IHJldm9rZScp
Iik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgICAgIGZ1bmN0aW9uIGZvbygpIHsKKyAg
ICAgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICAgICAgbGV0IHtwcm94eSwgcmV2
b2tlfSA9IFByb3h5LnJldm9jYWJsZSh7fSwge30pOworICAgICAgICAgICAgcmV2b2tlKCk7Cisg
ICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG5ldyBQcm94eShwcm94eSwge30pOwor
ICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAgdGhyZXcgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IElmIGEg
UHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIgUHJveHkg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gcmV2b2tlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGFzc2VydCh0aHJldyk7CisgICAgICAgIH0KKyAgICAgICAgZm9vKCk7CisgICAgfQorfQor
CitmdW5jdGlvbiBjYWxsQWxsSGFuZGxlcnMocHJveHkpIHsKKyAgICBSZWZsZWN0LmdldFByb3Rv
dHlwZU9mKHByb3h5KTsKKyAgICBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHByb3h5LCBudWxsKTsK
KyAgICBSZWZsZWN0LmlzRXh0ZW5zaWJsZShwcm94eSk7CisgICAgUmVmbGVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyhwcm94eSk7CisgICAgUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJv
eHksICJ4IikKKyAgICBSZWZsZWN0Lmhhcyhwcm94eSwgIngiKQorICAgIFJlZmxlY3QuZ2V0KHBy
b3h5LCAieCIpCisgICAgcHJveHlbIngiXSA9IDIwOyAvLyBSZWZsZWN0LnNldAorICAgIFJlZmxl
Y3QuZGVsZXRlUHJvcGVydHkocHJveHksICJ4Iik7CisgICAgUmVmbGVjdC5kZWZpbmVQcm9wZXJ0
eShwcm94eSwgIngiLCB7dmFsdWU6IDQwLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6
IHRydWV9KTsKKyAgICBSZWZsZWN0Lm93bktleXMocHJveHkpOworICAgIFJlZmxlY3QuYXBwbHko
cHJveHksIHRoaXMsIFtdKTsKKyAgICBSZWZsZWN0LmNvbnN0cnVjdChwcm94eSwgW10pOworfQor
CitmdW5jdGlvbiBzaG91bGRUaHJvd051bGxIYW5kbGVyKGYpIHsKKyAgICBsZXQgdGhyZXcgPSBm
YWxzZTsKKyAgICB0cnkgeworICAgICAgICBmKCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAg
IHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJv
cjogUHJveHkgaGFzIGFscmVhZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMgYXJl
IGFsbG93ZWQgdG8gYmUgcGVyZm9ybWVkIG9uIGl0LiIpOworICAgIH0KKyAgICBhc3NlcnQodGhy
ZXcpOworfQorCitmdW5jdGlvbiBhbGxIYW5kbGVyc1Nob3VsZFRocm93KHByb3h5KSB7CisgICAg
c2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0LmdldFByb3RvdHlwZU9mKHByb3h5
KSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0LnNldFByb3RvdHlw
ZU9mKHByb3h5LCBudWxsKSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZs
ZWN0LmlzRXh0ZW5zaWJsZShwcm94eSkpOworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkg
PT4gUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhwcm94eSkpOworICAgIHNob3VsZFRocm93TnVs
bEhhbmRsZXIoKCkgPT4gUmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJveHksICJ4
IikpOworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkgPT4gUmVmbGVjdC5oYXMocHJveHks
ICJ4IikpOworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkgPT4gUmVmbGVjdC5nZXQocHJv
eHksICJ4IikpOworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkgPT4gcHJveHlbIngiXSA9
IDIwKTsgLy8gUmVmbGVjdC5zZXQKKyAgICBzaG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJl
ZmxlY3QuZGVsZXRlUHJvcGVydHkocHJveHksICJ4IikpOworICAgIHNob3VsZFRocm93TnVsbEhh
bmRsZXIoKCkgPT4gUmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShwcm94eSwgIngiLCB7dmFsdWU6IDQw
LCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9KSk7CisgICAgc2hvdWxkVGhy
b3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0Lm93bktleXMocHJveHkpKTsKKyAgICBzaG91bGRU
aHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3QuYXBwbHkocHJveHksIHRoaXMsIFtdKSk7Cisg
ICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0LmNvbnN0cnVjdChwcm94eSwg
W10pKTsKK30KKworY29uc3QgdHJhcHMgPSBbCisgICAgImdldFByb3RvdHlwZU9mIiwKKyAgICAi
c2V0UHJvdG90eXBlT2YiLAorICAgICJpc0V4dGVuc2libGUiLAorICAgICJwcmV2ZW50RXh0ZW5z
aW9ucyIsCisgICAgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsCisgICAgImhhcyIsCisgICAg
ImdldCIsCisgICAgInNldCIsCisgICAgImRlbGV0ZVByb3BlcnR5IiwKKyAgICAiZGVmaW5lUHJv
cGVydHkiLAorICAgICJvd25LZXlzIiwKKyAgICAiYXBwbHkiLAorICAgICJjb25zdHJ1Y3QiCitd
OworCitmb3IgKGxldCBpID0gMDsgaSA8IDUwMDsgaSsrKSB7CisgICAgbGV0IGhhbmRsZXIgPSB7
fTsKKyAgICBsZXQgY291bnQgPSAwOworICAgIGxldCB0cmFwc0NhbGxlZCA9IG5ldyBTZXQ7Cisg
ICAgZm9yIChsZXQgdHJhcCBvZiB0cmFwcykgeworICAgICAgICBsZXQgZnVuYzsKKyAgICAgICAg
aWYgKHRyYXAgIT09ICJzZXQiKSB7CisgICAgICAgICAgICBmdW5jID0gYChmdW5jdGlvbiAke3Ry
YXB9KC4uLmFyZ3MpIHsgY291bnQrKzsgdHJhcHNDYWxsZWQuYWRkKCR7IiciICsgdHJhcCArICIn
In0pOyByZXR1cm4gUmVmbGVjdC4ke3RyYXB9KC4uLmFyZ3MpOyB9KWA7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBmdW5jID0gYChmdW5jdGlvbiAke3RyYXB9KHByb3h5LCBwcm9wLCB2
KSB7IHRyYXBzQ2FsbGVkLmFkZCgkeyInIiArIHRyYXAgKyAiJyJ9KTsgY291bnQrKzsgcHJveHlb
cHJvcF0gPSB2OyB9KWA7CisgICAgICAgIH0KKyAgICAgICAgaGFuZGxlclt0cmFwXSA9IGV2YWwo
ZnVuYyk7CisgICAgfQorCisKKyAgICBsZXQge3Byb3h5LCByZXZva2V9ID0gUHJveHkucmV2b2Nh
YmxlKGZ1bmN0aW9uKCl7fSwgaGFuZGxlcik7IC8vIFRvIG1ha2UgY2FsbGFibGUgYW5kIGNvbnN0
cnVjdGlibGUgdHJ1ZS4KKyAgICBjYWxsQWxsSGFuZGxlcnMocHJveHkpOworICAgIGFzc2VydChj
b3VudCA+PSB0cmFwcy5sZW5ndGgpOworICAgIGZvciAobGV0IHRyYXAgb2YgdHJhcHMpIHsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IHRyYXBzQ2FsbGVkLmhhcyh0cmFwKTsKKyAgICAgICAgYXNzZXJ0
KHJlc3VsdCk7CisgICAgfQorCisgICAgcmV2b2tlKCk7CisgICAgYWxsSGFuZGxlcnNTaG91bGRU
aHJvdyhwcm94eSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDUwOyBpKyspCisgICAgICAg
IHJldm9rZSgpOyAvLyBSZXBlYXRlZGx5IGNhbGxpbmcgcmV2b2tlIGlzIE9LLgorfQo=
</data>
<flag name="review"
          id="297848"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273262</attachid>
            <date>2016-03-07 20:03:20 -0800</date>
            <delta_ts>2016-03-07 23:16:10 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>37125</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NzE5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBA
CisyMDE2LTAzLTA3ICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtFUzZdIEltcGxlbWVudCByZXZvY2FibGUgcHJveGllcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0MzIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
TWFyayBMYW0uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0IGZvcndhcmQgaW1w
bGVtZW50YXRpb24gb2YgUHJveHkucmV2b2NhYmxlCisgICAgICAgIHdpdGggcmVzcGVjdCB0byBz
ZWN0aW9uIDI2LjIuMi4xIG9mIHRoZSBFQ01BU2NyaXB0IHNwZWMuCisgICAgICAgIGh0dHBzOi8v
dGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXByb3h5LnJldm9jYWJsZQorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWxzbyBmaXhlcyBhIGJ1ZyBpbiBQcm94eSB3aGVyZSB3ZQorICAgICAgICB3ZXJl
IGluY29ycmVjdGx5IGNhY2hpbmcgImluIiwgaS5lLCBgIngiIGluIHByb3h5YC4KKyAgICAgICAg
V2Ugc2hvdWxkIG5ldmVyIGJsYXRhbnRseSBjYWNoZSB0aGlzIGJlY2F1c2UgY2FjaGluZyBpcyBv
YnNlcnZhYmxlCisgICAgICAgIGJlaGF2aW9yIGJ5IHVzZXJzIG9mIHRoZSBsYW5ndWFnZS4gV2Ug
Y291bGQgY29tZSB1cCB3aXRoCisgICAgICAgIGEgc21hcnRlciBjYWNoaW5nIHNjaGVtZSB0aGF0
IGNhY2hlcyBvbmx5IGlmIHRoZSBQcm94eSdzCisgICAgICAgIGhhbmRsZXIgZG9lc24ndCBoYXZl
IGEgImhhcyIgcHJvcGVydHksIGkuZSwgd2UgZG9uJ3QgaGF2ZQorICAgICAgICB0byBjYWxsIG91
dCB0byBKUyBjb2RlLiBCdXQgZm9yIG5vdywgaXQncyBlYXNpZXN0IHRvIGRpc2FibGUKKyAgICAg
ICAgY2FjaGluZy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
Om1vZHVsZVJlY29yZFN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpt
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6cHJveHlPYmplY3RTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6cHJveHlSZXZva2VTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
d2FzbU1vZHVsZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAg
KEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6UHJveHlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6
Om1ha2VSZXZvY2FibGVQcm94eSk6CisgICAgICAgIChKU0M6OnByb3h5UmV2b2NhYmxlQ29uc3Ry
dWN0b3JUaHJvd0Vycm9yKToKKyAgICAgICAgKEpTQzo6UHJveHlDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm94eU9iamVjdCk6CisgICAgICAg
ICogcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OlByb3h5Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
IChKU0M6OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJm
b3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2Jq
ZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVy
Zm9ybVB1dCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgorICAgICAgICAoSlND
OjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVy
Zm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4
dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJs
ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkp
OgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMp
OgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZSk6CisgICAg
ICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpT
Qzo6UHJveHlPYmplY3Q6OmdldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpyZXZva2UpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5oOgorICAgICAgICAoSlNDOjpQcm94eU9iamVj
dDo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1Byb3h5UmV2b2tlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlByb3h5UmV2b2tlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpQcm94eVJl
dm9rZTo6UHJveHlSZXZva2UpOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlSZXZva2UpOgorICAgICAgICAoSlND
OjpQcm94eVJldm9rZTo6Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpQcm94eVJldm9rZTo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogcnVudGltZS9Qcm94eVJldm9rZS5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6UHJveHlSZXZva2U6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChK
U0M6OlByb3h5UmV2b2tlOjpwcm94eSk6CisgICAgICAgIChKU0M6OlByb3h5UmV2b2tlOjpzZXRQ
cm94eVRvTnVsbCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3Byb3h5LWhhcy1wcm9wZXJ0eS5q
czoKKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgIChhc3NlcnQubGV0LmhhbmRsZXIuaGFzKToK
KyAgICAgICAgKGFzc2VydC5sZXQuZm9vKToKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvcHJveHkt
cmV2b2tlLmpzOiBBZGRlZC4KKyAgICAgICAgKGFzc2VydCk6CisgICAgICAgICh0aHJvdy5uZXcu
RXJyb3IuKToKKyAgICAgICAgKHRocm93Lm5ldy5FcnJvcik6CisgICAgICAgIChjYWxsQWxsSGFu
ZGxlcnMpOgorICAgICAgICAoc2hvdWxkVGhyb3dOdWxsSGFuZGxlcik6CisgICAgICAgIChhbGxI
YW5kbGVyc1Nob3VsZFRocm93KToKKyAgICAgICAgKGkubGV0LnRyYXAub2YudHJhcHMudHJhcC5z
dHJpbmdfYXBwZWFyZWRfaGVyZS5mdW5jKToKKyAgICAgICAgKGkubGV0LnRyYXAub2YudHJhcHMu
ZWxzZS5mdW5jKToKKyAgICAgICAgKGkuUHJveHkucmV2b2NhYmxlKToKKwogMjAxNi0wMy0wNyAg
QnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiB0
aGUgcHJvdG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBnZW5lcmF0ZSBmYWN0b3J5IG1ldGhvZCBzdHVi
cyBmb3IgcHJvdG9jb2wgdHlwZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDE5NzcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzY0LDYgKzc2NCw3IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCiAgICAgcnVudGltZS9Qcm94
eUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCisgICAgcnVudGlt
ZS9Qcm94eVJldm9rZS5jcHAKICAgICBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCiAgICAgcnVu
dGltZS9SZWdFeHAuY3BwCiAgICAgcnVudGltZS9SZWdFeHBDYWNoZS5jcHAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTc3MTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMTI2OSw2ICsxMjY5LDggQEAKIAkJNzBFQ0E2MDcxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzBFQ0E2MDIxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0
cnkuY3BwICovOyB9OwogCQk3MEVDQTYwODFBRkRCRUEyMDA0NDk3MzkgLyogVGVtcGxhdGVSZWdp
c3RyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBF
Q0E2MDMxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVnaXN0cnkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEVDQTYwOTFBRkRCRUEyMDA0
NDk3MzkgLyogVGVtcGxhdGVSZWdpc3RyeUtleS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRl
UmVnaXN0cnlLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk3OTE2MERCRDFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkxNjBEQkIxQzhFM0VD
ODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmNwcCAqLzsgfTsKKwkJNzkxNjBEQkUxQzhFM0VDODAw
OEMwODVBIC8qIFByb3h5UmV2b2tlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3OTE2MERCQzFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3OTJDQjM0
OTFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVPcmlnaW5NYXAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzkyQ0IzNDcxQzRFRUQ1QzAwRDEzQUYz
IC8qIFBDVG9Db2RlT3JpZ2luTWFwLmNwcCAqLzsgfTsKIAkJNzkyQ0IzNEExQzRFRUQ1QzAwRDEz
QUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3OTJDQjM0ODFDNEVFRDVDMDBEMTNBRjMgLyogUENUb0NvZGVPcmln
aW5NYXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk3OTY0NjU2QTFCOTUyRkYwMDAzMDU5RUUgLyogR2V0UHV0SW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzk2NDY1NjgxQjk1MkZGMDAwMzA1OUVF
IC8qIEdldFB1dEluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMzQyNyw2ICszNDI5LDggQEAKIAkJNzBFQ0E2MDIxQUZEQkVBMjAwNDQ5NzM5
IC8qIFRlbXBsYXRlUmVnaXN0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGVtcGxhdGVSZWdpc3RyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcwRUNBNjAzMUFGREJFQTIwMDQ0OTczOSAvKiBUZW1wbGF0ZVJlZ2lzdHJ5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBsYXRlUmVnaXN0cnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQ0E2MDQxQUZEQkVBMjAwNDQ5NzM5IC8qIFRlbXBsYXRlUmVn
aXN0cnlLZXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcGxhdGVSZWdp
c3RyeUtleS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3OTE2MERCQjFDOEUzRUM4
MDA4QzA4NUEgLyogUHJveHlSZXZva2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUHJveHlSZXZva2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
OTE2MERCQzFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZva2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUHJveHlSZXZva2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzkyQ0IzNDcxQzRFRUQ1QzAwRDEzQUYzIC8qIFBDVG9Db2RlT3JpZ2luTWFwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBDVG9Db2RlT3JpZ2luTWFwLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzkyQ0IzNDgxQzRFRUQ1QzAwRDEzQUYz
IC8qIFBDVG9Db2RlT3JpZ2luTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBDVG9Db2RlT3JpZ2luTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc5NjQ2
NTY4MUI5NTJGRjAwMDMwNTlFRSAvKiBHZXRQdXRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdldFB1dEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTU4NTMsNiArNTg1Nyw4IEBACiAJCQkJNzlCMDBDQjkxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5
Q29uc3RydWN0b3IuaCAqLywKIAkJCQk3OUIwMENCQTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlP
YmplY3QuY3BwICovLAogCQkJCTc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVj
dC5oICovLAorCQkJCTc5MTYwREJCMUM4RTNFQzgwMDhDMDg1QSAvKiBQcm94eVJldm9rZS5jcHAg
Ki8sCisJCQkJNzkxNjBEQkMxQzhFM0VDODAwOEMwODVBIC8qIFByb3h5UmV2b2tlLmggKi8sCiAJ
CQkJMEY1NzgwQTExOEZFMUU5ODAwMUU3MkQ5IC8qIFB1cmVOYU4uaCAqLywKIAkJCQkwRjBDRDRD
MDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggKi8sCiAJCQkJMTQ3Qjg0
NjIwRTZERTZCMTAwNDc3NUE0IC8qIFB1dFByb3BlcnR5U2xvdC5oICovLApAQCAtNjg5OCw2ICs2
OTA0LDcgQEAKIAkJCQk3OUIwMENCRDFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzk5RUY3QzQxQzU2RUQ5NjAwMkIwNTM0IC8qIEIzUENU
b09yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlCMDBDQkYxQzZBQjA3RTAwODhDNjVE
IC8qIFByb3h5T2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3OTE2MERCRTFDOEUzRUM4MDA4
QzA4NUEgLyogUHJveHlSZXZva2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTc5MkNCMzRBMUM0RUVE
NUMwMEQxM0FGMyAvKiBQQ1RvQ29kZU9yaWdpbk1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzlD
RkM2RjAxQzMzQjEwMDAwQzc2OEVBIC8qIExMSW50UENSYW5nZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTc5RDVDRDVCMUMxMTA2QTkwMENFQ0EwNyAvKiBTYW1wbGluZ1Byb2ZpbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTkxNTgsNiArOTE2NSw3IEBACiAJCQkJRTM1NUYzNTIxQjdEQzg1MzAwQzUw
REM1IC8qIE1vZHVsZUxvYWRlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjMzOEUw
QjFCRjAyNzZDMDAxM0M4OEYgLyogQjNDb21waWxhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNDQ2OURFMDEwN0VDN0U3MDA2NTA0NDYgLyogTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3OTE2MERCRDFDOEUzRUM4MDA4QzA4NUEgLyogUHJveHlSZXZv
a2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ0NjlERTExMDdFQzdFNzAwNjUwNDQ2IC8qIE5h
dGl2ZUVycm9yUHJvdG90eXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzM0U4RDIwMUI5MDEz
REUwMDM0NkI1MiAvKiBOYXRpdmVTdGRGdW5jdGlvbkNlbGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQ4RjIxQjcxMDdFQzU0NzAwNDJFQzJDIC8qIE5vZGVzLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzAsNiArMTMwLDcgQEAKICNp
bmNsdWRlICJQYXJzZXJFcnJvci5oIgogI2luY2x1ZGUgIlByb3h5Q29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlByb3h5UmV2b2tlLmgiCiAjaW5jbHVk
ZSAiUmVmbGVjdE9iamVjdC5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiUmVnRXhwTWF0Y2hlc0FycmF5LmgiCkBAIC0zNzAsNiArMzcxLDcgQEAgdm9pZCBKU0ds
b2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0
KHZtLCB0aGlzLCBKU01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0
dXJlLnNldCh2bSwgdGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcywganNOdWxsKCkpKTsKICAgICBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLnNldCh2
bSwgdGhpcywgUHJveHlPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQ
cm90b3R5cGUuZ2V0KCkpKTsKKyAgICBtX3Byb3h5UmV2b2tlU3RydWN0dXJlLnNldCh2bSwgdGhp
cywgUHJveHlSZXZva2U6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblByb3Rv
dHlwZS5nZXQoKSkpOwogICAgIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBtX3dhc21N
b2R1bGVTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgdGhpcykpOwpAQCAtOTExLDYgKzkxMyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9kb2xs
YXJWTVN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1faW50ZXJu
YWxGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
cHJveHlPYmplY3RTdHJ1Y3R1cmUpOworICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X3Byb3h5UmV2b2tlU3RydWN0dXJlKTsKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgdmlz
aXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fd2FzbU1vZHVsZVN0cnVjdHVyZSk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDYgKzI4Miw3IEBAIHByb3RlY3Rl
ZDoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZVJlY29yZFN0cnVjdHVyZTsK
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVj
dHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0U3RydWN0dXJl
OworICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1cmU7CiAj
aWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fd2Fz
bU1vZHVsZVN0cnVjdHVyZTsKICNlbmRpZgpAQCAtNTM1LDYgKzUzNiw3IEBAIHB1YmxpYzoKICAg
ICBTdHJ1Y3R1cmUqIG1vZHVsZVJlY29yZFN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlLmdldCgpOyB9CiAgICAgU3RydWN0dXJlKiBtb2R1bGVOYW1lc3Bh
Y2VPYmplY3RTdHJ1Y3R1cmUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWVzcGFjZU9iamVj
dFN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogcHJveHlPYmplY3RTdHJ1Y3R1cmUo
KSBjb25zdCB7IHJldHVybiBtX3Byb3h5T2JqZWN0U3RydWN0dXJlLmdldCgpOyB9CisgICAgU3Ry
dWN0dXJlKiBwcm94eVJldm9rZVN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJveHlSZXZv
a2VTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgU3RydWN0
dXJlKiB3YXNtTW9kdWxlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93YXNtTW9kdWxlU3Ry
dWN0dXJlLmdldCgpOyB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Byb3h5Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc3MTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDEzIEBACiAjaW5jbHVkZSAiUHJveHlDb25zdHJ1Y3Rvci5o
IgogCiAjaW5jbHVkZSAiRXJyb3IuaCIKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgog
I2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90
eXBlLmgiCiAjaW5jbHVkZSAiUHJveHlPYmplY3QuaCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00
Miw3ICs0NSw3IEBAIGNvbnN0IENsYXNzSW5mbyBQcm94eUNvbnN0cnVjdG9yOjpzX2luZm8KIFBy
b3h5Q29uc3RydWN0b3IqIFByb3h5Q29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogewogICAgIFByb3h5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UHJveHlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFByb3h5
Q29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7Ci0gICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKHZtLCAiUHJveHkiKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sICJQ
cm94eSIsIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIHJldHVybiBjb25zdHJ1Y3Rv
cjsKIH0KIApAQCAtNTEsMTEgKzU0LDQyIEBAIFByb3h5Q29uc3RydWN0b3I6OlByb3h5Q29uc3Ry
dWN0b3IoVk0mIHYKIHsKIH0KIAotdm9pZCBQcm94eUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUpCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBtYWtlUmV2b2NhYmxlUHJveHkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChl
eGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQg
d2l0aCB0d28gYXJndW1lbnRzOiB0aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlci4iKSk7CisKKyAg
ICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEFyZ0xpc3QgYXJncyhleGVjKTsKKyAgICBKU1Zh
bHVlIHRhcmdldCA9IGFyZ3MuYXQoMCk7CisgICAgSlNWYWx1ZSBoYW5kbGVyID0gYXJncy5hdCgx
KTsKKyAgICBQcm94eU9iamVjdCogcHJveHkgPSBQcm94eU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJveHlPYmplY3RTdHJ1Y3R1cmUoKSwgdGFyZ2V0
LCBoYW5kbGVyKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICBQcm94eVJldm9rZSogcmV2b2tlID0gUHJveHlS
ZXZva2U6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm94eVJldm9r
ZVN0cnVjdHVyZSgpLCBwcm94eSk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisKKyAgICBKU09iamVjdCogcmVzdWx0
ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmVzdWx0LT5w
dXREaXJlY3Qodm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicHJveHkiKSwgcHJveHksIE5vbmUpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBtYWtlSWRlbnRpZmllcih2bSwgInJldm9rZSIpLCBy
ZXZva2UsIE5vbmUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQor
CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwcm94eVJldm9jYWJsZUNvbnN0
cnVjdG9yVGhyb3dFcnJvcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eS5yZXZvY2FibGUgY2FuIG5vdCBiZSBj
b25zdHJ1Y3RlZC4gSXQgY2FuIG9ubHkgYmUgY2FsbGVkLiIpKTsKK30KKwordm9pZCBQcm94eUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIGNvbnN0IGNoYXIqIG5hbWUsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IG5hbWUpOwogCi0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMiksIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qo
dm0sIG1ha2VJZGVudGlmaWVyKHZtLCAicmV2b2NhYmxlIiksIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCAyLCBBU0NJSUxpdGVyYWwoInJldm9jYWJsZSIpLCBtYWtlUmV2b2Nh
YmxlUHJveHksIE5vSW50cmluc2ljLCBwcm94eVJldm9jYWJsZUNvbnN0cnVjdG9yVGhyb3dFcnJv
cikpOwogfQogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RQ
cm94eU9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxOTc3MTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IAogICAgIH0KIAotICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBjb25zdCBjaGFyKiBuYW1lKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgY29uc3QgY2hhciogbmFtZSwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToKICAgICBQ
cm94eUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc3MTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDEwICs1Myw4IEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoUHJveHlPYmplY3QqIHRhcmdl
dEFzUHJveHkgPSBqc0R5bmFtaWNDYXN0PFByb3h5T2JqZWN0Kj4odGFyZ2V0KSkgewotICAgICAg
ICAvLyBGSVhNRTogQWRkIHRlc3RzIGZvciB0aGlzIG9uY2Ugd2UgaW1wbGVtZW50IFByb3h5LnJl
dm9rZSguKS4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1NDMyMQogICAgICAgICBpZiAodGFyZ2V0QXNQcm94eS0+aGFuZGxlcigpLmlzTnVsbCgp
KSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIklmIGEg
UHJveHkncyBoYW5kbGVyIGlzIGFub3RoZXIgUHJveHkgb2JqZWN0LCB0aGUgb3RoZXIgUHJveHkg
b2JqZWN0IG11c3QgaGF2ZSBhIG5vbi1udWxsIGhhbmRsZXIuIikpOworICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJZiBhIFByb3h5J3MgaGFuZGxlciBpcyBh
bm90aGVyIFByb3h5IG9iamVjdCwgdGhlIG90aGVyIFByb3h5IHNob3VsZCBub3QgaGF2ZSBiZWVu
IHJldm9rZWQuIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAt
NzcsNiArNzUsOCBAQCB2b2lkIFByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sCiAg
ICAgbV9oYW5kbGVyLnNldCh2bSwgdGhpcywgaGFuZGxlcik7CiB9CiAKK3N0YXRpYyBjb25zdCBj
aGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UgPSAiUHJveHkgaGFzIGFscmVh
ZHkgYmVlbiByZXZva2VkLiBObyBtb3JlIG9wZXJhdGlvbnMgYXJlIGFsbG93ZWQgdG8gYmUgcGVy
Zm9ybWVkIG9uIGl0LiI7CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKQEAgLTExMyw3ICsxMTMs
NyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4CiAKICAgICBKU1Zh
bHVlIGhhbmRsZXJWYWx1ZSA9IHByb3h5T2JqZWN0LT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRs
ZXJWYWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9i
amVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2UpKTsKIAogICAgIEpTT2JqZWN0
KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3Jt
SW50ZXJuYWxNZXRob2RHCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRs
ZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQg
c2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
QVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNjcsNyArMjY3LDcgQEAgYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUg
PSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRsZXIn
IGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3Nh
Z2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMzYwLDcgKzM2MCw3IEBA
IHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoRXhlY1N0YXRlKiAKIAogICAgIEpTVmFsdWUg
aGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNO
dWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlBy
b3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4gT2JqZWN0LiIpKTsKKyAgICAg
ICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZv
a2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ0Nyw3ICs0
NDcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmCiAgICAgUHJv
eHlPYmplY3QqIHByb3h5ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oZXhlYy0+Y2FsbGVlKCkpOwog
ICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gcHJveHktPmhhbmRsZXIoKTsKICAgICBpZiAoaGFu
ZGxlclZhbHVlLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4g
T2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogCiAgICAgSlNPYmpl
Y3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxE
YXRhIGNhbGxEYXRhOwpAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHBlcmYKICAgICBQcm94eU9iamVjdCogcHJveHkgPSBqc0Nhc3Q8UHJveHlP
YmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSBwcm94
eS0+aGFuZGxlcigpOwogICAgIGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRsZXIn
IGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJy
b3JNZXNzYWdlKSk7CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+
KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CkBAIC01NDYsNyArNTQ2LDcg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShFeGVjU3RhdAogCiAgICAgSlNWYWx1
ZSBoYW5kbGVyVmFsdWUgPSB0aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5p
c051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
UHJveHkgJ2hhbmRsZXInIGlzIG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJl
dm9rZWRFcnJvck1lc3NhZ2UpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
NjE1LDcgKzYxNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW8K
IAogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAgIGlmICho
YW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUgYW4gT2Jq
ZWN0LiIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoc19w
cm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTY2Myw3ICs2NjMsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNF
eHRlbnNpYmxlKEV4CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIo
KTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hv
dWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC03MjUsNyArNzI1LDcgQEAgYm9vbCBQcm94eU9iamVj
dDo6cGVyZm9ybURlZmluZU93blByb3BlcgogCiAgICAgSlNWYWx1ZSBoYW5kbGVyVmFsdWUgPSB0
aGlzLT5oYW5kbGVyKCk7CiAgICAgaWYgKGhhbmRsZXJWYWx1ZS5pc051bGwoKSkgewotICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJveHkgJ2hhbmRsZXInIGlz
IG51bGwuIEl0IHNob3VsZCBiZSBhbiBPYmplY3QuIikpOworICAgICAgICB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChzX3Byb3h5QWxyZWFkeVJldm9rZWRFcnJvck1lc3NhZ2Up
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtODA5LDcgKzgwOSw3IEBAIHZv
aWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU4KICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIEpTVmFsdWUgaGFuZGxlclZhbHVlID0gdGhpcy0+aGFuZGxlcigpOwogICAg
IGlmIChoYW5kbGVyVmFsdWUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlByb3h5ICdoYW5kbGVyJyBpcyBudWxsLiBJdCBzaG91bGQgYmUg
YW4gT2JqZWN0LiIpKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoc19wcm94eUFscmVhZHlSZXZva2VkRXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTk3MCw3ICs5NzAsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0
UHJvdG90eXBlKEV4CiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9IHRoaXMtPmhhbmRsZXIo
KTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicgaXMgbnVsbC4gSXQgc2hv
dWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2FnZSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0xMDMwLDcgKzEwMzAsNyBAQCBKU1ZhbHVlIFByb3h5
T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlCiAKICAgICBKU1ZhbHVlIGhhbmRsZXJWYWx1ZSA9
IHRoaXMtPmhhbmRsZXIoKTsKICAgICBpZiAoaGFuZGxlclZhbHVlLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm94eSAnaGFuZGxlcicg
aXMgbnVsbC4gSXQgc2hvdWxkIGJlIGFuIE9iamVjdC4iKSk7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKHNfcHJveHlBbHJlYWR5UmV2b2tlZEVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KIApAQCAtMTA3OCw2ICsxMDc4
LDEzIEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OmdldFByb3RvdHlwZShKU09iamUKICAgICByZXR1
cm4ganNDYXN0PFByb3h5T2JqZWN0Kj4ob2JqZWN0KS0+cGVyZm9ybUdldFByb3RvdHlwZShleGVj
KTsKIH0KIAordm9pZCBQcm94eU9iamVjdDo6cmV2b2tlKFZNJiB2bSkKK3sgCisgICAgLy8gVGhp
cyBzaG91bGQgb25seSBldmVyIGJlIGNhbGxlZCBvbmNlIGFuZCB3ZSBzaG91bGQgc3RyaWN0bHkg
dHJhbnNpdGlvbiBmcm9tIE9iamVjdCB0byBudWxsLgorICAgIFJFTEVBU0VfQVNTRVJUKCFtX2hh
bmRsZXIuZ2V0KCkuaXNOdWxsKCkgJiYgbV9oYW5kbGVyLmdldCgpLmlzT2JqZWN0KCkpOworICAg
IG1faGFuZGxlci5zZXQodm0sIHRoaXMsIGpzTnVsbCgpKTsKK30KKwogdm9pZCBQcm94eU9iamVj
dDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewog
ICAgIFByb3h5T2JqZWN0KiB0aGlzT2JqZWN0ID0ganNDYXN0PFByb3h5T2JqZWN0Kj4oY2VsbCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmgJKHJl
dmlzaW9uIDE5NzcxNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgcHVibGljOgogCiAgICAgLy8g
V2UgbGllIGFuIHNheSB3ZSBvdmVycmlkZSBnZXRQcm9wZXJ0eU5hbWVzKCkgYmVjYXVzZSBpdCBw
cmV2ZW50cwogICAgIC8vIHByb3BlcnR5IG5hbWUgZW51bWVyYXRpb24gY2FjaGluZy4KLSAgICBj
b25zdCBzdGF0aWMgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IFR5cGVPZlNob3VsZENhbGxHZXRDYWxs
RGF0YSB8IEludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJ
c05vdFplcm8gfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIGNvbnN0IHN0YXRpYyB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgVHlwZU9mU2hvdWxkQ2FsbEdldENhbGxEYXRhIHwgSW50ZXJj
ZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92
ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBQcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmc7CiAKICAg
ICBzdGF0aWMgUHJveHlPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU1ZhbHVlIHRhcmdldCwgSlNWYWx1ZSBoYW5kbGVyKQogICAgIHsKQEAgLTY2
LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHB1dEJ5SW5kZXgoSlNDZWxsKiwg
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBib29sIHNob3VsZFRo
cm93KTsKICAgICB2b2lkIHB1dEJ5SW5kZXhDb21tb24oRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSBwdXRWYWx1ZSwgYm9vbCBzaG91
bGRUaHJvdyk7CiAgICAgSlNWYWx1ZSBwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSopOwor
ICAgIHZvaWQgcmV2b2tlKFZNJik7CiAKIHByaXZhdGU6CiAgICAgUHJveHlPYmplY3QoVk0mLCBT
dHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2
b2tlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94
eVJldm9rZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eVJldm9rZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQcm94eVJldm9rZS5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJQcm94eU9iamVjdC5oIgorI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5s
aW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShQcm94eVJldm9rZSk7
CisKK2NvbnN0IENsYXNzSW5mbyBQcm94eVJldm9rZTo6c19pbmZvID0geyAiUHJveHlSZXZva2Ui
LCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFByb3h5UmV2b2tlKSB9Owor
CitQcm94eVJldm9rZSogUHJveHlSZXZva2U6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBQcm94eU9iamVjdCogcHJveHkpCit7CisgICAgUHJveHlSZXZva2UqIHJldm9rZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFByb3h5UmV2b2tlPih2bS5oZWFwKSkgUHJveHlS
ZXZva2Uodm0sIHN0cnVjdHVyZSk7CisgICAgcmV2b2tlLT5maW5pc2hDcmVhdGlvbih2bSwgInJl
dm9rZSIsIHByb3h5KTsKKyAgICByZXR1cm4gcmV2b2tlOworfQorCitQcm94eVJldm9rZTo6UHJv
eHlSZXZva2UoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0
cnVjdHVyZSkKK3sKK30KKwordm9pZCBQcm94eVJldm9rZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBjb25zdCBjaGFyKiBuYW1lLCBQcm94eU9iamVjdCogcHJveHkpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIFN0cmluZyhuYW1lKSk7CisgICAgbV9wcm94eS5zZXQodm0sIHRoaXMs
IHByb3h5KTsKKworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBq
c051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOworfQorCitzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlSZXZva2UoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIFByb3h5UmV2b2tlKiBwcm94eVJldm9rZSA9IGpzQ2FzdDxQcm94
eVJldm9rZSo+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU1ZhbHVlIHByb3h5VmFsdWUgPSBwcm94
eVJldm9rZS0+cHJveHkoKTsKKyAgICBpZiAocHJveHlWYWx1ZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIFByb3h5T2JqZWN0
KiBwcm94eSA9IGpzQ2FzdDxQcm94eU9iamVjdCo+KHByb3h5VmFsdWUpOworICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CisgICAgcHJveHktPnJldm9rZSh2bSk7CisgICAgcHJveHlSZXZva2UtPnNl
dFByb3h5VG9OdWxsKHZtKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQorCitDYWxsVHlwZSBQcm94eVJldm9rZTo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2Fs
bERhdGEmIGNhbGxEYXRhKQoreworICAgIGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbiA9IHBlcmZv
cm1Qcm94eVJldm9rZTsKKyAgICByZXR1cm4gQ2FsbFR5cGU6Okhvc3Q7Cit9CisKK3ZvaWQgUHJv
eHlSZXZva2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBQcm94eVJldm9rZSogdGhpc09iamVjdCA9IGpzQ2FzdDxQcm94eVJldm9rZSo+
KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworCisgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcHJveHkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2b2tlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlSZXZva2Uu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5UmV2
b2tlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUHJveHlSZXZva2VfaAorI2RlZmlu
ZSBQcm94eVJldm9rZV9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBQcm94eU9iamVjdDsKKworY2xhc3MgUHJveHlSZXZva2UgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1
bmN0aW9uIEJhc2U7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
QmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKKyAgICBzdGF0aWMgUHJveHlSZXZva2UqIGNyZWF0ZShW
TSYsIFN0cnVjdHVyZSosIFByb3h5T2JqZWN0Kik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkgCisgICAgeyAKKyAgICAgICAgcmV0
dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUlu
Zm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOyAKKyAgICB9CisKKyAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgY29uc3QgY2hhciogbmFtZSwgUHJveHlPYmplY3QqKTsK
KyAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7Cisg
ICAgSlNWYWx1ZSBwcm94eSgpIHsgcmV0dXJuIG1fcHJveHkuZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dFByb3h5VG9OdWxsKFZNJiB2bSkgeyByZXR1cm4gbV9wcm94eS5zZXQodm0sIHRoaXMsIGpzTnVs
bCgpKTsgfQorCitwcml2YXRlOgorICAgIFByb3h5UmV2b2tlKFZNJiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIENhbGxUeXBlIGdldENhbGxEYXRhKEpTQ2VsbCosIENhbGxEYXRhJik7CisKKyAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4gbV9wcm94eTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gUHJveHlSZXZva2VfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL2VzNi55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9lczYueWFtbAkocmV2aXNpb24gMTk3NzE1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL2VzNi55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYzLDcgKzEwNjMsNyBAQAogLSBwYXRo
OiBlczYvUHJveHlfcHJldmVudEV4dGVuc2lvbnNfaGFuZGxlci5qcwogICBjbWQ6IHJ1bkVTNiA6
bm9ybWFsCiAtIHBhdGg6IGVzNi9Qcm94eV9Qcm94eS5yZXZvY2FibGUuanMKLSAgY21kOiBydW5F
UzYgOmZhaWwKKyAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfc2V0X2hh
bmRsZXIuanMKICAgY21kOiBydW5FUzYgOm5vcm1hbAogLSBwYXRoOiBlczYvUHJveHlfc2V0X2hh
bmRsZXJfaW5zdGFuY2VzX29mX3Byb3hpZXMuanMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3BlcnR5LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktaGFzLXByb3BlcnR5LmpzCShyZXZp
c2lvbiAxOTc3MTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5
LWhhcy1wcm9wZXJ0eS5qcwkod29ya2luZyBjb3B5KQpAQCAtNDQzLDMgKzQ0MywyMyBAQCBmdW5j
dGlvbiBhc3NlcnQoYikgewogICAgICAgICBhc3NlcnQoIWNhbGxlZDEpOwogICAgIH0KIH0KKwor
eworICAgIGxldCBjYWxsZWQgPSBmYWxzZTsKKyAgICBsZXQgaGFuZGxlciA9IHsKKyAgICAgICAg
aGFzOiBmdW5jdGlvbiguLi5hcmdzKSB7CisgICAgICAgICAgICBjYWxsZWQgPSB0cnVlOworICAg
ICAgICAgICAgcmV0dXJuIFJlZmxlY3QuaGFzKC4uLmFyZ3MpOworICAgICAgICB9CisgICAgfTsK
KyAgICBsZXQgcHJveHkgPSBuZXcgUHJveHkoe30sIGhhbmRsZXIpOworICAgIGxldCBmb28gPSBm
dW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0KCFSZWZsZWN0Lmhhcyhwcm94eSwgIngiKSk7Cisg
ICAgICAgIGFzc2VydChjYWxsZWQpOworICAgICAgICBjYWxsZWQgPSBmYWxzZTsKKyAgICB9Cisg
ICAgbm9JbmxpbmUoZm9vKQorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDA7IGkrKykgewor
ICAgICAgICBmb28oKTsKKyAgICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVz
dHMvc3RyZXNzL3Byb3h5LXJldm9rZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3Byb3h5LXJldm9rZS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcHJveHktcmV2b2tlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTkxIEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikK
KyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgYXNzZXJ0aW9uLiIpOworfQorCit7CisgICAg
YXNzZXJ0KFByb3h5LnJldm9jYWJsZS5sZW5ndGggPT09IDIpOworICAgIGFzc2VydChQcm94eS5y
ZXZvY2FibGUubmFtZSA9PT0gInJldm9jYWJsZSIpOworCisgICAgeworICAgICAgICBsZXQgdGhy
ZXcgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5ldyBQcm94eS5yZXZvY2Fi
bGU7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAg
ICAgICAgICAgYXNzZXJ0KGUudG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogUHJveHkucmV2b2Nh
YmxlIGNhbiBub3QgYmUgY29uc3RydWN0ZWQuIEl0IGNhbiBvbmx5IGJlIGNhbGxlZC4iKTsKKyAg
ICAgICAgfQorICAgICAgICBhc3NlcnQodGhyZXcpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
bGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBQcm94eS5yZXZv
Y2FibGUoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9IHRydWU7
CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBQcm94eS5y
ZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdl
dCBhbmQgdGhlIGhhbmRsZXIuIik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsK
KyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAgICB0cnkg
eworICAgICAgICAgICAgUHJveHkucmV2b2NhYmxlKHt9KTsKKyAgICAgICAgfSBjYXRjaChlKSB7
CisgICAgICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmlu
ZygpID09PSAiVHlwZUVycm9yOiBQcm94eS5yZXZvY2FibGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdp
dGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhlIGhhbmRsZXIuIik7CisgICAgICAg
IH0KKyAgICAgICAgYXNzZXJ0KHRocmV3KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCB0
aHJldyA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgUHJveHkucmV2b2NhYmxl
KHt9LCBudWxsKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICB0aHJldyA9IHRy
dWU7CisgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmluZygpID09PSAiVHlwZUVycm9yOiBBIFBy
b3h5J3MgJ2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiKTsKKyAgICAgICAgfQorICAgICAg
ICBhc3NlcnQodGhyZXcpOworICAgIH0KKworICAgIHsKKyAgICAgICAgbGV0IHRocmV3ID0gZmFs
c2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBQcm94eS5yZXZvY2FibGUobnVsbCwge30p
OworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGFzc2VydChlLnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IEEgUHJveHkncyAndGFy
Z2V0JyBzaG91bGQgYmUgYW4gT2JqZWN0Iik7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KHRo
cmV3KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIGxldCB0aHJldyA9IGZhbHNlOworICAgICAg
ICB0cnkgeworICAgICAgICAgICAgUHJveHkucmV2b2NhYmxlKHt9LCB7fSwge30pOyAvLyBJdCdz
IG9rYXkgdG8gY2FsbCB3aXRoID4gMiBhcmd1bWVudHMuCisgICAgICAgIH0gY2F0Y2goZSkgewor
ICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGFzc2VydCghdGhy
ZXcpOworICAgIH0KKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNTAwOyBpKyspIHsKKyAgICAg
ICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsZXQge3Jl
dm9rZX0gPSAgUHJveHkucmV2b2NhYmxlKHt9LCB7fSk7IC8vIEl0J3Mgb2theSB0byBjYWxsIHdp
dGggPiAyIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIG5ldyByZXZva2U7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgdGhyZXcgPSB0cnVlOworICAgICAgICAgICAgYXNzZXJ0KGUu
dG9TdHJpbmcoKSA9PT0gIlR5cGVFcnJvcjogZnVuY3Rpb24gaXMgbm90IGEgY29uc3RydWN0b3Ig
KGV2YWx1YXRpbmcgJ25ldyByZXZva2UnKSIpOworICAgICAgICB9CisgICAgICAgIGFzc2VydCh0
aHJldyk7CisgICAgfQorCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkrKykgeworICAg
ICAgICBmdW5jdGlvbiBmb28oKSB7CisgICAgICAgICAgICBsZXQgdGhyZXcgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGxldCB7cHJveHksIHJldm9rZX0gPSBQcm94eS5yZXZvY2FibGUoe30sIHt9KTsK
KyAgICAgICAgICAgIHJldm9rZSgpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICBuZXcgUHJveHkocHJveHksIHt9KTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgICAgIHRocmV3ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZS50b1N0cmlu
ZygpID09PSAiVHlwZUVycm9yOiBJZiBhIFByb3h5J3MgaGFuZGxlciBpcyBhbm90aGVyIFByb3h5
IG9iamVjdCwgdGhlIG90aGVyIFByb3h5IHNob3VsZCBub3QgaGF2ZSBiZWVuIHJldm9rZWQuIik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnQodGhyZXcpOworICAgICAgICB9Cisg
ICAgICAgIGZvbygpOworICAgIH0KK30KKworZnVuY3Rpb24gY2FsbEFsbEhhbmRsZXJzKHByb3h5
KSB7CisgICAgUmVmbGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSk7CisgICAgUmVmbGVjdC5zZXRQ
cm90b3R5cGVPZihwcm94eSwgbnVsbCk7CisgICAgUmVmbGVjdC5pc0V4dGVuc2libGUocHJveHkp
OworICAgIFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMocHJveHkpOworICAgIFJlZmxlY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3h5LCAieCIpCisgICAgUmVmbGVjdC5oYXMocHJveHks
ICJ4IikKKyAgICBSZWZsZWN0LmdldChwcm94eSwgIngiKQorICAgIHByb3h5WyJ4Il0gPSAyMDsg
Ly8gUmVmbGVjdC5zZXQKKyAgICBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHByb3h5LCAieCIpOwor
ICAgIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkocHJveHksICJ4Iiwge3ZhbHVlOiA0MCwgZW51bWVy
YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlfSk7CisgICAgUmVmbGVjdC5vd25LZXlzKHBy
b3h5KTsKKyAgICBSZWZsZWN0LmFwcGx5KHByb3h5LCB0aGlzLCBbXSk7CisgICAgUmVmbGVjdC5j
b25zdHJ1Y3QocHJveHksIFtdKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3dOdWxsSGFuZGxl
cihmKSB7CisgICAgbGV0IHRocmV3ID0gZmFsc2U7CisgICAgdHJ5IHsKKyAgICAgICAgZigpOwor
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICB0aHJldyA9IHRydWU7CisgICAgICAgIGFzc2VydChl
LnRvU3RyaW5nKCkgPT09ICJUeXBlRXJyb3I6IFByb3h5IGhhcyBhbHJlYWR5IGJlZW4gcmV2b2tl
ZC4gTm8gbW9yZSBvcGVyYXRpb25zIGFyZSBhbGxvd2VkIHRvIGJlIHBlcmZvcm1lZCBvbiBpdC4i
KTsKKyAgICB9CisgICAgYXNzZXJ0KHRocmV3KTsKK30KKworZnVuY3Rpb24gYWxsSGFuZGxlcnNT
aG91bGRUaHJvdyhwcm94eSkgeworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkgPT4gUmVm
bGVjdC5nZXRQcm90b3R5cGVPZihwcm94eSkpOworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIo
KCkgPT4gUmVmbGVjdC5zZXRQcm90b3R5cGVPZihwcm94eSwgbnVsbCkpOworICAgIHNob3VsZFRo
cm93TnVsbEhhbmRsZXIoKCkgPT4gUmVmbGVjdC5pc0V4dGVuc2libGUocHJveHkpKTsKKyAgICBz
aG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMocHJv
eHkpKTsKKyAgICBzaG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKHByb3h5LCAieCIpKTsKKyAgICBzaG91bGRUaHJvd051bGxIYW5kbGVy
KCgpID0+IFJlZmxlY3QuaGFzKHByb3h5LCAieCIpKTsKKyAgICBzaG91bGRUaHJvd051bGxIYW5k
bGVyKCgpID0+IFJlZmxlY3QuZ2V0KHByb3h5LCAieCIpKTsKKyAgICBzaG91bGRUaHJvd051bGxI
YW5kbGVyKCgpID0+IHByb3h5WyJ4Il0gPSAyMCk7IC8vIFJlZmxlY3Quc2V0CisgICAgc2hvdWxk
VGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KHByb3h5LCAieCIp
KTsKKyAgICBzaG91bGRUaHJvd051bGxIYW5kbGVyKCgpID0+IFJlZmxlY3QuZGVmaW5lUHJvcGVy
dHkocHJveHksICJ4Iiwge3ZhbHVlOiA0MCwgZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxl
OiB0cnVlfSkpOworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkgPT4gUmVmbGVjdC5vd25L
ZXlzKHByb3h5KSk7CisgICAgc2hvdWxkVGhyb3dOdWxsSGFuZGxlcigoKSA9PiBSZWZsZWN0LmFw
cGx5KHByb3h5LCB0aGlzLCBbXSkpOworICAgIHNob3VsZFRocm93TnVsbEhhbmRsZXIoKCkgPT4g
UmVmbGVjdC5jb25zdHJ1Y3QocHJveHksIFtdKSk7Cit9CisKK2NvbnN0IHRyYXBzID0gWworICAg
ICJnZXRQcm90b3R5cGVPZiIsCisgICAgInNldFByb3RvdHlwZU9mIiwKKyAgICAiaXNFeHRlbnNp
YmxlIiwKKyAgICAicHJldmVudEV4dGVuc2lvbnMiLAorICAgICJnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IiLAorICAgICJoYXMiLAorICAgICJnZXQiLAorICAgICJzZXQiLAorICAgICJkZWxldGVQ
cm9wZXJ0eSIsCisgICAgImRlZmluZVByb3BlcnR5IiwKKyAgICAib3duS2V5cyIsCisgICAgImFw
cGx5IiwKKyAgICAiY29uc3RydWN0IgorXTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCA1MDA7IGkr
KykgeworICAgIGxldCBoYW5kbGVyID0ge307CisgICAgbGV0IGNvdW50ID0gMDsKKyAgICBsZXQg
dHJhcHNDYWxsZWQgPSBuZXcgU2V0OworICAgIGZvciAobGV0IHRyYXAgb2YgdHJhcHMpIHsKKyAg
ICAgICAgbGV0IGZ1bmM7CisgICAgICAgIGlmICh0cmFwICE9PSAic2V0IikgeworICAgICAgICAg
ICAgZnVuYyA9IGAoZnVuY3Rpb24gJHt0cmFwfSguLi5hcmdzKSB7IGNvdW50Kys7IHRyYXBzQ2Fs
bGVkLmFkZCgkeyInIiArIHRyYXAgKyAiJyJ9KTsgcmV0dXJuIFJlZmxlY3QuJHt0cmFwfSguLi5h
cmdzKTsgfSlgOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZnVuYyA9IGAoZnVuY3Rp
b24gJHt0cmFwfShwcm94eSwgcHJvcCwgdikgeyB0cmFwc0NhbGxlZC5hZGQoJHsiJyIgKyB0cmFw
ICsgIicifSk7IGNvdW50Kys7IHByb3h5W3Byb3BdID0gdjsgfSlgOworICAgICAgICB9CisgICAg
ICAgIGhhbmRsZXJbdHJhcF0gPSBldmFsKGZ1bmMpOworICAgIH0KKworCisgICAgbGV0IHtwcm94
eSwgcmV2b2tlfSA9IFByb3h5LnJldm9jYWJsZShmdW5jdGlvbigpe30sIGhhbmRsZXIpOyAvLyBU
byBtYWtlIGNhbGxhYmxlIGFuZCBjb25zdHJ1Y3RpYmxlIHRydWUuCisgICAgY2FsbEFsbEhhbmRs
ZXJzKHByb3h5KTsKKyAgICBhc3NlcnQoY291bnQgPj0gdHJhcHMubGVuZ3RoKTsKKyAgICBmb3Ig
KGxldCB0cmFwIG9mIHRyYXBzKSB7CisgICAgICAgIGxldCByZXN1bHQgPSB0cmFwc0NhbGxlZC5o
YXModHJhcCk7CisgICAgICAgIGFzc2VydChyZXN1bHQpOworICAgIH0KKworICAgIHJldm9rZSgp
OworICAgIGFsbEhhbmRsZXJzU2hvdWxkVGhyb3cocHJveHkpOworCisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCA1MDsgaSsrKQorICAgICAgICByZXZva2UoKTsgLy8gUmVwZWF0ZWRseSBjYWxsaW5n
IHJldm9rZSBpcyBPSy4KK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>