<?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>146100</bug_id>
          
          <creation_ts>2015-06-17 23:45:44 -0700</creation_ts>
          <short_desc>Rename &quot;Deconstruction&quot; to &quot;Destructuring&quot; throughout JSC</short_desc>
          <delta_ts>2015-07-02 16:54:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1102829</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-06-17 23:45:44 -0700</bug_when>
    <thetext>I think it&apos;d be nice to use the names the spec uses on this. 
Any objections?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106109</commentid>
    <comment_count>1</comment_count>
      <attachid>255931</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-01 10:46:32 -0700</bug_when>
    <thetext>Created attachment 255931
patch

My motivation for this is the difference between these two google searches

https://www.google.com/search?client=safari&amp;rls=en&amp;q=deconstruction+pattern+javasript&amp;ie=UTF-8&amp;oe=UTF-8

https://www.google.com/search?client=safari&amp;rls=en&amp;q=destructuring+pattern+javascript&amp;ie=UTF-8&amp;oe=UTF-8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106117</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-01 11:18:42 -0700</bug_when>
    <thetext>Please rebase the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106225</commentid>
    <comment_count>3</comment_count>
      <attachid>255965</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-01 16:19:54 -0700</bug_when>
    <thetext>Created attachment 255965
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106228</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-01 16:22:21 -0700</bug_when>
    <thetext>Attachment 255965 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodeConstructors.h:830:  l is incorrectly named. Don&apos;t use the single letter &apos;l&apos; as an identifier name.  [readability/naming] [4]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106445</commentid>
    <comment_count>5</comment_count>
      <attachid>255965</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-02 13:05:50 -0700</bug_when>
    <thetext>Comment on attachment 255965
patch

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

r=me with suggested fix.

&gt; Source/JavaScriptCore/parser/NodeConstructors.h:830
&gt; -    inline ParameterNode::ParameterNode(ParameterNode* l, PassRefPtr&lt;DeconstructionPatternNode&gt; pattern)
&gt; +    inline ParameterNode::ParameterNode(ParameterNode* l, PassRefPtr&lt;DestructuringPatternNode&gt; pattern)

I know this is not your doing, but since you’re touching this code, would you mind renaming “l” here to something like “lastParam” to please the style checker.  I’m guessing that’s the intended meaning of “l”?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106464</commentid>
    <comment_count>6</comment_count>
      <attachid>256034</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-07-02 14:05:37 -0700</bug_when>
    <thetext>Created attachment 256034
patch

With renamed parameter</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106541</commentid>
    <comment_count>7</comment_count>
      <attachid>256034</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 16:54:10 -0700</bug_when>
    <thetext>Comment on attachment 256034
patch

Clearing flags on attachment: 256034

Committed r186246: &lt;http://trac.webkit.org/changeset/186246&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106542</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 16:54:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255931</attachid>
            <date>2015-07-01 10:46:32 -0700</date>
            <delta_ts>2015-07-01 16:19:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>clean-backup.diff</filename>
            <type>text/plain</type>
            <size>87195</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MTgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMiBA
QAorMjAxNS0wNy0wMSAgU2FhbSBCYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmVuYW1lICJEZWNvbnN0cnVjdGlvbiIgdG8gIkRlc3RydWN0dXJpbmciIHRocm91Z2hv
dXQgSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDYxMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
dCBpcyBnb29kIHRvIHVzZSB0aGUgc2FtZSBuYW1pbmcgY29udmVudGlvbnMgYXMgdGhlIEVTNiAK
KyAgICAgICAgc3BlYyBiZWNhdXNlIGl0IGlzIHRoZSBkZSBmYWN0byB3YXkgb2Ygc3BlYWtpbmcg
YWJvdXQgdGhlc2UgCisgICAgICAgIGxhbmd1YWdlIGZlYXR1cmVzLiBUaGlzIGFsc28gaGFzIHRo
ZSBiZW5lZml0IG9mIGltcHJvdmluZyBKU0MncworICAgICAgICBoYWNrYWJpbGl0eSBiZWNhdXNl
IGl0IGltcHJvdmVzIGNvZGUgcmVhZGFiaWxpdHkgZm9yIG5ld2NvbWVycyAKKyAgICAgICAgdG8g
SlNDIG9yIG5ld2NvbWVycyB0byB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgYmFzZS4KKworICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojppbml0aWFsaXplTmV4dFBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjp2aXNpYmxlTmFtZUZvclBhcmFtZXRlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdp
c3RlckZvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OkZvckluTm9kZTo6dHJ5R2V0Qm91bmRMb2NhbCk6CisgICAgICAgIChKU0M6OkZv
ckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y29sbGVjdEJvdW5k
SWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGlvblBh
dHRlcm5Ob2RlOjp+RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
RWxlbWVudExpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlTGlzdCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZvck9mTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzQmluZGluZ05v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jlc29sdmUpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFycmF5UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVybkVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlT2JqZWN0UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVu
ZE9iamVjdFBhdHRlcm5FbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURl
Y29uc3RydWN0aW5nQXNzaWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAg
IChKU0M6OlBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUpOgorICAgICAgICAoSlNDOjpGb3JP
Zk5vZGU6OkZvck9mTm9kZSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZTo6RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJu
Tm9kZTo6QXJyYXlQYXR0ZXJuTm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpPYmplY3RQYXR0ZXJu
Tm9kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5n
QXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSk6CisgICAgICAgIChK
U0M6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGU6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlOjpE
ZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjpp
c1Jlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQnJhY2tldEFj
Y2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0RvdEFjY2Vzc29y
Tm9kZSk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0Rlc3RydWN0dXJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzRnVuY0V4cHJOb2RlKToKKyAgICAg
ICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQ29tbWFOb2RlKToKKyAgICAgICAgKEpTQzo6RXhw
cmVzc2lvbk5vZGU6OmlzU2ltcGxlQXJyYXkpOgorICAgICAgICAoSlNDOjpQYXJhbWV0ZXJOb2Rl
OjpwYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6bmV4dFBhcmFtKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjpzaXplKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25QYXJhbWV0ZXJzOjphdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6
cGF0dGVybnMpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6OmlzQmlu
ZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6OmVtaXRE
aXJlY3RCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YXBwZW5kSW5k
ZXgpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YXBwZW5kRW50cnkpOgorICAg
ICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6RW50cnk6OkVudHJ5KToKKyAgICAgICAgKEpT
Qzo6QmluZGluZ05vZGU6OmJvdW5kUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVy
aW5nQXNzaWdubWVudE5vZGU6OmJpbmRpbmdzKToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5v
ZGU6OmlzRGVjb25zdHJ1Y3Rpb25Ob2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6aXNCaW5kaW5nTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGU6OmVtaXREaXJlY3RCaW5kaW5nKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6RGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZTo6YmluZGluZ3Mp
OiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9u
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm4pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0
ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJh
bWV0ZXJzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VE
ZWNvbnN0cnVjdGlvblBhdHRlcm5FeHByZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OmlzRXZhbE5vZGUpOgor
ICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUVsZW1lbnRMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
Rm9ybWFsUGFyYW1ldGVyTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUNsYXVzZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNsYXVzZUxpc3Qp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpvcGVyYXRvclN0YWNrUG9wKToKKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvcmVzZXJ2ZWQtd29yZC13aXRoLWVzY2FwZS5qczoKKwogMjAxNS0w
Ni0zMCAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJAZ21haWwuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBFQ01BU2NyaXB0IEludGVybmF0aW9uYWxpemF0aW9uIEFQSQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE4NTY5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MSw4ICs3MSw4IEBAIFBhcnNlckVycm9yIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgKICAg
ICBpZiAobV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRzKQogICAgICAgICBpbml0aWFsaXplVmFy
aWFibGUodmFyaWFibGUocHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyksIG1fYXJndW1lbnRzUmVn
aXN0ZXIpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2RlY29uc3RydWN0ZWRQYXJh
bWV0ZXJzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIGF1dG8mIGVudHJ5ID0gbV9kZWNvbnN0cnVj
dGVkUGFyYW1ldGVyc1tpXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZGVzdHJ1Y3R1
cmluZ1BhcmFtZXRlcnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgYXV0byYgZW50cnkgPSBtX2Rl
c3RydWN0dXJpbmdQYXJhbWV0ZXJzW2ldOwogICAgICAgICBlbnRyeS5zZWNvbmQtPmJpbmRWYWx1
ZSgqdGhpcywgZW50cnkuZmlyc3QuZ2V0KCkpOwogICAgIH0KIApAQCAtMjU3LDE0ICsyNTcsMTQg
QEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJgogICAgIH0KICAgICAK
ICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvZGUgYmxvY2sga25vd3MgYWJvdXQgYWxsIG9mIG91ciBw
YXJhbWV0ZXJzLCBhbmQgbWFrZSBzdXJlIHRoYXQgcGFyYW1ldGVycwotICAgIC8vIG5lZWRpbmcg
ZGVjb25zdHJ1Y3Rpb24gYXJlIG5vdGVkLgorICAgIC8vIG5lZWRpbmcgZGVzdHJ1Y3R1cmluZyBh
cmUgbm90ZWQuCiAgICAgbV9wYXJhbWV0ZXJzLmdyb3cocGFyYW1ldGVycy5zaXplKCkgKyAxKTsg
Ly8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCiAgICAgbV90aGlzUmVnaXN0ZXIuc2V0SW5kZXgo
aW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKS0+aW5kZXgoKSk7IC8vIHRoaXMKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRv
IHBhdHRlcm4gPSBwYXJhbWV0ZXJzLmF0KGkpOwogICAgICAgICBSZWdpc3RlcklEKiByZWcgPSBp
bml0aWFsaXplTmV4dFBhcmFtZXRlcigpOwogICAgICAgICBpZiAoIXBhdHRlcm4tPmlzQmluZGlu
Z05vZGUoKSkKLSAgICAgICAgICAgIG1fZGVjb25zdHJ1Y3RlZFBhcmFtZXRlcnMuYXBwZW5kKHN0
ZDo6bWFrZV9wYWlyKHJlZywgcGF0dGVybikpOworICAgICAgICAgICAgbV9kZXN0cnVjdHVyaW5n
UGFyYW1ldGVycy5hcHBlbmQoc3RkOjptYWtlX3BhaXIocmVnLCBwYXR0ZXJuKSk7CiAgICAgfQog
ICAgIAogICAgIC8vIEZpZ3VyZSBvdXQgc29tZSBpbnRlcmVzdGluZyBmYWN0cyBhYm91dCBvdXIg
YXJndW1lbnRzLgpAQCAtNDE5LDcgKzQxOSw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29k
ZUdlbmVyYXRvcihWTSYKICAgICAvLyBCdXQgc29tZSBhcmd1bWVudHMgYXJlIGFscmVhZHkgaW5p
dGlhbGl6ZWQgYnkgZGVmYXVsdCwgc2luY2UgaWYgdGhleSBhcmVuJ3QgY2FwdHVyZWQgYW5kIHdl
CiAgICAgLy8gZG9uJ3QgaGF2ZSAiYXJndW1lbnRzIiB0aGVuIHdlIGp1c3QgcG9pbnQgdGhlIHN5
bWJvbCB0YWJsZSBhdCB0aGUgc3RhY2sgc2xvdCBvZiB0aG9zZQogICAgIC8vIGFyZ3VtZW50cy4g
V2UgZW5kIHVwIGluaXRpYWxpemluZyB0aGUgcmVzdCBvZiB0aGUgYXJndW1lbnRzIHRoYXQgaGF2
ZSBhbiB1bmNvbXBsaWNhdGVkCi0gICAgLy8gYmluZGluZyAoaS5lLiBkb24ndCBpbnZvbHZlIGRl
Y29uc3RydWN0aW9uKSBhYm92ZSB3aGVuIGZpZ3VyaW5nIG91dCBob3cgdG8gbGF5IHRoZW0gb3V0
LAorICAgIC8vIGJpbmRpbmcgKGkuZS4gZG9uJ3QgaW52b2x2ZSBkZXN0cnVjdHVyaW5nKSBhYm92
ZSB3aGVuIGZpZ3VyaW5nIG91dCBob3cgdG8gbGF5IHRoZW0gb3V0LAogICAgIC8vIGJlY2F1c2Ug
dGhhdCdzIGp1c3QgdGhlIHNpbXBsZXN0IHRoaW5nLiBUaGlzIG1lYW5zIHRoYXQgd2hlbiB3ZSBp
bml0aWFsaXplIHRoZW0sIHdlIGhhdmUgdG8KICAgICAvLyB3YXRjaCBvdXQgZm9yIHRoZSB0aGlu
Z3MgdGhhdCBvdmVycmlkZSBhcmd1bWVudHMgKG5hbWVseSwgZnVuY3Rpb25zKS4KICAgICAvLwpA
QCAtNDU1LDEwICs0NTUsMTAgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9y
KFZNJgogICAgIC8vIFRoaXMgaXMgb3VyIGZpbmFsIGFjdCBvZiB3ZWlyZG5lc3MuICJhcmd1bWVu
dHMiIGlzIG92ZXJyaWRkZW4gYnkgZXZlcnl0aGluZyBleGNlcHQgdGhlCiAgICAgLy8gY2FsbGVl
LiBXZSBhZGQgaXQgdG8gdGhlIHN5bWJvbCB0YWJsZSBpZiBpdCdzIG5vdCBhbHJlYWR5IHRoZXJl
IGFuZCBpdCdzIG5vdCBhbiBhcmd1bWVudC4KICAgICBpZiAobmVlZHNBcmd1bWVudHMpIHsKLSAg
ICAgICAgLy8gSWYgImFyZ3VtZW50cyIgaXMgb3ZlcnJpZGRlbiBieSBhIGZ1bmN0aW9uIG9yIGRl
Y29uc3RydWN0ZWQgcGFyYW1ldGVyIG5hbWUsIHRoZW4gaXQncworICAgICAgICAvLyBJZiAiYXJn
dW1lbnRzIiBpcyBvdmVycmlkZGVuIGJ5IGEgZnVuY3Rpb24gb3IgZGVzdHJ1Y3R1cmluZyBwYXJh
bWV0ZXIgbmFtZSwgdGhlbiBpdCdzCiAgICAgICAgIC8vIE9LIGZvciB1cyB0byBjYWxsIGNyZWF0
ZVZhcmlhYmxlKCkgYmVjYXVzZSBpdCB3b24ndCBjaGFuZ2UgYW55dGhpbmcuIEl0J3MgYWxzbyBP
SyBmb3IKICAgICAgICAgLy8gdXMgdG8gdGhlbSB0ZWxsIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZSgpIHRvIHdyaXRlIHRvIGl0IGJlY2F1c2UgaXQgd2lsbCBkbyBzbwotICAgICAgICAvLyBi
ZWZvcmUgaXQgaW5pdGlhbGl6ZXMgZnVuY3Rpb25zIGFuZCBkZWNvbnN0cnVjdGVkIHBhcmFtZXRl
cnMuIEJ1dCBpZiAiYXJndW1lbnRzIiBpcworICAgICAgICAvLyBiZWZvcmUgaXQgaW5pdGlhbGl6
ZXMgZnVuY3Rpb25zIGFuZCBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMuIEJ1dCBpZiAiYXJndW1l
bnRzIiBpcwogICAgICAgICAvLyBvdmVycmlkZGVuIGJ5IGEgInNpbXBsZSIgZnVuY3Rpb24gcGFy
YW1ldGVyLCB0aGVuIHdlIGhhdmUgdG8gYmFpbDogY3JlYXRlVmFyaWFibGUoKQogICAgICAgICAv
LyB3b3VsZCBhc3NlcnQgYW5kIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpIHdvdWxkIHdy
aXRlIHRoZSAiYXJndW1lbnRzIiBhZnRlciB0aGUKICAgICAgICAgLy8gYXJndW1lbnQgdmFsdWUg
aGFkIGFscmVhZHkgYmVlbiBwcm9wZXJseSBpbml0aWFsaXplZC4KQEAgLTU0NSw3ICs1NDUsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6aW5pdGlhbGl6CiAgICAgcmV0dXJuICZw
YXJhbWV0ZXI7CiB9CiAKLVVuaXF1ZWRTdHJpbmdJbXBsKiBCeXRlY29kZUdlbmVyYXRvcjo6dmlz
aWJsZU5hbWVGb3JQYXJhbWV0ZXIoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogcGF0dGVybikK
K1VuaXF1ZWRTdHJpbmdJbXBsKiBCeXRlY29kZUdlbmVyYXRvcjo6dmlzaWJsZU5hbWVGb3JQYXJh
bWV0ZXIoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKQogewogICAgIGlmIChwYXR0
ZXJuLT5pc0JpbmRpbmdOb2RlKCkpIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQg
PSBzdGF0aWNfY2FzdDxjb25zdCBCaW5kaW5nTm9kZSo+KHBhdHRlcm4pLT5ib3VuZFByb3BlcnR5
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxODU2OTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY1Miw3ICs2NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICAvLyBJbml0aWFs
aXplcyB0aGUgc3RhY2sgZm9ybSB0aGUgcGFyYW1ldGVyOyBkb2VzIG5vdGhpbmcgZm9yIHRoZSBz
eW1ib2wgdGFibGUuCiAgICAgICAgIFJlZ2lzdGVySUQqIGluaXRpYWxpemVOZXh0UGFyYW1ldGVy
KCk7Ci0gICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB2aXNpYmxlTmFtZUZvclBhcmFtZXRlcihE
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKik7CisgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB2
aXNpYmxlTmFtZUZvclBhcmFtZXRlcihEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqKTsKICAgICAg
ICAgCiAgICAgICAgIFJlZ2lzdGVySUQmIHJlZ2lzdGVyRm9yKFZpcnR1YWxSZWdpc3RlciByZWcp
CiAgICAgICAgIHsKQEAgLTc1NSw3ICs3NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
VmVjdG9yPFN3aXRjaEluZm8+IG1fc3dpdGNoQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPEZvckluQ29udGV4dD4+IG1fZm9ySW5Db250ZXh0U3RhY2s7CiAgICAg
ICAgIFZlY3RvcjxUcnlDb250ZXh0PiBtX3RyeUNvbnRleHRTdGFjazsKLSAgICAgICAgVmVjdG9y
PHN0ZDo6cGFpcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIGNvbnN0IERlY29uc3RydWN0aW9uUGF0dGVy
bk5vZGUqPj4gbV9kZWNvbnN0cnVjdGVkUGFyYW1ldGVyczsKKyAgICAgICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWZQdHI8UmVnaXN0ZXJJRD4sIGNvbnN0IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSo+
PiBtX2Rlc3RydWN0dXJpbmdQYXJhbWV0ZXJzOwogICAgICAgICBlbnVtIEZ1bmN0aW9uVmFyaWFi
bGVUeXBlIDogdWludDhfdCB7IE5vcm1hbEZ1bmN0aW9uVmFyaWFibGUsIEdsb2JhbEZ1bmN0aW9u
VmFyaWFibGUgfTsKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxGdW5jdGlvbkJvZHlOb2RlKiwg
RnVuY3Rpb25WYXJpYWJsZVR5cGU+PiBtX2Z1bmN0aW9uc1RvSW5pdGlhbGl6ZTsKICAgICAgICAg
Ym9vbCBtX25lZWRUb0luaXRpYWxpemVBcmd1bWVudHMgeyBmYWxzZSB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAko
cmV2aXNpb24gMTg1NjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjU2LDggKzIyNTYsOCBAQCBSZWdp
c3RlcklEKiBGb3JJbk5vZGU6OnRyeUdldEJvdW5kTG9jYWwoCiAgICAgICAgIHJldHVybiBnZW5l
cmF0b3IudmFyaWFibGUoaWRlbnQpLmxvY2FsKCk7CiAgICAgfQogCi0gICAgaWYgKG1fbGV4cHIt
PmlzRGVjb25zdHJ1Y3Rpb25Ob2RlKCkpIHsKLSAgICAgICAgRGVjb25zdHJ1Y3RpbmdBc3NpZ25t
ZW50Tm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PERlY29uc3RydWN0aW5nQXNzaWdubWVu
dE5vZGUqPihtX2xleHByKTsKKyAgICBpZiAobV9sZXhwci0+aXNEZXN0cnVjdHVyaW5nTm9kZSgp
KSB7CisgICAgICAgIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSogYXNzaWduTm9kZSA9IHN0
YXRpY19jYXN0PERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSo+KG1fbGV4cHIpOwogICAgICAg
ICBhdXRvIGJpbmRpbmcgPSBhc3NpZ25Ob2RlLT5iaW5kaW5ncygpOwogICAgICAgICBpZiAoIWJp
bmRpbmctPmlzQmluZGluZ05vZGUoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjMxOCw4ICsyMzE4LDggQEAgdm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2Rl
RwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKG1fbGV4cHItPmlzRGVjb25zdHJ1
Y3Rpb25Ob2RlKCkpIHsKLSAgICAgICAgRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZSogYXNz
aWduTm9kZSA9IHN0YXRpY19jYXN0PERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUqPihtX2xl
eHByKTsKKyAgICBpZiAobV9sZXhwci0+aXNEZXN0cnVjdHVyaW5nTm9kZSgpKSB7CisgICAgICAg
IERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PERl
c3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSo+KG1fbGV4cHIpOwogICAgICAgICBhdXRvIGJpbmRp
bmcgPSBhc3NpZ25Ob2RlLT5iaW5kaW5ncygpOwogICAgICAgICBpZiAoIWJpbmRpbmctPmlzQmlu
ZGluZ05vZGUoKSkgewogICAgICAgICAgICAgYXNzaWduTm9kZS0+YmluZGluZ3MoKS0+YmluZFZh
bHVlKGdlbmVyYXRvciwgcHJvcGVydHlOYW1lKTsKQEAgLTI1MzYsOCArMjUzNiw4IEBAIHZvaWQg
Rm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW4KICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdFR5cGVQcm9maWxlckV4cHJlc3Npb25JbmZvKGFzc2lnbk5vZGUtPmRpdm90U3Rh
cnQoKSwgYXNzaWduTm9kZS0+ZGl2b3RFbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9sZXhwci0+aXNEZWNvbnN0cnVjdGlvbk5vZGUo
KSk7Ci0gICAgICAgICAgICBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKiBhc3NpZ25Ob2Rl
ID0gc3RhdGljX2Nhc3Q8RGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZSo+KG1fbGV4cHIpOwor
ICAgICAgICAgICAgQVNTRVJUKG1fbGV4cHItPmlzRGVzdHJ1Y3R1cmluZ05vZGUoKSk7CisgICAg
ICAgICAgICBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNf
Y2FzdDxEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUqPihtX2xleHByKTsKICAgICAgICAgICAg
IGFzc2lnbk5vZGUtPmJpbmRpbmdzKCktPmJpbmRWYWx1ZShnZW5lcmF0b3IsIHZhbHVlKTsKICAg
ICAgICAgfQogICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVDb250cm9sRmxvdyhtX3N0YXRl
bWVudC0+c3RhcnRPZmZzZXQoKSk7CkBAIC0zMTA1LDggKzMxMDUsOCBAQCBSZWdpc3RlcklEKiBD
bGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoCiB9CiAjZW5kaWYKICAgICAKLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlIC0tLS0t
LS0tLS0tLS0tLS0tCi1SZWdpc3RlcklEKiBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlc3RydWN0dXJpbmdBc3NpZ25t
ZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLQorUmVnaXN0ZXJJRCogRGVzdHJ1Y3R1cmluZ0Fzc2ln
bm1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewogICAgIGlmIChSZWdpc3RlcklEKiByZXN1bHQgPSBtX2JpbmRpbmdz
LT5lbWl0RGlyZWN0QmluZGluZyhnZW5lcmF0b3IsIGRzdCwgbV9pbml0aWFsaXplcikpCiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMTE2LDcgKzMxMTYsNyBAQCBSZWdpc3RlcklEKiBEZWNv
bnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlCiAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlVG9EZXN0
aW5hdGlvbklmTmVlZGVkKGRzdCwgaW5pdGlhbGl6ZXIuZ2V0KCkpOwogfQogCi1EZWNvbnN0cnVj
dGlvblBhdHRlcm5Ob2RlOjp+RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpCitEZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGU6On5EZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUoKQogewogfQogICAgIApA
QCAtMzE4Myw3ICszMTgzLDcgQEAgdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJp
bmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpjb2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0
b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkrKykgewotICAgICAgICBpZiAoRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogbm9kZSA9IG1fdGFyZ2V0UGF0dGVybnNbaV0uZ2V0KCkp
CisgICAgICAgIGlmIChEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG5vZGUgPSBtX3RhcmdldFBh
dHRlcm5zW2ldLmdldCgpKQogICAgICAgICAgICAgbm9kZS0+Y29sbGVjdEJvdW5kSWRlbnRpZmll
cnMoaWRlbnRpZmllcnMpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvQVNUQnVpbGRlci5oCShyZXZpc2lvbiAxODU2OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3
IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIENhc2VDbGF1c2VOb2RlKiBDbGF1c2U7CiAgICAgdHlw
ZWRlZiBDb25zdERlY2xOb2RlKiBDb25zdERlY2xMaXN0OwogICAgIHR5cGVkZWYgc3RkOjpwYWly
PEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiBCaW5hcnlPcGVyYW5kOwotICAgIHR5cGVk
ZWYgUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IERlY29uc3RydWN0aW9uUGF0dGVy
bjsKKyAgICB0eXBlZGVmIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IERlc3RydWN0
dXJpbmdQYXR0ZXJuOwogICAgIHR5cGVkZWYgUmVmUHRyPEFycmF5UGF0dGVybk5vZGU+IEFycmF5
UGF0dGVybjsKICAgICB0eXBlZGVmIFJlZlB0cjxPYmplY3RQYXR0ZXJuTm9kZT4gT2JqZWN0UGF0
dGVybjsKICAgICB0eXBlZGVmIFJlZlB0cjxCaW5kaW5nTm9kZT4gQmluZGluZ1BhdHRlcm47CkBA
IC00MDcsOCArNDA3LDggQEAgcHVibGljOgogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50
TGlzdChpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsaXNpb25zLCBleHByKTsgfQogICAgIEVsZW1lbnRO
b2RlKiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9kZSogZWxlbXMsIGludCBlbGlzaW9ucywg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRWxlbWVu
dE5vZGUoZWxlbXMsIGVsaXNpb25zLCBleHByKTsgfQogCi0gICAgUGFyYW1ldGVyTm9kZSogY3Jl
YXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybikgeyBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9Ci0gICAg
UGFyYW1ldGVyTm9kZSogY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBs
aXN0LCBEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBQYXJhbWV0ZXJOb2RlKGxpc3QsIHBhdHRlcm4pOyB9CisgICAgUGFyYW1ldGVyTm9k
ZSogY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJu
KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRlck5vZGUocGF0dGVybik7IH0K
KyAgICBQYXJhbWV0ZXJOb2RlKiBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KFBhcmFtZXRlck5v
ZGUqIGxpc3QsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pIHsgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgUGFyYW1ldGVyTm9kZShsaXN0LCBwYXR0ZXJuKTsgfQogCiAgICAgQ2FzZUNs
YXVzZU5vZGUqIGNyZWF0ZUNsYXVzZShFeHByZXNzaW9uTm9kZSogZXhwciwgSlNDOjpTb3VyY2VF
bGVtZW50cyogc3RhdGVtZW50cykgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBDYXNlQ2xh
dXNlTm9kZShleHByLCBzdGF0ZW1lbnRzKTsgfQogICAgIENsYXVzZUxpc3ROb2RlKiBjcmVhdGVD
bGF1c2VMaXN0KENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgQ2xhdXNlTGlzdE5vZGUoY2xhdXNlKTsgfQpAQCAtNDczLDkgKzQ3Myw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NS
ZWZQdHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUq
IGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBl
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9y
SW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVTdGFydCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVFbmQsIGludCBz
dGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIGF1dG8gbGV4cHIgPSBuZXcgKG1fcGFyc2Vy
QXJlbmEpIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0
KCksIDApOworICAgICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZXN0cnVj
dHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOwogICAgICAg
ICByZXR1cm4gY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBsZXhwciwgaXRlciwgc3RhdGVtZW50
cywgZVN0YXJ0LCBlRGl2b3QsIGVFbmQsIHN0YXJ0LCBlbmQpOwogICAgIH0KICAgICAKQEAgLTQ4
NywxMyArNDg3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAg
ICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZT4gcGF0
dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRm9yT2ZMb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNz
aW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGVTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGVEaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIGF1dG8g
bGV4cHIgPSBuZXcgKG1fcGFyc2VyQXJlbmEpIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUo
bG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIDApOworICAgICAgICBhdXRvIGxleHByID0gbmV3ICht
X3BhcnNlckFyZW5hKSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRl
cm4uZ2V0KCksIDApOwogICAgICAgICByZXR1cm4gY3JlYXRlRm9yT2ZMb29wKGxvY2F0aW9uLCBs
ZXhwciwgaXRlciwgc3RhdGVtZW50cywgZVN0YXJ0LCBlRGl2b3QsIGVFbmQsIHN0YXJ0LCBlbmQp
OwogICAgIH0KIAotICAgIGJvb2wgaXNCaW5kaW5nTm9kZShjb25zdCBEZWNvbnN0cnVjdGlvblBh
dHRlcm4mIHBhdHRlcm4pCisgICAgYm9vbCBpc0JpbmRpbmdOb2RlKGNvbnN0IERlc3RydWN0dXJp
bmdQYXR0ZXJuJiBwYXR0ZXJuKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhdHRlcm4tPmlzQmlu
ZGluZ05vZGUoKTsKICAgICB9CkBAIC03MjUsOSArNzI1LDkgQEAgcHVibGljOgogCiAgICAgYm9v
bCBpc1Jlc29sdmUoRXhwcmVzc2lvbk5vZGUqIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHItPmlz
UmVzb2x2ZU5vZGUoKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlY29uc3RydWN0
aW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRy
PERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0
aWFsaXplcikKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIERlY29uc3RydWN0aW5nQXNz
aWdubWVudE5vZGUobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCksIGluaXRpYWxpemVyKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2Rl
KGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBpbml0aWFsaXplcik7CiAgICAgfQogICAgIAogICAg
IEFycmF5UGF0dGVybiBjcmVhdGVBcnJheVBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikK
QEAgLTc0MCw3ICs3NDAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KGxv
Y2F0aW9uLCAwKTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVybkVudHJ5KEFy
cmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZWNvbnN0
cnVjdGlvblBhdHRlcm4gcGF0dGVybikKKyAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVybkVudHJ5
KEFycmF5UGF0dGVybiBub2RlLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBEZXN0
cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKQogICAgIHsKICAgICAgICAgbm9kZS0+YXBwZW5kSW5k
ZXgobG9jYXRpb24sIHBhdHRlcm4uZ2V0KCkpOwogICAgIH0KQEAgLTc1MCw3ICs3NTAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBPYmplY3RQYXR0ZXJuTm9kZTo6Y3JlYXRlKCk7CiAgICAg
fQogICAgIAotICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4g
bm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB3YXNTdHJpbmcsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIERlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0ZXJu
KQorICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4gbm9kZSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB3YXNTdHJpbmcsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIsIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pCiAgICAg
ewogICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRlbnRpZmllciwgd2FzU3Ry
aW5nLCBwYXR0ZXJuLmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTg1NjkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTgyMCwxNCArODIwLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXNzUmVmUHRyPERlY29u
c3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4pCisgICAgaW5saW5lIFBhcmFtZXRlck5vZGU6
OlBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRl
cm4pCiAgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAgICAgICwgbV9uZXh0KDApCiAg
ICAgewogICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFy
YW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiBsLCBQYXNzUmVmUHRyPERl
Y29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4pCisgICAgaW5saW5lIFBhcmFtZXRlck5v
ZGU6OlBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSogbCwgUGFzc1JlZlB0cjxEZXN0cnVjdHVy
aW5nUGF0dGVybk5vZGU+IHBhdHRlcm4pCiAgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCiAg
ICAgICAgICwgbV9uZXh0KDApCiAgICAgewpAQCAtOTM0LDEyICs5MzQsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuTm9kZTo6RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpCisgICAgaW5saW5lIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZTo6RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICB7CiAgICAg
fQogCiAgICAgaW5saW5lIEFycmF5UGF0dGVybk5vZGU6OkFycmF5UGF0dGVybk5vZGUoKQotICAg
ICAgICA6IERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUoKQorICAgICAgICA6IERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZSgpCiAgICAgewogICAgIH0KICAgICAKQEAgLTk0OSw3ICs5NDksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIE9iamVjdFBhdHRlcm5Ob2Rl
OjpPYmplY3RQYXR0ZXJuTm9kZSgpCi0gICAgICAgIDogRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9k
ZSgpCisgICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICB7CiAgICAgfQog
ICAgIApAQCAtOTY0LDE0ICs5NjQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogICAgIAog
ICAgIGlubGluZSBCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUoY29uc3QgSWRlbnRpZmllciYgYm91
bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZW5kKQotICAgICAgICA6IERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUoKQorICAgICAg
ICA6IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCiAgICAgICAgICwgbV9kaXZvdFN0YXJ0KHN0
YXJ0KQogICAgICAgICAsIG1fZGl2b3RFbmQoZW5kKQogICAgICAgICAsIG1fYm91bmRQcm9wZXJ0
eShib3VuZFByb3BlcnR5KQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIERlY29uc3Ry
dWN0aW5nQXNzaWdubWVudE5vZGU6OkRlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRl
cm5Ob2RlPiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIGlubGlu
ZSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZT4gYmluZGluZ3MsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JpbmRpbmdzKGJp
bmRpbmdzKQogICAgICAgICAsIG1faW5pdGlhbGl6ZXIoaW5pdGlhbGl6ZXIpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkocmV2aXNpb24gMTg1NjkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NSw3ICsxNDUsNyBAQCBSZWY8RnVuY3Rpb25QYXJhbWV0ZXJzPiBGdW5jdGlvblBhcmFtZXRlCiAg
ICAgZm9yIChQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIgPSBmaXJzdFBhcmFtZXRlcjsgcGFyYW1l
dGVyOyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXItPm5leHRQYXJhbSgpKQogICAgICAgICArK3BhcmFt
ZXRlckNvdW50OwogCi0gICAgc2l6ZV90IG9iamVjdFNpemUgPSBzaXplb2YoRnVuY3Rpb25QYXJh
bWV0ZXJzKSAtIHNpemVvZih2b2lkKikgKyBzaXplb2YoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9k
ZSopICogcGFyYW1ldGVyQ291bnQ7CisgICAgc2l6ZV90IG9iamVjdFNpemUgPSBzaXplb2YoRnVu
Y3Rpb25QYXJhbWV0ZXJzKSAtIHNpemVvZih2b2lkKikgKyBzaXplb2YoRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKikgKiBwYXJhbWV0ZXJDb3VudDsKICAgICB2b2lkKiBzbG90ID0gZmFzdE1hbGxv
YyhvYmplY3RTaXplKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoc2xvdCkgRnVuY3Rpb25Q
YXJhbWV0ZXJzKGZpcnN0UGFyYW1ldGVyLCBwYXJhbWV0ZXJDb3VudCkpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gMTg1NjkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNyAr
MTU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVO
b2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQnJh
Y2tldEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0RlY29uc3RydWN0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJpbmdOb2RlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRnVuY0V4cHJOb2RlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQ29tbWFOb2Rl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU2ltcGxl
QXJyYXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTM5OSw3ICsxMzk5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwogICAgIH07
CiAgICAgCi0gICAgY2xhc3MgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTsKKyAgICBjbGFzcyBE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU7CiAgICAgCiAgICAgY2xhc3MgRW51bWVyYXRpb25Ob2Rl
IDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgpAQCAtMTUxOCwxNCArMTUxOCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFBhcmFtZXRlck5vZGUgOiBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXNzUmVmUHRyPERlY29uc3RydWN0
aW9uUGF0dGVybk5vZGU+KTsKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwg
UGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPik7CisgICAgICAgIFBhcmFtZXRl
ck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+KTsKKyAgICAgICAgUGFy
YW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGU+KTsKIAotICAgICAgICBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBwYXR0ZXJuKCkg
Y29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CisgICAgICAgIERlc3RydWN0dXJpbmdQ
YXR0ZXJuTm9kZSogcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVybi5nZXQoKTsgfQog
ICAgICAgICBQYXJhbWV0ZXJOb2RlKiBuZXh0UGFyYW0oKSBjb25zdCB7IHJldHVybiBtX25leHQ7
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5O
b2RlPiBtX3BhdHRlcm47CisgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+
IG1fcGF0dGVybjsKICAgICAgICAgUGFyYW1ldGVyTm9kZSogbV9uZXh0OwogICAgIH07CiAKQEAg
LTE2MzgsMTUgKzE2MzgsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH5GdW5jdGlvblBh
cmFtZXRlcnMoKTsKIAogICAgICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9z
aXplOyB9Ci0gICAgICAgIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIGF0KHVuc2lnbmVkIGlu
ZGV4KSB7IEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7IHJldHVybiBwYXR0ZXJucygpW2luZGV4XTsg
fQorICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0KHVuc2lnbmVkIGluZGV4KSB7
IEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7IHJldHVybiBwYXR0ZXJucygpW2luZGV4XTsgfQogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKFBhcmFtZXRlck5vZGUqLCB1
bnNpZ25lZCBzaXplKTsKIAotICAgICAgICBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiogcGF0
dGVybnMoKSB7IHJldHVybiAmbV9zdG9yYWdlOyB9CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0
ZXJuTm9kZSoqIHBhdHRlcm5zKCkgeyByZXR1cm4gJm1fc3RvcmFnZTsgfQogCiAgICAgICAgIHVu
c2lnbmVkIG1fc2l6ZTsKLSAgICAgICAgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogbV9zdG9y
YWdlOworICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIG1fc3RvcmFnZTsKICAgICB9
OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSBmaW5hbCA6IHB1YmxpYyBTdGF0ZW1lbnRO
b2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewpAQCAtMTc2Miw4ICsxNzYyLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAgY2xhc3MgRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGU+IHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
Tm9kZSk7CisgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIDogcHVibGljIFJlZkNv
dW50ZWQ8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiB7CisgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSk7CiAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogCiAgICAgcHVibGljOgpAQCAtMTc3NCwxNiArMTc3NCwxNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmluZGluZ05vZGUoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXREaXJlY3RCaW5k
aW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIEV4cHJlc3Npb25Ob2RlKikgeyBy
ZXR1cm4gMDsgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB+RGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuTm9kZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2Rl
KCkgPSAwOwogICAgICAgICAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIERlY29uc3RydWN0aW9u
UGF0dGVybk5vZGUoKTsKKyAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCk7CiAgICAg
fTsKIAotICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuTm9kZSB7CisgICAgY2xhc3MgQXJyYXlQYXR0ZXJuTm9kZSA6IHB1YmxpYyBEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxBcnJh
eVBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKLSAgICAgICAgdm9pZCBhcHBlbmRJbmRleChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBub2RlKQorICAgICAg
ICB2b2lkIGFwcGVuZEluZGV4KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3RydWN0dXJpbmdQ
YXR0ZXJuTm9kZSogbm9kZSkKICAgICAgICAgewogICAgICAgICAgICAgbV90YXJnZXRQYXR0ZXJu
cy5hcHBlbmQobm9kZSk7CiAgICAgICAgIH0KQEAgLTE3OTUsMTMgKzE3OTUsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmco
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkc3QsIEV4cHJlc3Npb25Ob2RlKikgb3Zl
cnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0b1N0cmluZyhTdHJpbmdCdWlsZGVyJikgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICAgICAgVmVjdG9yPFJlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRl
cm5Ob2RlPj4gbV90YXJnZXRQYXR0ZXJuczsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGU+PiBtX3RhcmdldFBhdHRlcm5zOwogICAgIH07CiAgICAgCi0gICAg
Y2xhc3MgT2JqZWN0UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9k
ZSB7CisgICAgY2xhc3MgT2JqZWN0UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8T2JqZWN0UGF0dGVy
bk5vZGU+IGNyZWF0ZSgpOwotICAgICAgICB2b2lkIGFwcGVuZEVudHJ5KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIGJvb2wgd2FzU3RyaW5nLCBE
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBwYXR0ZXJuKQorICAgICAgICB2b2lkIGFwcGVuZEVu
dHJ5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIs
IGJvb2wgd2FzU3RyaW5nLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4pCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1fdGFyZ2V0UGF0dGVybnMuYXBwZW5kKEVudHJ5KGlkZW50aWZp
ZXIsIHdhc1N0cmluZywgcGF0dGVybikpOwogICAgICAgICB9CkBAIC0xODEyLDcgKzE4MTIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGJpbmRWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHRvU3RyaW5nKFN0cmluZ0J1aWxkZXImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAg
c3RydWN0IEVudHJ5IHsKLSAgICAgICAgICAgIEVudHJ5KGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgYm9vbCB3YXNTdHJpbmcsIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIHBhdHRl
cm4pCisgICAgICAgICAgICBFbnRyeShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGJv
b2wgd2FzU3RyaW5nLCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm4pCiAgICAgICAg
ICAgICAgICAgOiBwcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKQogICAgICAgICAgICAgICAgICwg
d2FzU3RyaW5nKHdhc1N0cmluZykKICAgICAgICAgICAgICAgICAsIHBhdHRlcm4ocGF0dGVybikK
QEAgLTE4MjAsMTIgKzE4MjAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZTsKICAgICAgICAgICAgIGJvb2wgd2Fz
U3RyaW5nOwotICAgICAgICAgICAgUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBh
dHRlcm47CisgICAgICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0
ZXJuOwogICAgICAgICB9OwogICAgICAgICBWZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0dGVybnM7
CiAgICAgfTsKIAotICAgIGNsYXNzIEJpbmRpbmdOb2RlIDogcHVibGljIERlY29uc3RydWN0aW9u
UGF0dGVybk5vZGUgeworICAgIGNsYXNzIEJpbmRpbmdOb2RlIDogcHVibGljIERlc3RydWN0dXJp
bmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUmVmPEJpbmRpbmdO
b2RlPiBjcmVhdGUoY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKTsKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRQcm9w
ZXJ0eTsgfQpAQCAtMTg0NywxOSArMTg0NywxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SWRlbnRpZmllciBtX2JvdW5kUHJvcGVydHk7CiAgICAgfTsKIAotICAgIGNsYXNzIERlY29uc3Ry
dWN0aW5nQXNzaWdubWVudE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQYXJz
ZXJBcmVuYURlbGV0YWJsZSB7CisgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBQYXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+LCBF
eHByZXNzaW9uTm9kZSopOwotICAgICAgICBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKiBiaW5k
aW5ncygpIHsgcmV0dXJuIG1fYmluZGluZ3MuZ2V0KCk7IH0KKyAgICAgICAgRGVzdHJ1Y3R1cmlu
Z0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBhc3NSZWZQdHI8RGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm5Ob2RlKiBiaW5kaW5ncygpIHsgcmV0dXJuIG1fYmluZGluZ3MuZ2V0KCk7IH0K
ICAgICAgICAgCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBu
ZXc7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBc3NpZ25tZW50TG9j
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0RlY29uc3RydWN0aW9uTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKIAot
ICAgICAgICBSZWZQdHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZT4gbV9iaW5kaW5nczsKKyAg
ICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gbV9iaW5kaW5nczsKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIG1faW5pdGlhbGl6ZXI7CiAgICAgfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTg1NjkxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTQsNyArMzk0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQog
ICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIGludCBz
Y3JhdGNoOwotICAgIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gc2NyYXRjaDEgPSAwOworICAg
IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBzY3JhdGNoMSA9IDA7CiAgICAgVHJlZUV4cHJlc3Np
b24gc2NyYXRjaDIgPSAwOwogICAgIEpTVGV4dFBvc2l0aW9uIHNjcmF0Y2gzOwogICAgIFRyZWVF
eHByZXNzaW9uIHZhckRlY2xzID0gcGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QoY29udGV4dCwgc2Ny
YXRjaCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzY3JhdGNoMywgc2NyYXRjaDMsIHNjcmF0Y2gzLCBW
YXJEZWNsYXJhdGlvbkNvbnRleHQpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiBjb250ZXh0
LCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiYgbGFzdFBhdHRl
cm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVu
dFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVu
ZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCBkZWNsYXJhdGlvbkxpc3RDb250ZXh0KQordGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGludCYgZGVj
bGFyYXRpb25zLCBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhw
cmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNU
ZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xh
cmF0aW9uTGlzdENvbnRleHQgZGVjbGFyYXRpb25MaXN0Q29udGV4dCkKIHsKICAgICBUcmVlRXhw
cmVzc2lvbiBoZWFkID0gMDsKICAgICBUcmVlRXhwcmVzc2lvbiB0YWlsID0gMDsKQEAgLTUwNSwx
NSArNTA1LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3MKICAg
ICAgICAgICAgICAgICBub2RlID0gY29udGV4dC5jcmVhdGVFbXB0eVZhckV4cHJlc3Npb24odmFy
U3RhcnRMb2NhdGlvbiwgKm5hbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGFz
dElkZW50ID0gMDsKLSAgICAgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9WYXJpYWJsZXMpOwotICAgICAgICAgICAg
ZmFpbElmRmFsc2UocGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0aGlzIGRlY29uc3RydWN0aW9uIHBh
dHRlcm4iKTsKKyAgICAgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcyk7CisgICAgICAgICAgICBmYWls
SWZGYWxzZShwYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRoaXMgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJu
Iik7CiAgICAgICAgICAgICBoYXNJbml0aWFsaXplciA9IG1hdGNoKEVRVUFMKTsKICAgICAgICAg
ICAgIGZhaWxJZlRydWUoZGVjbGFyYXRpb25MaXN0Q29udGV4dCA9PSBWYXJEZWNsYXJhdGlvbkNv
bnRleHQgJiYgIWhhc0luaXRpYWxpemVyLCAiRXhwZWN0ZWQgYW4gaW5pdGlhbGl6ZXIgaW4gZGVz
dHJ1Y3R1cmluZyB2YXJpYWJsZSBkZWNsYXJhdGlvbiIpOwogICAgICAgICAgICAgbGFzdFBhdHRl
cm4gPSBwYXR0ZXJuOwogICAgICAgICAgICAgaWYgKGhhc0luaXRpYWxpemVyKSB7CiAgICAgICAg
ICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7IC8vIGNvbnN1bWUg
Jz0nCiAgICAgICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gcmhzID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbihjb250ZXh0KTsKLSAgICAgICAgICAgICAgICBub2RlID0gY29udGV4dC5jcmVh
dGVEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQobG9jYXRpb24sIHBhdHRlcm4sIHJocyk7CisgICAg
ICAgICAgICAgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQo
bG9jYXRpb24sIHBhdHRlcm4sIHJocyk7CiAgICAgICAgICAgICAgICAgbGFzdEluaXRpYWxpemVy
ID0gcmhzOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01MjcsNTAgKzUyNyw1MCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICB0YWls
ID0gY29udGV4dC5hcHBlbmRUb0NvbW1hRXhwcihsb2NhdGlvbiwgaGVhZCwgdGFpbCwgbm9kZSk7
CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICBpZiAobGFzdElkZW50KQotICAgICAg
ICBsYXN0UGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0
VG9WYXJpYWJsZXMsICpsYXN0SWRlbnQsIDAsIGxhc3RJZGVudFRva2VuKTsKKyAgICAgICAgbGFz
dFBhdHRlcm4gPSBjcmVhdGVCaW5kaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvVmFy
aWFibGVzLCAqbGFzdElkZW50LCAwLCBsYXN0SWRlbnRUb2tlbik7CiAgICAgcmV0dXJuIGhlYWQ7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OmNy
ZWF0ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBEZWNvbnN0cnVjdGlvbktp
bmQga2luZCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgaW50IGRlcHRoLCBKU1Rva2VuIHRva2Vu
KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4g
UGFyc2VyPExleGVyVHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250
ZXh0LCBEZXN0cnVjdHVyaW5nS2luZCBraW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBpbnQg
ZGVwdGgsIEpTVG9rZW4gdG9rZW4pCiB7CiAgICAgQVNTRVJUKCFuYW1lLmlzTnVsbCgpKTsKICAg
ICAKICAgICBBU1NFUlQobmFtZS5pbXBsKCktPmlzQXRvbWljKCkgfHwgbmFtZS5pbXBsKCktPmlz
U3ltYm9sKCkpOwogICAgIGlmIChkZXB0aCkgewotICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0
cnVjdFRvVmFyaWFibGVzKQotICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJl
VmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90IGRlY29uc3RydWN0IHRvIGEgdmFyaWFibGUgbmFtZWQg
JyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICBpZiAoa2luZCA9
PSBEZWNvbnN0cnVjdFRvUGFyYW1ldGVycykgeworICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVj
dHVyZVRvVmFyaWFibGVzKQorICAgICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJl
VmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90IGRlc3RydWN0dXJlIHRvIGEgdmFyaWFibGUgbmFtZWQg
JyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAgICAgICBpZiAoa2luZCA9
PSBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycykgewogICAgICAgICAgICAgYXV0byBiaW5kaW5nUmVz
dWx0ID0gZGVjbGFyZUJvdW5kUGFyYW1ldGVyKCZuYW1lKTsKICAgICAgICAgICAgIGlmIChiaW5k
aW5nUmVzdWx0ID09IFNjb3BlOjpTdHJpY3RCaW5kaW5nRmFpbGVkICYmIHN0cmljdE1vZGUoKSkg
ewotICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5hcmd1bWVudHMgPT0gbmFtZSB8fCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09IG5hbWUs
ICJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8gYSBwYXJhbWV0ZXIgbmFtZSAnIiwgbmFtZS5pbXBsKCks
ICInIGluIHN0cmljdCBtb2RlIik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSBuYW1lIHx8IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmV2YWwgPT0gbmFtZSwgIkNhbm5vdCBkZXN0cnVjdHVyZSB0byBhIHBhcmFtZXRlciBu
YW1lICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgICAgICAg
ICBpZiAobV9sYXN0RnVuY3Rpb25OYW1lICYmIG5hbWUgPT0gKm1fbGFzdEZ1bmN0aW9uTmFtZSkK
LSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8g
JyIsIG5hbWUuaW1wbCgpLCAiJyBhcyBpdCBzaGFkb3dzIHRoZSBuYW1lIG9mIGEgc3RyaWN0IG1v
ZGUgZnVuY3Rpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3Qg
ZGVzdHJ1Y3R1cmUgdG8gJyIsIG5hbWUuaW1wbCgpLCAiJyBhcyBpdCBzaGFkb3dzIHRoZSBuYW1l
IG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24iKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0Zh
aWx1cmVEdWVUb0tleXdvcmQoImJvdW5kIHBhcmFtZXRlciBuYW1lIik7CiAgICAgICAgICAgICAg
ICAgaWYgKGhhc0RlY2xhcmVkUGFyYW1ldGVyKG5hbWUpKQotICAgICAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZWNvbnN0cnVjdCB0byAnIiwgbmFtZS5pbXBsKCksICInIGFz
IGl0IGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgc2Vt
YW50aWNGYWlsKCJDYW5ub3QgZGVzdHJ1Y3R1cmUgdG8gJyIsIG5hbWUuaW1wbCgpLCAiJyBhcyBp
dCBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsKCJDYW5ub3QgYmluZCB0byBhIHBhcmFtZXRlciBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICIn
IGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoYmluZGlu
Z1Jlc3VsdCA9PSBTY29wZTo6QmluZGluZ0ZhaWxlZCkgewogICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbHVyZUR1ZVRvS2V5d29yZCgiYm91bmQgcGFyYW1ldGVyIG5hbWUiKTsKICAgICAgICAg
ICAgICAgICBpZiAoaGFzRGVjbGFyZWRQYXJhbWV0ZXIobmFtZSkpCi0gICAgICAgICAgICAgICAg
ICAgIHNlbWFudGljRmFpbCgiQ2Fubm90IGRlY29uc3RydWN0IHRvICciLCBuYW1lLmltcGwoKSwg
IicgYXMgaXQgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpOwotICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbCgiQ2Fubm90IGRlY29uc3RydWN0IHRvIGEgcGFyYW1ldGVyIG5hbWVkICciLCBu
YW1lLmltcGwoKSwgIiciKTsKKyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5u
b3QgZGVzdHJ1Y3R1cmUgdG8gJyIsIG5hbWUuaW1wbCgpLCAiJyBhcyBpdCBoYXMgYWxyZWFkeSBi
ZWVuIGRlY2xhcmVkIik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVz
dHJ1Y3R1cmUgdG8gYSBwYXJhbWV0ZXIgbmFtZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyIpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChraW5kICE9IERlY29uc3RydWN0VG9F
eHByZXNzaW9ucykKKyAgICAgICAgaWYgKGtpbmQgIT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25z
KQogICAgICAgICAgICAgY29udGV4dC5hZGRWYXIoJm5hbWUsIERlY2xhcmF0aW9uU3RhY2tzOjpI
YXNJbml0aWFsaXplcik7CiAKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoa2luZCA9PSBEZWNv
bnN0cnVjdFRvVmFyaWFibGVzKSB7CisgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9W
YXJpYWJsZXMpIHsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlh
YmxlKCZuYW1lKSwgIkNhbm5vdCBkZWNsYXJlIGEgdmFyaWFibGUgbmFtZWQgJyIsIG5hbWUuaW1w
bCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICAgICAgY29udGV4dC5hZGRWYXIoJm5h
bWUsIERlY2xhcmF0aW9uU3RhY2tzOjpIYXNJbml0aWFsaXplcik7CiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9QYXJhbWV0ZXJzKSB7CisgICAg
ICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKSB7CiAgICAgICAgICAgICBi
b29sIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVBhcmFtZXRlcigmbmFtZSk7CiAgICAgICAg
ICAgICBpZiAoIWRlY2xhcmF0aW9uUmVzdWx0ICYmIHN0cmljdE1vZGUoKSkgewotICAgICAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMg
PT0gbmFtZSB8fCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09IG5hbWUsICJDYW5ub3QgZGVj
b25zdHJ1Y3QgdG8gYSBwYXJhbWV0ZXIgbmFtZSAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmlj
dCBtb2RlIik7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSBuYW1lIHx8IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwg
PT0gbmFtZSwgIkNhbm5vdCBkZXN0cnVjdHVyZSB0byBhIHBhcmFtZXRlciBuYW1lICciLCBuYW1l
LmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgICAgICAgICBpZiAobV9sYXN0
RnVuY3Rpb25OYW1lICYmIG5hbWUgPT0gKm1fbGFzdEZ1bmN0aW9uTmFtZSkKICAgICAgICAgICAg
ICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjbGFyZSBhIHBhcmFtZXRlciBuYW1lZCAn
IiwgbmFtZS5pbXBsKCksICInIGFzIGl0IHNoYWRvd3MgdGhlIG5hbWUgb2YgYSBzdHJpY3QgbW9k
ZSBmdW5jdGlvbiIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29y
ZCgicGFyYW1ldGVyIG5hbWUiKTsKQEAgLTU4NCwyNCArNTg0LDI0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3QKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0
dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm5FeHBy
ZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNlRGVz
dHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAg
IHJldHVybiBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRv
RXhwcmVzc2lvbnMpOworICAgIHJldHVybiBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRl
eHQsIERlc3RydWN0dXJlVG9FeHByZXNzaW9ucyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlv
blBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBEZWNvbnN0cnVjdGlvbktpbmQga2luZCwgaW50IGRlcHRoKQor
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImIGNv
bnRleHQsIERlc3RydWN0dXJpbmdLaW5kIGtpbmQsIGludCBkZXB0aCkKIHsKICAgICBmYWlsSWZT
dGFja092ZXJmbG93KCk7CiAgICAgaW50IG5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKLSAg
ICBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRlcm47CisgICAgVHJlZURlc3RydWN0dXJp
bmdQYXR0ZXJuIHBhdHRlcm47CiAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgIGNh
c2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgYXV0byBhcnJheVBhdHRlcm4gPSBjb250ZXh0LmNy
ZWF0ZUFycmF5UGF0dGVybihtX3Rva2VuLm1fbG9jYXRpb24pOwogICAgICAgICBuZXh0KCk7Ci0g
ICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiBtYXRjaChDTE9T
RUJSQUNLRVQpKQorICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMg
JiYgbWF0Y2goQ0xPU0VCUkFDS0VUKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBm
YWlsSWZUcnVlKG1hdGNoKENMT1NFQlJBQ0tFVCksICJUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9u
ZSBib3VuZCBwcm9wZXJ0eSBpbiBhbiBhcnJheSBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7Cisg
ICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ0xPU0VCUkFDS0VUKSwgIlRoZXJlIG11c3QgYmUgYXQg
bGVhc3Qgb25lIGJvdW5kIHByb3BlcnR5IGluIGFuIGFycmF5IGRlc3RydWN0dXJpbmcgcGF0dGVy
biIpOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC5hcHBlbmRBcnJheVBhdHRlcm5Ta2lwRW50cnkoYXJyYXlQ
YXR0ZXJuLCBtX3Rva2VuLm1fbG9jYXRpb24pOwpAQCAtNjA5LDM5ICs2MDksMzkgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdAogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKLSAgICAgICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJu
ID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwga2luZCwgZGVwdGggKyAxKTsK
LSAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAhaW5u
ZXJQYXR0ZXJuKQorICAgICAgICAgICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJzZURlc3RydWN0
dXJpbmdQYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRlcHRoICsgMSk7CisgICAgICAgICAgICBpZiAo
a2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMgJiYgIWlubmVyUGF0dGVybikKICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVy
biwgIkNhbm5vdCBwYXJzZSB0aGlzIGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKKyAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0aGlzIGRlc3RydWN0
dXJpbmcgcGF0dGVybiIpOwogICAgICAgICAgICAgY29udGV4dC5hcHBlbmRBcnJheVBhdHRlcm5F
bnRyeShhcnJheVBhdHRlcm4sIGxvY2F0aW9uLCBpbm5lclBhdHRlcm4pOwogICAgICAgICB9IHdo
aWxlIChjb25zdW1lKENPTU1BKSk7CiAgICAgICAgIAotICAgICAgICBpZiAoa2luZCA9PSBEZWNv
bnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJBQ0tFVCkpCisgICAgICAgIGlm
IChraW5kID09IERlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAhbWF0Y2goQ0xPU0VCUkFDS0VU
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VC
UkFDS0VULCAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnXScgb3IgYSAnLCcgZm9sbG93aW5n
IGFuIGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOworICAgICAgICBjb25zdW1lT3JG
YWlsKENMT1NFQlJBQ0tFVCwgIkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9yIGEgJywn
IGZvbGxvd2luZyBhbiBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybiIpOwogICAgICAgICBw
YXR0ZXJuID0gYXJyYXlQYXR0ZXJuOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBP
UEVOQlJBQ0U6IHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICAKLSAgICAgICAgaWYgKGtpbmQg
PT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYmIG1hdGNoKENMT1NFQlJBQ0UpKQorICAgICAg
ICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMgJiYgbWF0Y2goQ0xPU0VCUkFD
RSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKENM
T1NFQlJBQ0UpLCAiVGhlcmUgbXVzdCBiZSBhdCBsZWFzdCBvbmUgYm91bmQgcHJvcGVydHkgaW4g
YW4gb2JqZWN0IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKKyAgICAgICAgZmFpbElmVHJ1ZSht
YXRjaChDTE9TRUJSQUNFKSwgIlRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGJvdW5kIHByb3Bl
cnR5IGluIGFuIG9iamVjdCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKICAgICAgICAgYXV0byBv
YmplY3RQYXR0ZXJuID0gY29udGV4dC5jcmVhdGVPYmplY3RQYXR0ZXJuKG1fdG9rZW4ubV9sb2Nh
dGlvbik7CiAgICAgICAgIGJvb2wgd2FzU3RyaW5nID0gZmFsc2U7CiAgICAgICAgIGRvIHsKICAg
ICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lOwotICAgICAgICAgICAgVHJlZURlY29u
c3RydWN0aW9uUGF0dGVybiBpbm5lclBhdHRlcm4gPSAwOworICAgICAgICAgICAgVHJlZURlc3Ry
dWN0dXJpbmdQYXR0ZXJuIGlubmVyUGF0dGVybiA9IDA7CiAgICAgICAgICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24gPSBtX3Rva2VuLm1fbG9jYXRpb247CiAgICAgICAgICAgICBpZiAobWF0
Y2goSURFTlQpKSB7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gKm1fdG9rZW4ubV9k
YXRhLmlkZW50OwogICAgICAgICAgICAgICAgIEpTVG9rZW4gaWRlbnRpZmllclRva2VuID0gbV90
b2tlbjsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN1
bWUoQ09MT04pKQotICAgICAgICAgICAgICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29u
c3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCArIDEpOworICAgICAgICAgICAg
ICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQs
IGtpbmQsIGRlcHRoICsgMSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBpbm5lclBhdHRlcm4gPSBjcmVhdGVCaW5kaW5nUGF0dGVybihjb250ZXh0LCBraW5kLCBw
cm9wZXJ0eU5hbWUsIGRlcHRoLCBpZGVudGlmaWVyVG9rZW4pOwogICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTY1Nyw3ICs2NTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVE
ZWNvbnN0CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRCAm
JiBtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIShtX3Rva2VuLm1fdHlw
ZSAmIEtleXdvcmRUb2tlbkZsYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsV2l0aE1lc3Nh
Z2UoIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAgICAgICAgICB9CkBA
IC02NjYsMzEgKzY2NiwzMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNv
bnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoQ09MT04pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChr
aW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucykKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0b2tl
blR5cGUgPT0gUkVTRVJWRUQsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9u
IHN5bnRheCBmb3IgcmVzZXJ2ZWQgbmFtZSAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIiciKTsK
LSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSA9PSBSRVNF
UlZFRF9JRl9TVFJJQ1QsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5
bnRheCBmb3IgcmVzZXJ2ZWQgbmFtZSAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIicgaW4gc3Ry
aWN0IG1vZGUiKTsKLSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2Vu
VHlwZSAmIEtleXdvcmRUb2tlbkZsYWcsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3Ry
dWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIiciKTsK
KyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSA9PSBSRVNF
UlZFRCwgIkNhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIHJl
c2VydmVkIG5hbWUgJyIsIHByb3BlcnR5TmFtZS5pbXBsKCksICInIik7CisgICAgICAgICAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0b2tlblR5cGUgPT0gUkVTRVJWRURfSUZfU1RSSUNU
LCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3IgcmVzZXJ2
ZWQgbmFtZSAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSAmIEtleXdvcmRU
b2tlbkZsYWcsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZv
ciBrZXl3b3JkICciLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhICc6
JyBwcmlvciB0byBuYW1lZCBwcm9wZXJ0eSBkZWNvbnN0cnVjdGlvbiIpOworICAgICAgICAgICAg
ICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgJzonIHByaW9yIHRvIGEgbmFtZWQg
ZGVzdHJ1Y3R1cmluZyBwcm9wZXJ0eSIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBr
aW5kLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIGlubmVyUGF0dGVybiA9IHBhcnNlRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwga2luZCwgZGVwdGggKyAxKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAh
aW5uZXJQYXR0ZXJuKQorICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJl
c3Npb25zICYmICFpbm5lclBhdHRlcm4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZWNv
bnN0cnVjdGlvbiBwYXR0ZXJuIik7CisgICAgICAgICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRl
cm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKICAgICAgICAg
ICAgIGNvbnRleHQuYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KG9iamVjdFBhdHRlcm4sIGxvY2F0
aW9uLCB3YXNTdHJpbmcsIHByb3BlcnR5TmFtZSwgaW5uZXJQYXR0ZXJuKTsKICAgICAgICAgfSB3
aGlsZSAoY29uc3VtZShDT01NQSkpOwotICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRv
RXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJBQ0UpKQorICAgICAgICBpZiAoa2luZCA9PSBE
ZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJBQ0UpKQogICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVk
IGVpdGhlciBhIGNsb3NpbmcgJ30nIG9yIGFuICcsJyBhZnRlciBhIHByb3BlcnR5IGRlY29uc3Ry
dWN0aW9uIHBhdHRlcm4iKTsKKyAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhw
ZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnfScgb3IgYW4gJywnIGFmdGVyIGEgcHJvcGVydHkgZGVz
dHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAgICAgICAgIHBhdHRlcm4gPSBvYmplY3RQYXR0ZXJuOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmICghbWF0
Y2goSURFTlQpKSB7Ci0gICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVz
c2lvbnMpCisgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVE
dWVUb0tleXdvcmQoInZhcmlhYmxlIG5hbWUiKTsKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2Fn
ZSgiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgcGF0dGVybiBvciBhICcpJyBpbiBwYXJhbWV0ZXIgbGlz
dCIpOwpAQCAtNzQ2LDEzICs3NDYsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZQogICAgIEpTVGV4dFBvc2l0aW9uIGRlY2xzU3RhcnQ7CiAgICAgSlNUZXh0UG9z
aXRpb24gZGVjbHNFbmQ7CiAgICAgVHJlZUV4cHJlc3Npb24gZGVjbHMgPSAwOwotICAgIFRyZWVE
ZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybiA9IDA7CisgICAgVHJlZURlc3RydWN0dXJpbmdQ
YXR0ZXJuIHBhdHRlcm4gPSAwOwogICAgIGlmIChtYXRjaChWQVIpKSB7CiAgICAgICAgIC8qCiAg
ICAgICAgICBmb3IgKHZhciBJREVOVCBpbiBleHByZXNzaW9uKSBzdGF0ZW1lbnQKICAgICAgICAg
IGZvciAodmFyIHZhckRlY2xhcmF0aW9uTGlzdDsgZXhwcmVzc2lvbk9wdDsgZXhwcmVzc2lvbk9w
dCkKICAgICAgICAgICovCi0gICAgICAgIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gZm9ySW5U
YXJnZXQgPSAwOworICAgICAgICBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gZm9ySW5UYXJnZXQg
PSAwOwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBmb3JJbkluaXRpYWxpemVyID0gMDsKICAgICAg
ICAgbV9hbGxvd3NJbiA9IGZhbHNlOwogICAgICAgICBKU1RleHRQb3NpdGlvbiBpbml0U3RhcnQ7
CkBAIC04MDIsNyArODAyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogICAgICAgICBpZiAobWF0Y2goT1BFTkJSQUNFKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkp
IHsKICAgICAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsK
ICAgICAgICAgICAgIGRlY2xzU3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKLSAgICAgICAg
ICAgIHBhdHRlcm4gPSB0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Npb24oY29u
dGV4dCk7CisgICAgICAgICAgICBwYXR0ZXJuID0gdHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVy
bkV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBkZWNsc0VuZCA9IGxhc3RUb2tlbkVu
ZFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBpZiAocGF0dGVybiAmJiAobWF0Y2goSU5UT0tFTikg
fHwgKG1hdGNoKElERU5UKSAmJiAqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS0+cHJvcGVy
dHlOYW1lcy0+b2YpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVudW1lcmF0aW9uTG9vcDsKQEAg
LTEyNjAsMTIgKzEyNjAsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZQogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Rm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKLSAgICBhdXRvIHBhcmFt
ZXRlciA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9Q
YXJhbWV0ZXJzKTsKKyAgICBhdXRvIHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRl
cm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAgIGZhaWxJZkZhbHNlKHBh
cmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwogICAgIFRyZWVGb3Jt
YWxQYXJhbWV0ZXJMaXN0IGxpc3QgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3Qo
cGFyYW1ldGVyKTsKICAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCB0YWlsID0gbGlzdDsKICAg
ICB3aGlsZSAoY29uc3VtZShDT01NQSkpIHsKLSAgICAgICAgcGFyYW1ldGVyID0gcGFyc2VEZWNv
bnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnMpOworICAg
ICAgICBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3Ry
dWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fu
bm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7CiAgICAgICAgIHRhaWwgPSBjb250ZXh0LmNy
ZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QodGFpbCwgcGFyYW1ldGVyKTsKICAgICB9CkBAIC0xMzM0
LDcgKzEzMzQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8CiAg
ICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgImdldHRlciBmdW5jdGlvbnMgbXVzdCBo
YXZlIG5vIHBhcmFtZXRlcnMiKTsKICAgICBlbHNlIGlmIChtb2RlID09IFNldHRlck1vZGUpIHsK
ICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChDTE9TRVBBUkVOKSwgInNldHRlciBmdW5jdGlvbnMg
bXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKLSAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJz
ZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRvUGFyYW1ldGVycyk7
CisgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250
ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFt
ZXRlciwgInNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKICAgICAg
ICAgaW5mby5wYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBh
cmFtZXRlcik7CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ09NTUEpLCAic2V0dGVyIGZ1bmN0
aW9ucyBtdXN0IGhhdmUgb25lIHBhcmFtZXRlciIpOwpAQCAtMTg0NiwxMSArMTg0NiwxMSBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByCiAgICAgaW50IGluaXRpYWxO
b25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAgaWYgKG1hdGNoKE9QRU5CUkFDRSkgfHwg
bWF0Y2goT1BFTkJSQUNLRVQpKSB7CiAgICAgICAgIFNhdmVQb2ludCBzYXZlUG9pbnQgPSBjcmVh
dGVTYXZlUG9pbnQoKTsKLSAgICAgICAgYXV0byBwYXR0ZXJuID0gdHJ5UGFyc2VEZWNvbnN0cnVj
dGlvblBhdHRlcm5FeHByZXNzaW9uKGNvbnRleHQpOworICAgICAgICBhdXRvIHBhdHRlcm4gPSB0
cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
aWYgKHBhdHRlcm4gJiYgY29uc3VtZShFUVVBTCkpIHsKICAgICAgICAgICAgIGF1dG8gcmhzID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGlmIChyaHMp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVjb25zdHJ1Y3RpbmdBc3Np
Z25tZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCByaHMpOworICAgICAgICAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCBy
aHMpOwogICAgICAgICB9CiAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE4
NTY5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgU291cmNlQ29kZTsKICNlbmRpZgogI2RlZmlu
ZSBUcmVlUHJvcGVydHkgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlByb3BlcnR5CiAjZGVmaW5lIFRy
ZWVQcm9wZXJ0eUxpc3QgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OlByb3BlcnR5TGlzdAotI2RlZmlu
ZSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpEZWNvbnN0
cnVjdGlvblBhdHRlcm4KKyNkZWZpbmUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpEZXN0cnVjdHVyaW5nUGF0dGVybgogCiBDT01QSUxFX0FTU0VSVChMYXN0
VW50YWdnZWRUb2tlbiA8IDY0LCBMZXNzVGhhbjY0VW50YWdnZWRUb2tlbnMpOwogCkBAIC04Nywx
MCArODcsMTAgQEAgZW51bSBGdW5jdGlvblBhcnNlTW9kZSB7CiAgICAgU2V0dGVyTW9kZSwKICAg
ICBNZXRob2RNb2RlLAogfTsKLWVudW0gRGVjb25zdHJ1Y3Rpb25LaW5kIHsKLSAgICBEZWNvbnN0
cnVjdFRvVmFyaWFibGVzLAotICAgIERlY29uc3RydWN0VG9QYXJhbWV0ZXJzLAotICAgIERlY29u
c3RydWN0VG9FeHByZXNzaW9ucworZW51bSBEZXN0cnVjdHVyaW5nS2luZCB7CisgICAgRGVzdHJ1
Y3R1cmVUb1ZhcmlhYmxlcywKKyAgICBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycywKKyAgICBEZXN0
cnVjdHVyZVRvRXhwcmVzc2lvbnMKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
Ym9vbCBpc0V2YWxOb2RlKCkgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTc1OSwxMiArNzU5LDEyIEBA
IHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5F
IFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImLCBpbnQgZnVu
Y3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNT
dGFydCwgQ29uc3RydWN0b3JLaW5kKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IEFMV0FZU19JTkxJTkUgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyc2VGb3JtYWxQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJik7CiAgICAgZW51bSBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IHsg
Rm9yTG9vcENvbnRleHQsIFZhckRlY2xhcmF0aW9uQ29udGV4dCB9OwotICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gcGFyc2VWYXJEZWNsYXJhdGlvbkxpc3Qo
VHJlZUJ1aWxkZXImLCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlY29uc3RydWN0aW9uUGF0dGVy
biYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBv
c2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3Np
dGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhckRlY2xhcmF0aW9uTGlz
dChUcmVlQnVpbGRlciYsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRl
cm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQ
b3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9z
aXRpb24mIGluaXRFbmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVDb25zdERlY2xMaXN0IHBhcnNl
Q29uc3REZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImKTsKIAotICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gY3Jl
YXRlQmluZGluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZWNvbnN0cnVjdGlvbktpbmQsIGNvbnN0
IElkZW50aWZpZXImLCBpbnQgZGVwdGgsIEpTVG9rZW4pOwotICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGFyc2VE
ZWNvbnN0cnVjdGlvblBhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZWNvbnN0cnVjdGlvbktpbmQsIGlu
dCBkZXB0aCA9IDApOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gdHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRl
cm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIGNyZWF0ZUJpbmRpbmdQ
YXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tpbmQsIGNvbnN0IElkZW50aWZpZXIm
LCBpbnQgZGVwdGgsIEpTVG9rZW4pOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXJzZURlc3RydWN0dXJpbmdQ
YXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tpbmQsIGludCBkZXB0aCA9IDApOwor
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVj
dHVyaW5nUGF0dGVybiB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihUcmVl
QnVpbGRlciYpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJ
TkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1l
bnRzLCBGdW5jdGlvblBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFy
c2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOwogICAgIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJldmlzaW9uIDE4NTY5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGljOgogICAgICAgICBGdW5jdGlvbkV4cHIsIENs
YXNzRXhwciwgU3VwZXJFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2FsbEV4cHIsCiAgICAg
ICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFyeUV4cHIsCiAg
ICAgICAgIENvbmRpdGlvbmFsRXhwciwgQXNzaWdubWVudEV4cHIsIFR5cGVvZkV4cHIsCi0gICAg
ICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJhbEV4cHIsIEJpbmRpbmdEZWNvbnN0cnVjdGlvbiwK
LSAgICAgICAgQXJyYXlEZWNvbnN0cnVjdGlvbiwgT2JqZWN0RGVjb25zdHJ1Y3Rpb24sIFNvdXJj
ZUVsZW1lbnRzUmVzdWx0LAorICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByLCBC
aW5kaW5nRGVzdHJ1Y3R1cmluZywKKyAgICAgICAgQXJyYXlEZXN0cnVjdHVyaW5nLCBPYmplY3RE
ZXN0cnVjdHVyaW5nLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKICAgICAgICAgRnVuY3Rpb25Cb2R5
UmVzdWx0LCBTcHJlYWRFeHByLCBBcmd1bWVudHNSZXN1bHQsCiAgICAgICAgIFByb3BlcnR5TGlz
dFJlc3VsdCwgQXJndW1lbnRzTGlzdFJlc3VsdCwgRWxlbWVudHNMaXN0UmVzdWx0LAogICAgICAg
ICBTdGF0ZW1lbnRSZXN1bHQsIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQsIENsYXVzZVJlc3Vs
dCwKLSAgICAgICAgQ2xhdXNlTGlzdFJlc3VsdCwgQ29tbWFFeHByLCBEZWNvbnN0cnVjdGluZ0Fz
c2lnbm1lbnQsCisgICAgICAgIENsYXVzZUxpc3RSZXN1bHQsIENvbW1hRXhwciwgRGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnQsCiAgICAgICAgIFRlbXBsYXRlU3RyaW5nUmVzdWx0LCBUZW1wbGF0ZVN0
cmluZ0xpc3RSZXN1bHQsCiAgICAgICAgIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3RSZXN1bHQsIFRl
bXBsYXRlRXhwciwKICAgICAgICAgVGFnZ2VkVGVtcGxhdGVFeHByCkBAIC0xMzAsOSArMTMwLDkg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IENsYXVzZTsKICAgICB0eXBlZGVmIGludCBDb25z
dERlY2xMaXN0OwogICAgIHR5cGVkZWYgaW50IEJpbmFyeU9wZXJhbmQ7Ci0gICAgdHlwZWRlZiBp
bnQgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuOwotICAgIHR5cGVkZWYgRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuIEFycmF5UGF0dGVybjsKLSAgICB0eXBlZGVmIERlY29uc3RydWN0aW9uUGF0dGVybiBPYmpl
Y3RQYXR0ZXJuOworICAgIHR5cGVkZWYgaW50IERlc3RydWN0dXJpbmdQYXR0ZXJuOworICAgIHR5
cGVkZWYgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gQXJyYXlQYXR0ZXJuOworICAgIHR5cGVkZWYgRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4gT2JqZWN0UGF0dGVybjsKIAogICAgIHN0YXRpYyBjb25zdCBib29s
IENyZWF0ZXNBU1QgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBOZWVkc0ZyZWVWYXJp
YWJsZUluZm8gPSBmYWxzZTsKQEAgLTIxNiw4ICsyMTYsOCBAQCBwdWJsaWM6CiAgICAgaW50IGNy
ZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50KSB7
IHJldHVybiBQcm9wZXJ0eUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRWxlbWVudExpc3Qo
aW50LCBpbnQpIHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVF
bGVtZW50TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7IH0K
LSAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZWNvbnN0cnVjdGlvblBhdHRlcm4p
IHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9y
bWFsUGFyYW1ldGVyTGlzdChpbnQsIERlY29uc3RydWN0aW9uUGF0dGVybikgeyByZXR1cm4gRm9y
bWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IHJldHVybiBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVz
dWx0OyB9CisgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoaW50LCBEZXN0cnVjdHVy
aW5nUGF0dGVybikgeyByZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQogICAgIGlu
dCBjcmVhdGVDbGF1c2UoaW50LCBpbnQpIHsgcmV0dXJuIENsYXVzZVJlc3VsdDsgfQogICAgIGlu
dCBjcmVhdGVDbGF1c2VMaXN0KGludCkgeyByZXR1cm4gQ2xhdXNlTGlzdFJlc3VsdDsgfQogICAg
IGludCBjcmVhdGVDbGF1c2VMaXN0KGludCwgaW50KSB7IHJldHVybiBDbGF1c2VMaXN0UmVzdWx0
OyB9CkBAIC0yOTYsMzYgKzI5NiwzNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSWRlbnRpZmllciog
Z2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5
Lm5hbWU7IH0KICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYg
cHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVz
b2x2ZShFeHByZXNzaW9uVHlwZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVF
eHByIHx8IGV4cHIgPT0gUmVzb2x2ZUV2YWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
RXhwcmVzc2lvblR5cGUpCisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fz
c2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBFeHByZXNzaW9uVHlwZSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQ7CisgICAgICAgIHJl
dHVybiBEZXN0cnVjdHVyaW5nQXNzaWdubWVudDsKICAgICB9CiAgICAgCiAgICAgQXJyYXlQYXR0
ZXJuIGNyZWF0ZUFycmF5UGF0dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIEFycmF5RGVjb25zdHJ1Y3Rpb247CisgICAgICAgIHJldHVybiBBcnJheURl
c3RydWN0dXJpbmc7CiAgICAgfQogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuU2tpcEVudHJ5
KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7CiAgICAgfQotICAg
IHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJuLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4pCisgICAgdm9pZCBhcHBlbmRBcnJheVBh
dHRlcm5FbnRyeShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3RydWN0
dXJpbmdQYXR0ZXJuKQogICAgIHsKICAgICB9CiAgICAgT2JqZWN0UGF0dGVybiBjcmVhdGVPYmpl
Y3RQYXR0ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCiAgICAgewotICAgICAgICByZXR1cm4g
T2JqZWN0RGVjb25zdHJ1Y3Rpb247CisgICAgICAgIHJldHVybiBPYmplY3REZXN0cnVjdHVyaW5n
OwogICAgIH0KLSAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4s
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wsIGNvbnN0IElkZW50aWZpZXImLCBEZWNvbnN0
cnVjdGlvblBhdHRlcm4pCisgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJuRW50cnkoQXJyYXlQ
YXR0ZXJuLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sLCBjb25zdCBJZGVudGlmaWVyJiwg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4pCiAgICAgewogICAgIH0KLSAgICBEZWNvbnN0cnVjdGlvblBh
dHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JikKKyAgICBEZXN0cnVjdHVyaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nTG9jYXRpb24oY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiwgY29uc3QgSlNUZXh0UG9zaXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJpbmRpbmdE
ZWNvbnN0cnVjdGlvbjsKKyAgICAgICAgcmV0dXJuIEJpbmRpbmdEZXN0cnVjdHVyaW5nOwogICAg
IH0KIAotICAgIGJvb2wgaXNCaW5kaW5nTm9kZShEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVy
bikKKyAgICBib29sIGlzQmluZGluZ05vZGUoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBwYXR0ZXJuID09IEJpbmRpbmdEZWNvbnN0cnVjdGlvbjsK
KyAgICAgICAgcmV0dXJuIHBhdHRlcm4gPT0gQmluZGluZ0Rlc3RydWN0dXJpbmc7CiAgICAgfQog
CiAgICAgdm9pZCBzZXRFbmRPZmZzZXQoaW50LCBpbnQpIHsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZXNlcnZlZC13b3JkLXdpdGgtZXNjYXBlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVzZXJ2ZWQtd29y
ZC13aXRoLWVzY2FwZS5qcwkocmV2aXNpb24gMTg1NjkxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9yZXNlcnZlZC13b3JkLXdpdGgtZXNjYXBlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw5ICszMiw5IEBAIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB2YXIg
PSAyMDAKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB2XHUwMDYxciA9IDIwMDAwMDA7
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2
MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZh
ciB2XHV7MDA2MX1yID0gMjAwMDAwMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIAotdGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHt2YXJ9ID0gb2JqKWAsIFN0cmluZy5yYXdgU3lu
dGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZv
ciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHt2XHUw
MDYxcn0gPSBvYmpgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlh
dGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YHZhciB7dlx1ezAwNjF9cn0gPSBvYmpgLCBTdHJpbmcucmF3YFN5
bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBm
b3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB7dmFy
fSA9IG9iailgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVk
IGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgdmFyIHt2XHUwMDYxcn0gPSBvYmpgLCBTdHJpbmcucmF3YFN5bnRheEVy
cm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3
b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHt2XHV7MDA2MX1y
fSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQg
ZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7CiAKIHRlc3RTeW50YXhF
cnJvcihTdHJpbmcucmF3YHZhciB7dmFyOnZhcn0gPSBvYmopYCwgU3RyaW5nLnJhd2BTeW50YXhF
cnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7
CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3Zhcjp2XHUwMDYxcn0gPSBvYmpgLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicg
YXMgYSB2YXJpYWJsZSBuYW1lLmApOwpAQCAtNTYsOSArNTYsOSBAQCB0ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2BmdW5jdGlvbiBhKHZhCiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5j
dGlvbiBhKHZcdTAwNjFyKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwogdGVzdFN5bnRh
eEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh2XHV7MDA2MX1yKSB7IH1gLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZh
cmlhYmxlIG5hbWUuYCk7CiAKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEo
e3Zhcn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0
ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRh
eEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dlx1MDA2MXJ9KSB7IH1gLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRh
eCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0
aW9uIGEoe3ZcdXswMDYxfXJ9KSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5g
KTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3Zhcn0pIHsgfWAsIFN0
cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmlu
ZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2BmdW5jdGlvbiBhKHt2XHUwMDYxcn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENh
bm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3Zh
cicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHt2XHV7MDA2MX1y
fSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBk
ZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKIAogdGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZhcn0pIHsgfWAsIFN0cmluZy5yYXdgU3lu
dGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1l
LmApOwogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZcdTAwNjFy
fSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAn
dlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKQEAgLTc2LDkgKzc2LDkgQEAgdGVzdFN5
bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEodgogdGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgKGZ1bmN0aW9uIGEodlx1MDA2MXIpIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmAp
OwogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEodlx1ezAwNjF9cikgeyB9
KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXsw
MDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIAotdGVzdFN5bnRheEVycm9yKFN0cmluZy5y
YXdgKGZ1bmN0aW9uIGEoe3Zhcn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFy
Jy5gKTsKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHt2XHUwMDYxcn0p
IHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRl
Y29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHt2XHV7MDA2MX1yfSkgeyB9KWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4
IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0
aW9uIGEoe3Zhcn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFi
YnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3ZcdTAwNjFyfSkgeyB9KWAsIFN0
cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmlu
ZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AoZnVuY3Rpb24gYSh7dlx1ezAwNjF9cn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3Jk
ICd2YXInLmApOwogCiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7dmFy
OnZhcn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3
b3JkICd2YXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YChmdW5jdGlvbiBhKHt2YXI6dlx1MDA2MXJ9KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhF
cnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFt
ZS5gKTsKQEAgLTg4LDkgKzg4LDkgQEAgdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0
aW9uIGEoWwogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3ZcdTAwNjFy
XSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQg
J3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AoZnVuY3Rpb24gYShbdlx1ezAwNjF9cl0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVy
cm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5h
bWUuYCk7CiAKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dmFyfV0p
IHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRl
Y29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dlx1MDA2MXJ9XSkgeyB9KWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4
IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0
aW9uIGEoW3t2XHV7MDA2MX1yfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFy
Jy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dmFyfV0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3Ry
dWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2XHUwMDYxcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Ig
a2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBh
KFt7dlx1ezAwNjF9cn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVz
ZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsK
IAogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2YXI6dmFyfV0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXIn
IGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5j
dGlvbiBhKFt7dmFyOnZcdTAwNjFyfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBD
YW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwpA
QCAtMTAwLDkgKzEwMCw5IEBAIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBh
KFsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFtbdlx1MDA2MXJdXSkg
eyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3Zc
dTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AoZnVuY3Rpb24gYShbW3ZcdXswMDYxfXJdXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFt
ZS5gKTsKIAotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzog
e3Zhcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZp
YXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Ci10ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dlx1MDA2MXJ9fSkgeyB9
KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25z
dHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzoge3ZcdXswMDYxfXJ9fSkgeyB9KWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24g
c3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdg
KGZ1bmN0aW9uIGEoeyBoZWxsbzoge3Zhcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29y
ZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVs
bG86IHt2XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVz
ZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsK
K3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2XHV7MDA2
MX1yfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlh
dGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwogCiB0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dmFyOnZhcn19KSB7IH0p
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBh
cyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rp
b24gYSh7IGhlbGxvOiB7dmFyOnZcdTAwNjFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVy
cm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1l
LmApOwpAQCAtMTEyLDkgKzExMiw5IEBAIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5j
dGlvbiBhKHsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86
IFt2XHUwMDYxcl19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0
aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhF
cnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IFt2XHV7MDA2MX1yXX0pIHsgfSlg
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2
MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiAKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3
YChmdW5jdGlvbiBhKHsgMDoge3Zhcn0gfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3Jk
ICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyAwOiB7
dlx1MDA2MXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJi
cmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyAwOiB7dlx1ezAwNjF9cn19KSB7
IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNv
bnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2YXJ9IH0pIHsgfSlgLCBTdHJpbmcucmF3YFN5
bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZv
ciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9u
IGEoeyAwOiB7dlx1MDA2MXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3Zhcicu
YCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2XHV7MDA2
MX1yfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlh
dGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwogCiB0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2YXI6dmFyfX0pIHsgfSlgLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEg
dmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBh
KHsgMDoge3Zhcjp2XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4NjE4MCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE1LTA3LTAxICBTYWFtIEJhcmF0aSAgPHNhYW1i
YXJhdGkxQGdtYWlsLmNvbT4KKworICAgICAgICBSZW5hbWUgIkRlY29uc3RydWN0aW9uIiB0byAi
RGVzdHJ1Y3R1cmluZyIgdGhyb3VnaG91dCBKU0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjEwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICoganMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91
bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcy9kZWNvbnN0
cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBqcy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4
dDogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvanMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1z
aG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBqcy9kZXN0cnVjdHVyaW5n
LXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9qcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbC4KKyAg
ICAgICAgKiBqcy9vYmplY3QtbGl0ZXJhbC1zeW50YXgtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGpzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0
aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2RlY29uc3Ry
dWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sOiBSZW1vdmVkLgor
ICAgICAgICAqIGpzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4t
YnktZnVuY3Rpb24tZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi1leHBl
Y3RlZC50eHQuCisgICAgICAgICoganMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMt
b3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5o
dG1sLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBh
cmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBq
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRl
bi1ieS1mdW5jdGlvbi5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9u
LmpzLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJz
LXNob3VsZC1iZS1sb2NhbHMuanM6IFJlbW92ZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5qczoKKyAgICAgICAgKHRlc3REZXN0cnVjdHVyZWRB
cmdzKToKKyAgICAgICAgKHRlc3REZXN0cnVjdHVyZWRBcmdMZW5ndGgpOgorICAgICAgICAodGVz
dERlY29uc3RydWN0QXJncyk6IERlbGV0ZWQuCisgICAgICAgICh0ZXN0RGVjb25zdHJ1Y3RBcmdM
ZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5n
LXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fs
cy5qcy4KKyAgICAgICAgKGRlc2NyaXB0aW9uLnZhbHVlLnN0cmluZ19hcHBlYXJlZF9oZXJlLnJl
YWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIpOgorICAgICAgICAob3ZlcndyaXRlRGVzdHJ1Y3R1cmVk
UGFyYW1ldGVyKToKKyAgICAgICAgKHJlYWRDYXB0dXJlZERlc3RydWN0dXJlZFBhcmFtZXRlcik6
CisgICAgICAgIChvdmVyd3JpdGVDYXB0dXJlZERlc3RydWN0dXJlZFBhcmFtZXRlcik6CisgICAg
ICAgIChkZXNjcmlwdGlvbi52YWx1ZS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5yZWFkRGVjb25zdHJ1
Y3RlZFBhcmFtZXRlcik6IERlbGV0ZWQuCisgICAgICAgIChvdmVyd3JpdGVEZWNvbnN0cnVjdGVk
UGFyYW1ldGVyKTogRGVsZXRlZC4KKyAgICAgICAgKHJlYWRDYXB0dXJlZERlY29uc3RydWN0ZWRQ
YXJhbWV0ZXIpOiBEZWxldGVkLgorICAgICAgICAob3ZlcndyaXRlQ2FwdHVyZWREZWNvbnN0cnVj
dGVkUGFyYW1ldGVyKTogRGVsZXRlZC4KKwogMjAxNS0wNy0wMSAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUE5HIG1hc2sgaW1hZ2VzIGFyZSBsb2FkZWQgd2l0
aCBBY2NlcHQ6aW1hZ2Uvc3ZnK3htbApJbmRleDogTGF5b3V0VGVzdHMvanMvZGVjb25zdHJ1Y3Rp
bmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2Nh
bHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODU2OTEpCisrKyBMYXlvdXRUZXN0cy9qcy9kZWNv
bnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLVRoaXMgdGVzdHMgdG8gZW5zdXJlIHRoYXQgZGRl
Y29uc3RydWN0aW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2UgcmVndWxhciBsb2NhbHMKLQotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgcmVhZERlY29uc3RydWN0ZWRQYXJhbWV0
ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCi1QQVNTIG92ZXJ3cml0ZURlY29uc3RydWN0ZWRQYXJh
bWV0ZXIoWyd1bnVzZWQnXSk7IHZhbHVlOyBpcyAnb3V0ZXInCi1QQVNTIHJlYWRDYXB0dXJlZERl
Y29uc3RydWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCi1QQVNTIG92ZXJ3cml0
ZUNhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgaXMgJ2lubmVybW9z
dCcKLVBBU1MgdmFsdWUgaXMgJ291dGVyJwotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2pzL2RlY29uc3RydWN0aW5n
LXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sCShy
ZXZpc2lvbiAxODU2OTEpCisrKyBMYXlvdXRUZXN0cy9qcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0
ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBA
Ci08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Ci08aHRtbD4K
LTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVjb25zdHJ1
Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3Np
Z25tZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg1NjkxKQorKysgTGF5b3V0VGVzdHMvanMv
ZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NzgsOSArNzgsOSBAQCBQQVNTIChmdW5jdGlvbiAoeydhJzphLCdiJzpifSkgeyByZXR1cm4gCiBQ
QVNTICh7J2EnOmEsJ2InOmJ9PWFuT2JqZWN0KTsgdmFyIHI9YStiOyByIGlzICcxMicKIFBBU1Mg
YStiIGlzICcxMTIyJwogUEFTUyBhK2IgaXMgJzIyMTEnCi1QQVNTIHRlc3REZWNvbnN0cnVjdEFy
Z3MoJzEnLCAnMicpIGlzICcxMicKLVBBU1MgdGVzdERlY29uc3RydWN0QXJnTGVuZ3RoKCcxJywg
JzInKSBpcyAyCi1QQVNTIHRlc3REZWNvbnN0cnVjdEFyZ3MoJzInKSBpcyAnMjMnCitQQVNTIHRl
c3REZXN0cnVjdHVyZWRBcmdzKCcxJywgJzInKSBpcyAnMTInCitQQVNTIHRlc3REZXN0cnVjdHVy
ZWRBcmdMZW5ndGgoJzEnLCAnMicpIGlzIDIKK1BBU1MgdGVzdERlc3RydWN0dXJlZEFyZ3MoJzIn
KSBpcyAnMjMnCiBQQVNTIGEgaXMgMQogUEFTUyBiIGlzIDIKIFBBU1MgYyBpcyAzCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1w
YXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODU2OTEp
CShmcm9tIExheW91dFRlc3RzL2pzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJl
LWxvY2Fscy1leHBlY3RlZC50eHQ6MTg1NjkxKQorKysgTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1
cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVzdHMgdG8gZW5zdXJlIHRoYXQgZGRlY29uc3Ry
dWN0aW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2UgcmVndWxhciBsb2NhbHMKKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVhZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWydp
bm5lciddKSBpcyAnaW5uZXInCitQQVNTIG92ZXJ3cml0ZURlY29uc3RydWN0ZWRQYXJhbWV0ZXIo
Wyd1bnVzZWQnXSk7IHZhbHVlOyBpcyAnb3V0ZXInCitQQVNTIHJlYWRDYXB0dXJlZERlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCitQQVNTIG92ZXJ3cml0ZUNhcHR1
cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgaXMgJ2lubmVybW9zdCcKK1BB
U1MgdmFsdWUgaXMgJ291dGVyJworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctcGFyYW1l
dGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKKysrIExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctcGFy
YW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSwxMiArMSwxMiBAQAotVGhpcyB0ZXN0cyB0byBlbnN1cmUgdGhhdCBkZGVjb25zdHJ1Y3Rpbmcg
cGFyYW1ldGVycyBiZWhhdmUgbGlrZSByZWd1bGFyIGxvY2FscworVGhpcyB0ZXN0cyB0byBlbnN1
cmUgdGhhdCBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2UgcmVndWxhciBsb2Nh
bHMKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgcmVhZERlY29uc3RydWN0
ZWRQYXJhbWV0ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCi1QQVNTIG92ZXJ3cml0ZURlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7IHZhbHVlOyBpcyAnb3V0ZXInCi1QQVNTIHJlYWRD
YXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCi1QQVNT
IG92ZXJ3cml0ZUNhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgaXMg
J2lubmVybW9zdCcKK1BBU1MgcmVhZERlc3RydWN0dXJlZFBhcmFtZXRlcihbJ2lubmVyJ10pIGlz
ICdpbm5lcicKK1BBU1Mgb3ZlcndyaXRlRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFsndW51c2VkJ10p
OyB2YWx1ZTsgaXMgJ291dGVyJworUEFTUyByZWFkQ2FwdHVyZWREZXN0cnVjdHVyZWRQYXJhbWV0
ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCitQQVNTIG92ZXJ3cml0ZUNhcHR1cmVkRGVzdHJ1Y3R1
cmVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyBpcyAnaW5uZXJtb3N0JwogUEFTUyB2YWx1ZSBpcyAn
b3V0ZXInCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKSW5kZXg6IExheW91dFRl
c3RzL2pzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3Vs
ZC1iZS1sb2NhbHMuaHRtbAkocmV2aXNpb24gMTg1NjkxKQkoZnJvbSBMYXlvdXRUZXN0cy9qcy9k
ZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbDoxODU2OTEpCisr
KyBMYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fs
cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNo
b3VsZC1iZS1sb2NhbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hv
dWxkLWJlLWxvY2Fscy5odG1sCSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRUZXN0cy9qcy9kZXN0
cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC00LDcgKzQsNyBAQAogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
ZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3Vs
ZC1iZS1sb2NhbHMuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvanMvb2JqZWN0LWxpdGVyYWwtc3ludGF4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zeW50YXgtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAxODU2OTEpCisrKyBMYXlvdXRUZXN0cy9qcy9vYmplY3QtbGl0ZXJhbC1zeW50YXgtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIFBBU1MgKHtzZXQgYSgpe319
KSB0aHJldyBleGNlcHRpb24gU3ludGEKIFBBU1MgKHtiOjEsIHNldCBhKCl7fX0pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKScuIHNldHRlciBmdW5jdGlv
bnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIuLgogUEFTUyAoe3NldCBhKCl7fX0pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKScuIHNldHRlciBmdW5jdGlv
bnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIuLgogUEFTUyAoe3NldCBhKHh7fX0pIHRocmV3IGV4
Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAneycuIEV4cGVjdGVkIGEgJykn
IGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9uLi4KLVBBU1MgKHtzZXQgYSh7fX0pIHRocmV3
IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnfScuIFRoZXJlIG11c3Qg
YmUgYXQgbGVhc3Qgb25lIGJvdW5kIHByb3BlcnR5IGluIGFuIG9iamVjdCBkZWNvbnN0cnVjdGlv
biBwYXR0ZXJuLi4KK1BBU1MgKHtzZXQgYSh7fX0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnfScuIFRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIGJvdW5k
IHByb3BlcnR5IGluIGFuIG9iamVjdCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uLgogUEFTUyAoe3Nl
dCBhKCh4KSl7fX0pIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnKCcuIEV4cGVjdGVkIGEgcGFyYW1ldGVyIHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVy
IGxpc3QuLgogUEFTUyAoe3NldCBhKHgsIHkpe319KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUg
cGFyYW1ldGVyLi4KIFBBU1MgKHtzZXQgYShbeF0sIHkpe319KSB0aHJldyBleGNlcHRpb24gU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2
ZSBvbmUgcGFyYW1ldGVyLi4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1
Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRl
cnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NTY5MSkK
KysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVy
cmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCAr
MCwwIEBACi1KU1JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5
LWZ1bmN0aW9uCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01Q
TEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFt
ZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1
bmN0aW9uLmh0bWwJKHJldmlzaW9uIDE4NTY5MSkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
ZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVu
LWJ5LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnkt
ZnVuY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24tZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAxODU2OTEpCShmcm9tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVj
b25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4
dDoxODU2OTEpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1l
dGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVy
cmlkZGVuLWJ5LWZ1bmN0aW9uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNT
IG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJp
bmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1v
dmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQorKysgTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1i
eS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1K
U1JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9u
CitKU1JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rp
b24KIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9y
ZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBh
cmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCShyZXZpc2lvbiAxODU2OTEpCShm
cm9tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVy
cmlkZGVuLWJ5LWZ1bmN0aW9uLmh0bWw6MTg1NjkxKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRl
bi1ieS1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5
LWZ1bmN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0
cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCSh3b3JraW5n
IGNvcHkpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVy
cy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3
IEBACiA8L2hlYWQ+CiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVz
cy1wcmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWNvbnN0cnVj
dGluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRl
bi1ieS1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLW92ZXJyaWRk
ZW4tYnktZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0
aW9uLmpzCShyZXZpc2lvbiAxODU2OTEpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3Njcmlw
dC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24u
anMJKHdvcmtpbmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotZnVuY3Rpb24gZigpIHsgcmV0dXJu
IDQwOyB9Ci1mdW5jdGlvbiB0ZXN0KHthcmd9KSB7Ci0gICAgZnVuY3Rpb24gYXJnKCkgeyByZXR1
cm4gNDE7IH0KLSAgICByZXR1cm4gYXJnOwotfQotbm9JbmxpbmUodGVzdCk7Ci0KLWZvciAodmFy
IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7Ci0gICAgaWYgKHRlc3Qoe2FyZzogZn0pKCkgIT09IDQx
KQotICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIpOwotfQpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92
ZXJyaWRkZW4tYnktZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnkt
ZnVuY3Rpb24uanMJKHJldmlzaW9uIDE4NTY5MSkJKGZyb20gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9zY3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1
bmN0aW9uLmpzOjE4NTY5MSkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3Rz
L2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGYoKSB7IHJldHVybiA0MDsgfQor
ZnVuY3Rpb24gdGVzdCh7YXJnfSkgeworICAgIGZ1bmN0aW9uIGFyZygpIHsgcmV0dXJuIDQxOyB9
CisgICAgcmV0dXJuIGFyZzsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsg
aSA8IDEwMDA7IGkrKykgeworICAgIGlmICh0ZXN0KHthcmc6IGZ9KSgpICE9PSA0MSkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0
aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcwkocmV2aXNpb24gMTg1NjkxKQorKysg
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hv
dWxkLWJlLWxvY2Fscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi1kZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0byBlbnN1cmUgdGhhdCBkZGVjb25zdHJ1Y3RpbmcgcGFyYW1ldGVy
cyBiZWhhdmUgbGlrZSByZWd1bGFyIGxvY2FscyIpCi0KLXZhciB2YWx1ZT0ib3V0ZXIiCi1mdW5j
dGlvbiByZWFkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7Ci0gICAgcmV0dXJuIHZh
bHVlOwotfQotCi1mdW5jdGlvbiBvdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1
ZV0pIHsKLQl2YWx1ZSA9ICJpbm5lciIKLX0KLQotZnVuY3Rpb24gcmVhZENhcHR1cmVkRGVjb25z
dHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7Ci0JcmV0dXJuIChmdW5jdGlvbiAoKSB7Ci0JICAg
IHJldHVybiB2YWx1ZTsKLQl9KSgpCi19Ci0KLWZ1bmN0aW9uIG92ZXJ3cml0ZUNhcHR1cmVkRGVj
b25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7Ci0JKGZ1bmN0aW9uICgpIHsKLQkgICAgdmFs
dWUgPSAiaW5uZXJtb3N0IjsKLQl9KSgpCi0JcmV0dXJuIHZhbHVlCi19Ci0KLXNob3VsZEJlKCJy
ZWFkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pIiwgIidpbm5lciciKQotb3Zlcndy
aXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pCi0KLXNob3VsZEJlKCJvdmVyd3Jp
dGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyB2YWx1ZTsiLCAiJ291dGVyJyIp
Ci0KLXNob3VsZEJlKCJyZWFkQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXIn
XSkiLCAiJ2lubmVyJyIpCi1vdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXIn
XSkKLQotc2hvdWxkQmUoIm92ZXJ3cml0ZUNhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihb
J3VudXNlZCddKTsiLCAiJ2lubmVybW9zdCciKQotc2hvdWxkQmUoInZhbHVlIiwgIidvdXRlcici
KQotCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3Np
Z25tZW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0
cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMJKHJldmlzaW9uIDE4NTY5MSkKKysrIExheW91dFRlc3Rz
L2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDIwICszNSwyMCBAQCB2YXIgW2EsYl0gPSBbJzExJywnMjInXQogc2hvdWxkQmUo
ImErYiIsICInMTEyMiciKQogdmFyIFtiLGFdID0gW2EsYl07CiBzaG91bGRCZSgiYStiIiwgIicy
MjExJyIpCi1mdW5jdGlvbiB0ZXN0RGVjb25zdHJ1Y3RBcmdzKCkgeworZnVuY3Rpb24gdGVzdERl
c3RydWN0dXJlZEFyZ3MoKSB7CiAgICAgdmFyIFthLGJdID0gYXJndW1lbnRzOwogICAgIHJldHVy
biBhK2I7CiB9CiAKLWZ1bmN0aW9uIHRlc3REZWNvbnN0cnVjdEFyZ0xlbmd0aCgpIHsKK2Z1bmN0
aW9uIHRlc3REZXN0cnVjdHVyZWRBcmdMZW5ndGgoKSB7CiAgICAgdmFyIHtsZW5ndGh9ID0gYXJn
dW1lbnRzOwogICAgIHJldHVybiBsZW5ndGg7CiB9Ci1zaG91bGRCZSgidGVzdERlY29uc3RydWN0
QXJncygnMScsICcyJykiLCAiJzEyJyIpOwotc2hvdWxkQmUoInRlc3REZWNvbnN0cnVjdEFyZ0xl
bmd0aCgnMScsICcyJykiLCAiMiIpOworc2hvdWxkQmUoInRlc3REZXN0cnVjdHVyZWRBcmdzKCcx
JywgJzInKSIsICInMTInIik7CitzaG91bGRCZSgidGVzdERlc3RydWN0dXJlZEFyZ0xlbmd0aCgn
MScsICcyJykiLCAiMiIpOwogdmFyIHRleHQgPSAnMyc7CiBPYmplY3QucHJvdG90eXBlLl9fZGVm
aW5lR2V0dGVyX18oMSwgZnVuY3Rpb24oKXsgdmFyIHIgPSB0ZXh0OyB0ZXh0ID0gImZhaWwiOyBy
ZXR1cm4gcjsgfSkKLXNob3VsZEJlKCJ0ZXN0RGVjb25zdHJ1Y3RBcmdzKCcyJykiLCAiJzIzJyIp
Oworc2hvdWxkQmUoInRlc3REZXN0cnVjdHVyZWRBcmdzKCcyJykiLCAiJzIzJyIpOwogCiB2YXIg
W2EsYl0gPSBbMSwyXSwgW2MsZF0gPSBbMyw0XQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctcGFy
YW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzCShyZXZpc2lvbiAxODU2OTEpCShmcm9tIExheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1i
ZS1sb2NhbHMuanM6MTg1NjkxKQorKysgTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rlc3Ry
dWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzUgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGRk
ZWNvbnN0cnVjdGluZyBwYXJhbWV0ZXJzIGJlaGF2ZSBsaWtlIHJlZ3VsYXIgbG9jYWxzIikKKwor
dmFyIHZhbHVlPSJvdXRlciIKK2Z1bmN0aW9uIHJlYWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2
YWx1ZV0pIHsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK2Z1bmN0aW9uIG92ZXJ3cml0ZURlY29u
c3RydWN0ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgeworCXZhbHVlID0gImlubmVyIgorfQorCitmdW5j
dGlvbiByZWFkQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKKwlyZXR1
cm4gKGZ1bmN0aW9uICgpIHsKKwkgICAgcmV0dXJuIHZhbHVlOworCX0pKCkKK30KKworZnVuY3Rp
b24gb3ZlcndyaXRlQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKKwko
ZnVuY3Rpb24gKCkgeworCSAgICB2YWx1ZSA9ICJpbm5lcm1vc3QiOworCX0pKCkKKwlyZXR1cm4g
dmFsdWUKK30KKworc2hvdWxkQmUoInJlYWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXIn
XSkiLCAiJ2lubmVyJyIpCitvdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXIn
XSkKKworc2hvdWxkQmUoIm92ZXJ3cml0ZURlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWyd1bnVzZWQn
XSk7IHZhbHVlOyIsICInb3V0ZXInIikKKworc2hvdWxkQmUoInJlYWRDYXB0dXJlZERlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKSIsICInaW5uZXInIikKK292ZXJ3cml0ZURlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKQorCitzaG91bGRCZSgib3ZlcndyaXRlQ2FwdHVyZWRE
ZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyIsICInaW5uZXJtb3N0JyIpCitzaG91
bGRCZSgidmFsdWUiLCAiJ291dGVyJyIpCisKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0
ZXJzLXNob3VsZC1iZS1sb2NhbHMuanMJKHdvcmtpbmcgY29weSkKKysrIExheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5q
cwkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMSwzNSBAQAotZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdG8gZW5zdXJlIHRoYXQgZGRlY29uc3RydWN0aW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2Ug
cmVndWxhciBsb2NhbHMiKQorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdG8gZW5zdXJlIHRoYXQg
ZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzIGJlaGF2ZSBsaWtlIHJlZ3VsYXIgbG9jYWxzIikKIAog
dmFyIHZhbHVlPSJvdXRlciIKLWZ1bmN0aW9uIHJlYWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2
YWx1ZV0pIHsKK2Z1bmN0aW9uIHJlYWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgewog
ICAgIHJldHVybiB2YWx1ZTsKIH0KIAotZnVuY3Rpb24gb3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBh
cmFtZXRlcihbdmFsdWVdKSB7CitmdW5jdGlvbiBvdmVyd3JpdGVEZXN0cnVjdHVyZWRQYXJhbWV0
ZXIoW3ZhbHVlXSkgewogCXZhbHVlID0gImlubmVyIgogfQogCi1mdW5jdGlvbiByZWFkQ2FwdHVy
ZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKK2Z1bmN0aW9uIHJlYWRDYXB0dXJl
ZERlc3RydWN0dXJlZFBhcmFtZXRlcihbdmFsdWVdKSB7CiAJcmV0dXJuIChmdW5jdGlvbiAoKSB7
CiAJICAgIHJldHVybiB2YWx1ZTsKIAl9KSgpCiB9CiAKLWZ1bmN0aW9uIG92ZXJ3cml0ZUNhcHR1
cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7CitmdW5jdGlvbiBvdmVyd3JpdGVD
YXB0dXJlZERlc3RydWN0dXJlZFBhcmFtZXRlcihbdmFsdWVdKSB7CiAJKGZ1bmN0aW9uICgpIHsK
IAkgICAgdmFsdWUgPSAiaW5uZXJtb3N0IjsKIAl9KSgpCiAJcmV0dXJuIHZhbHVlCiB9CiAKLXNo
b3VsZEJlKCJyZWFkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pIiwgIidpbm5lcici
KQotb3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pCitzaG91bGRCZSgi
cmVhZERlc3RydWN0dXJlZFBhcmFtZXRlcihbJ2lubmVyJ10pIiwgIidpbm5lciciKQorb3Zlcndy
aXRlRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFsnaW5uZXInXSkKIAotc2hvdWxkQmUoIm92ZXJ3cml0
ZURlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7IHZhbHVlOyIsICInb3V0ZXInIikK
K3Nob3VsZEJlKCJvdmVyd3JpdGVEZXN0cnVjdHVyZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7IHZh
bHVlOyIsICInb3V0ZXInIikKIAotc2hvdWxkQmUoInJlYWRDYXB0dXJlZERlY29uc3RydWN0ZWRQ
YXJhbWV0ZXIoWydpbm5lciddKSIsICInaW5uZXInIikKLW92ZXJ3cml0ZURlY29uc3RydWN0ZWRQ
YXJhbWV0ZXIoWydpbm5lciddKQorc2hvdWxkQmUoInJlYWRDYXB0dXJlZERlc3RydWN0dXJlZFBh
cmFtZXRlcihbJ2lubmVyJ10pIiwgIidpbm5lciciKQorb3ZlcndyaXRlRGVzdHJ1Y3R1cmVkUGFy
YW1ldGVyKFsnaW5uZXInXSkKIAotc2hvdWxkQmUoIm92ZXJ3cml0ZUNhcHR1cmVkRGVjb25zdHJ1
Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsiLCAiJ2lubmVybW9zdCciKQorc2hvdWxkQmUoIm92
ZXJ3cml0ZUNhcHR1cmVkRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyIsICInaW5u
ZXJtb3N0JyIpCiBzaG91bGRCZSgidmFsdWUiLCAiJ291dGVyJyIpCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255965</attachid>
            <date>2015-07-01 16:19:54 -0700</date>
            <delta_ts>2015-07-02 14:05:37 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>94505</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MTk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAxNS0wNy0wMSAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmVuYW1lICJEZWNvbnN0cnVjdGlvbiIgdG8gIkRlc3RydWN0dXJpbmciIHRocm91Z2hv
dXQgSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDYxMDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJ
dCBpcyBnb29kIHRvIHVzZSB0aGUgc2FtZSBuYW1pbmcgY29udmVudGlvbnMgYXMgdGhlIEVTNiAK
KyAgICAgICAgc3BlYyBiZWNhdXNlIGl0IGlzIHRoZSBkZSBmYWN0byB3YXkgb2Ygc3BlYWtpbmcg
YWJvdXQgdGhlc2UgCisgICAgICAgIGxhbmd1YWdlIGZlYXR1cmVzLiBUaGlzIGFsc28gaGFzIHRo
ZSBiZW5lZml0IG9mIGltcHJvdmluZyBKU0MncworICAgICAgICBoYWNrYWJpbGl0eSBiZWNhdXNl
IGl0IGltcHJvdmVzIGNvZGUgcmVhZGFiaWxpdHkgZm9yIG5ld2NvbWVycyAKKyAgICAgICAgdG8g
SlNDIG9yIG5ld2NvbWVycyB0byB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgYmFzZS4KKworICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojppbml0aWFsaXplTmV4dFBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjp2aXNpYmxlTmFtZUZvclBhcmFtZXRlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdp
c3RlckZvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OkZvckluTm9kZTo6dHJ5R2V0Qm91bmRMb2NhbCk6CisgICAgICAgIChKU0M6OkZv
ckluTm9kZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y29sbGVjdEJvdW5k
SWRlbnRpZmllcnMpOgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGlvblBh
dHRlcm5Ob2RlOjp+RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSk6IERlbGV0ZWQuCisgICAgICAg
ICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
RWxlbWVudExpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlTGlzdCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZvck9mTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzQmluZGluZ05v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jlc29sdmUpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFycmF5UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmFwcGVuZEFycmF5UGF0dGVybkVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6YXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlT2JqZWN0UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVu
ZE9iamVjdFBhdHRlcm5FbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURl
Y29uc3RydWN0aW5nQXNzaWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAg
IChKU0M6OlBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUpOgorICAgICAgICAoSlNDOjpGb3JP
Zk5vZGU6OkZvck9mTm9kZSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZTo6RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJu
Tm9kZTo6QXJyYXlQYXR0ZXJuTm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpPYmplY3RQYXR0ZXJu
Tm9kZSk6CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5n
QXNzaWdubWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSk6CisgICAgICAgIChK
U0M6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGU6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGUp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlOjpE
ZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjpp
c1Jlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQnJhY2tldEFj
Y2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0RvdEFjY2Vzc29y
Tm9kZSk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0Rlc3RydWN0dXJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzRnVuY0V4cHJOb2RlKToKKyAgICAg
ICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQ29tbWFOb2RlKToKKyAgICAgICAgKEpTQzo6RXhw
cmVzc2lvbk5vZGU6OmlzU2ltcGxlQXJyYXkpOgorICAgICAgICAoSlNDOjpQYXJhbWV0ZXJOb2Rl
OjpwYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6bmV4dFBhcmFtKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjpzaXplKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25QYXJhbWV0ZXJzOjphdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6
cGF0dGVybnMpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6OmlzQmlu
ZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6OmVtaXRE
aXJlY3RCaW5kaW5nKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YXBwZW5kSW5k
ZXgpOgorICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YXBwZW5kRW50cnkpOgorICAg
ICAgICAoSlNDOjpCaW5kaW5nTm9kZTo6Ym91bmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRl
c3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6YmluZGluZ3MpOgorICAgICAgICAoSlNDOjpFeHBy
ZXNzaW9uTm9kZTo6aXNEZWNvbnN0cnVjdGlvbk5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlOjppc0JpbmRpbmdOb2RlKTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcp
OiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlOjpi
aW5kaW5ncyk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW9uKToKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4
cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVj
dHVyaW5nUGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURl
ZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lv
bik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29u
c3RydWN0aW9uUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURlZmF1bHRWYWx1ZUZvckRlY29uc3RydWN0aW9uUGF0dGVybik6IERlbGV0ZWQu
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjppc0V2YWxOb2RlKToK
KyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVQcm9wZXJ0eUxpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVFbGVtZW50TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUZvcm1hbFBhcmFtZXRlckxpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVDbGF1c2UpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGF1c2VMaXN0
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL3Jlc2VydmVkLXdvcmQtd2l0aC1lc2NhcGUuanM6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL3Jlc3QtZWxlbWVudHMuanM6CisKIDIwMTUtMDctMDEgIERlYW4gSmFj
a3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgdGhlIGV4cGVyaW1lbnRh
bCBXZWJHTDIgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAx
ODYxMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOCArNzEsOCBAQCBQYXJzZXJFcnJvciBC
eXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoCiAgICAgaWYgKG1fbmVlZFRvSW5pdGlhbGl6ZUFy
Z3VtZW50cykKICAgICAgICAgaW5pdGlhbGl6ZVZhcmlhYmxlKHZhcmlhYmxlKHByb3BlcnR5TmFt
ZXMoKS5hcmd1bWVudHMpLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKTsKIAotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9kZWNvbnN0cnVjdGVkUGFyYW1ldGVycy5zaXplKCk7IGkrKykgewotICAg
ICAgICBhdXRvJiBlbnRyeSA9IG1fZGVjb25zdHJ1Y3RlZFBhcmFtZXRlcnNbaV07CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2Rlc3RydWN0dXJpbmdQYXJhbWV0ZXJzLnNpemUoKTsgaSsr
KSB7CisgICAgICAgIGF1dG8mIGVudHJ5ID0gbV9kZXN0cnVjdHVyaW5nUGFyYW1ldGVyc1tpXTsK
ICAgICAgICAgZW50cnkuc2Vjb25kLT5iaW5kVmFsdWUoKnRoaXMsIGVudHJ5LmZpcnN0LmdldCgp
KTsKICAgICB9CiAKQEAgLTI1NywxNCArMjU3LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRl
Y29kZUdlbmVyYXRvcihWTSYKICAgICB9CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb2Rl
IGJsb2NrIGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0
aGF0IHBhcmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlY29uc3RydWN0aW9uIGFyZSBub3RlZC4K
KyAgICAvLyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5vdGVkLgogICAgIG1fcGFyYW1ldGVy
cy5ncm93KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlz
IgogICAgIG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCkt
PmluZGV4KCkpOyAvLyB0aGlzCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChp
KTsKICAgICAgICAgUmVnaXN0ZXJJRCogcmVnID0gaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsK
ICAgICAgICAgaWYgKCFwYXR0ZXJuLT5pc0JpbmRpbmdOb2RlKCkpCi0gICAgICAgICAgICBtX2Rl
Y29uc3RydWN0ZWRQYXJhbWV0ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihyZWcsIHBhdHRlcm4p
KTsKKyAgICAgICAgICAgIG1fZGVzdHJ1Y3R1cmluZ1BhcmFtZXRlcnMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKHJlZywgcGF0dGVybikpOwogICAgIH0KICAgICAKICAgICAvLyBGaWd1cmUgb3V0IHNv
bWUgaW50ZXJlc3RpbmcgZmFjdHMgYWJvdXQgb3VyIGFyZ3VtZW50cy4KQEAgLTQxOSw3ICs0MTks
NyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLy8gQnV0
IHNvbWUgYXJndW1lbnRzIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkIGJ5IGRlZmF1bHQsIHNpbmNl
IGlmIHRoZXkgYXJlbid0IGNhcHR1cmVkIGFuZCB3ZQogICAgIC8vIGRvbid0IGhhdmUgImFyZ3Vt
ZW50cyIgdGhlbiB3ZSBqdXN0IHBvaW50IHRoZSBzeW1ib2wgdGFibGUgYXQgdGhlIHN0YWNrIHNs
b3Qgb2YgdGhvc2UKICAgICAvLyBhcmd1bWVudHMuIFdlIGVuZCB1cCBpbml0aWFsaXppbmcgdGhl
IHJlc3Qgb2YgdGhlIGFyZ3VtZW50cyB0aGF0IGhhdmUgYW4gdW5jb21wbGljYXRlZAotICAgIC8v
IGJpbmRpbmcgKGkuZS4gZG9uJ3QgaW52b2x2ZSBkZWNvbnN0cnVjdGlvbikgYWJvdmUgd2hlbiBm
aWd1cmluZyBvdXQgaG93IHRvIGxheSB0aGVtIG91dCwKKyAgICAvLyBiaW5kaW5nIChpLmUuIGRv
bid0IGludm9sdmUgZGVzdHJ1Y3R1cmluZykgYWJvdmUgd2hlbiBmaWd1cmluZyBvdXQgaG93IHRv
IGxheSB0aGVtIG91dCwKICAgICAvLyBiZWNhdXNlIHRoYXQncyBqdXN0IHRoZSBzaW1wbGVzdCB0
aGluZy4gVGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgaW5pdGlhbGl6ZSB0aGVtLCB3ZSBoYXZlIHRv
CiAgICAgLy8gd2F0Y2ggb3V0IGZvciB0aGUgdGhpbmdzIHRoYXQgb3ZlcnJpZGUgYXJndW1lbnRz
IChuYW1lbHksIGZ1bmN0aW9ucykuCiAgICAgLy8KQEAgLTQ1NSwxMCArNDU1LDEwIEBAIEJ5dGVj
b2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAvLyBUaGlzIGlzIG91ciBm
aW5hbCBhY3Qgb2Ygd2VpcmRuZXNzLiAiYXJndW1lbnRzIiBpcyBvdmVycmlkZGVuIGJ5IGV2ZXJ5
dGhpbmcgZXhjZXB0IHRoZQogICAgIC8vIGNhbGxlZS4gV2UgYWRkIGl0IHRvIHRoZSBzeW1ib2wg
dGFibGUgaWYgaXQncyBub3QgYWxyZWFkeSB0aGVyZSBhbmQgaXQncyBub3QgYW4gYXJndW1lbnQu
CiAgICAgaWYgKG5lZWRzQXJndW1lbnRzKSB7Ci0gICAgICAgIC8vIElmICJhcmd1bWVudHMiIGlz
IG92ZXJyaWRkZW4gYnkgYSBmdW5jdGlvbiBvciBkZWNvbnN0cnVjdGVkIHBhcmFtZXRlciBuYW1l
LCB0aGVuIGl0J3MKKyAgICAgICAgLy8gSWYgImFyZ3VtZW50cyIgaXMgb3ZlcnJpZGRlbiBieSBh
IGZ1bmN0aW9uIG9yIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyIG5hbWUsIHRoZW4gaXQncwogICAg
ICAgICAvLyBPSyBmb3IgdXMgdG8gY2FsbCBjcmVhdGVWYXJpYWJsZSgpIGJlY2F1c2UgaXQgd29u
J3QgY2hhbmdlIGFueXRoaW5nLiBJdCdzIGFsc28gT0sgZm9yCiAgICAgICAgIC8vIHVzIHRvIHRo
ZW0gdGVsbCBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKSB0byB3cml0ZSB0byBpdCBiZWNh
dXNlIGl0IHdpbGwgZG8gc28KLSAgICAgICAgLy8gYmVmb3JlIGl0IGluaXRpYWxpemVzIGZ1bmN0
aW9ucyBhbmQgZGVjb25zdHJ1Y3RlZCBwYXJhbWV0ZXJzLiBCdXQgaWYgImFyZ3VtZW50cyIgaXMK
KyAgICAgICAgLy8gYmVmb3JlIGl0IGluaXRpYWxpemVzIGZ1bmN0aW9ucyBhbmQgZGVzdHJ1Y3R1
cmluZyBwYXJhbWV0ZXJzLiBCdXQgaWYgImFyZ3VtZW50cyIgaXMKICAgICAgICAgLy8gb3ZlcnJp
ZGRlbiBieSBhICJzaW1wbGUiIGZ1bmN0aW9uIHBhcmFtZXRlciwgdGhlbiB3ZSBoYXZlIHRvIGJh
aWw6IGNyZWF0ZVZhcmlhYmxlKCkKICAgICAgICAgLy8gd291bGQgYXNzZXJ0IGFuZCBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKSB3b3VsZCB3cml0ZSB0aGUgImFyZ3VtZW50cyIgYWZ0ZXIg
dGhlCiAgICAgICAgIC8vIGFyZ3VtZW50IHZhbHVlIGhhZCBhbHJlYWR5IGJlZW4gcHJvcGVybHkg
aW5pdGlhbGl6ZWQuCkBAIC01NDUsNyArNTQ1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmluaXRpYWxpegogICAgIHJldHVybiAmcGFyYW1ldGVyOwogfQogCi1VbmlxdWVkU3Ry
aW5nSW1wbCogQnl0ZWNvZGVHZW5lcmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlY29u
c3RydWN0aW9uUGF0dGVybk5vZGUqIHBhdHRlcm4pCitVbmlxdWVkU3RyaW5nSW1wbCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZSogcGF0dGVybikKIHsKICAgICBpZiAocGF0dGVybi0+aXNCaW5kaW5nTm9kZSgpKSB7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmluZGlu
Z05vZGUqPihwYXR0ZXJuKS0+Ym91bmRQcm9wZXJ0eSgpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2
aXNpb24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTMsNyArNjUzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIHN0YWNrIGZvcm0gdGhlIHBh
cmFtZXRlcjsgZG9lcyBub3RoaW5nIGZvciB0aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICBSZWdp
c3RlcklEKiBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOwotICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdmlzaWJsZU5hbWVGb3JQYXJhbWV0ZXIoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSop
OworICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdmlzaWJsZU5hbWVGb3JQYXJhbWV0ZXIoRGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKik7CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlcklEJiBy
ZWdpc3RlckZvcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgICAgICB7CkBAIC03NTYsNyArNzU2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRj
aENvbnRleHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRl
eHQ+PiBtX2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90
cnlDb250ZXh0U3RhY2s7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFJlZ2lzdGVy
SUQ+LCBjb25zdCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKj4+IG1fZGVjb25zdHJ1Y3RlZFBh
cmFtZXRlcnM7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFJlZ2lzdGVySUQ+LCBj
b25zdCBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqPj4gbV9kZXN0cnVjdHVyaW5nUGFyYW1ldGVy
czsKICAgICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxG
dW5jdGlvblZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3Rv
cjxzdGQ6OnBhaXI8RnVuY3Rpb25Cb2R5Tm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9m
dW5jdGlvbnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJn
dW1lbnRzIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4NjEwNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjI1Niw4ICsyMjU2LDggQEAgUmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjp0cnlHZXRC
b3VuZExvY2FsKAogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KS5sb2Nh
bCgpOwogICAgIH0KIAotICAgIGlmIChtX2xleHByLT5pc0RlY29uc3RydWN0aW9uTm9kZSgpKSB7
Ci0gICAgICAgIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0
aWNfY2FzdDxEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKj4obV9sZXhwcik7CisgICAgaWYg
KG1fbGV4cHItPmlzRGVzdHJ1Y3R1cmluZ05vZGUoKSkgeworICAgICAgICBEZXN0cnVjdHVyaW5n
QXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZXN0cnVjdHVyaW5nQXNz
aWdubWVudE5vZGUqPihtX2xleHByKTsKICAgICAgICAgYXV0byBiaW5kaW5nID0gYXNzaWduTm9k
ZS0+YmluZGluZ3MoKTsKICAgICAgICAgaWYgKCFiaW5kaW5nLT5pc0JpbmRpbmdOb2RlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzMTgsOCArMjMxOCw4IEBAIHZvaWQgRm9y
SW5Ob2RlOjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUcKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGlmIChtX2xleHByLT5pc0RlY29uc3RydWN0aW9uTm9kZSgpKSB7Ci0gICAgICAgIERl
Y29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZWNv
bnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKj4obV9sZXhwcik7CisgICAgaWYgKG1fbGV4cHItPmlz
RGVzdHJ1Y3R1cmluZ05vZGUoKSkgeworICAgICAgICBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5v
ZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUq
PihtX2xleHByKTsKICAgICAgICAgYXV0byBiaW5kaW5nID0gYXNzaWduTm9kZS0+YmluZGluZ3Mo
KTsKICAgICAgICAgaWYgKCFiaW5kaW5nLT5pc0JpbmRpbmdOb2RlKCkpIHsKICAgICAgICAgICAg
IGFzc2lnbk5vZGUtPmJpbmRpbmdzKCktPmJpbmRWYWx1ZShnZW5lcmF0b3IsIHByb3BlcnR5TmFt
ZSk7CkBAIC0yNTM2LDggKzI1MzYsOCBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHBy
ZXNzaW9uSW5mbyhhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5k
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJU
KG1fbGV4cHItPmlzRGVjb25zdHJ1Y3Rpb25Ob2RlKCkpOwotICAgICAgICAgICAgRGVjb25zdHJ1
Y3RpbmdBc3NpZ25tZW50Tm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PERlY29uc3RydWN0
aW5nQXNzaWdubWVudE5vZGUqPihtX2xleHByKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2xleHBy
LT5pc0Rlc3RydWN0dXJpbmdOb2RlKCkpOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2ln
bm1lbnROb2RlKiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1l
bnROb2RlKj4obV9sZXhwcik7CiAgICAgICAgICAgICBhc3NpZ25Ob2RlLT5iaW5kaW5ncygpLT5i
aW5kVmFsdWUoZ2VuZXJhdG9yLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlQ29udHJvbEZsb3cobV9zdGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCkpOwpAQCAt
MzEwNSw4ICszMTA1LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2Rl
KAogfQogI2VuZGlmCiAgICAgCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVj
b25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLQotUmVnaXN0ZXJJRCog
RGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0K
K1JlZ2lzdGVySUQqIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAo
UmVnaXN0ZXJJRCogcmVzdWx0ID0gbV9iaW5kaW5ncy0+ZW1pdERpcmVjdEJpbmRpbmcoZ2VuZXJh
dG9yLCBkc3QsIG1faW5pdGlhbGl6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzEx
Niw3ICszMTE2LDcgQEAgUmVnaXN0ZXJJRCogRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZQog
ICAgIHJldHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGluaXRp
YWxpemVyLmdldCgpKTsKIH0KIAotRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6fkRlY29uc3Ry
dWN0aW9uUGF0dGVybk5vZGUoKQorRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1
cmluZ1BhdHRlcm5Ob2RlKCkKIHsKIH0KIApAQCAtMzI3Nyw3ICszMjc3LDcgQEAgdm9pZCBBcnJh
eVBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpj
b2xsZWN0Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXpl
KCk7IGkrKykgewotICAgICAgICBpZiAoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogbm9kZSA9
IG1fdGFyZ2V0UGF0dGVybnNbaV0ucGF0dGVybi5nZXQoKSkKKyAgICAgICAgaWYgKERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSogbm9kZSA9IG1fdGFyZ2V0UGF0dGVybnNbaV0ucGF0dGVybi5nZXQo
KSkKICAgICAgICAgICAgIG5vZGUtPmNvbGxlY3RCb3VuZElkZW50aWZpZXJzKGlkZW50aWZpZXJz
KTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxk
ZXIuaAkocmV2aXNpb24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBDYXNlQ2xhdXNlTm9kZSogQ2xhdXNlOwogICAgIHR5cGVkZWYgQ29uc3REZWNs
Tm9kZSogQ29uc3REZWNsTGlzdDsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9k
ZSosIEJpbmFyeU9wSW5mbz4gQmluYXJ5T3BlcmFuZDsKLSAgICB0eXBlZGVmIFJlZlB0cjxEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBEZWNvbnN0cnVjdGlvblBhdHRlcm47CisgICAgdHlwZWRl
ZiBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0dGVybjsK
ICAgICB0eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47CiAgICAg
dHlwZWRlZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47CiAgICAgdHlw
ZWRlZiBSZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOwpAQCAtNDIwLDggKzQyMCw4
IEBAIHB1YmxpYzoKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNp
b25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBF
bGVtZW50Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxl
bWVudExpc3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsZW1zLCBl
bGlzaW9ucywgZXhwcik7IH0KIAotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFt
ZXRlckxpc3QoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRlcm4pIHsgcmV0dXJuIG5ldyAobV9w
YXJzZXJBcmVuYSkgUGFyYW1ldGVyTm9kZShwYXR0ZXJuKTsgfQotICAgIFBhcmFtZXRlck5vZGUq
IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoUGFyYW1ldGVyTm9kZSogbGlzdCwgRGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuIHBhdHRlcm4pIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUGFyYW1l
dGVyTm9kZShsaXN0LCBwYXR0ZXJuKTsgfQorICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3
IChtX3BhcnNlckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9CisgICAgUGFyYW1ldGVy
Tm9kZSogY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBsaXN0LCBEZXN0
cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBh
cmFtZXRlck5vZGUobGlzdCwgcGF0dGVybik7IH0KIAogICAgIENhc2VDbGF1c2VOb2RlKiBjcmVh
dGVDbGF1c2UoRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEpTQzo6U291cmNlRWxlbWVudHMqIHN0YXRl
bWVudHMpIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FzZUNsYXVzZU5vZGUoZXhwciwg
c3RhdGVtZW50cyk7IH0KICAgICBDbGF1c2VMaXN0Tm9kZSogY3JlYXRlQ2xhdXNlTGlzdChDYXNl
Q2xhdXNlTm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVzZUxp
c3ROb2RlKGNsYXVzZSk7IH0KQEAgLTQ4Niw5ICs0ODYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvcklu
TG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlY29uc3Ry
dWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0
YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJu
Tm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQp
CiAgICAgewotICAgICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZWNvbnN0
cnVjdGluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKKyAgICAg
ICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1l
bnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0
ZUZvckluTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURp
dm90LCBlRW5kLCBzdGFydCwgZW5kKTsKICAgICB9CiAgICAgCkBAIC01MDAsMTMgKzUwMCwxMyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBQYXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Np
b25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRy
PERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5k
LCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBhdXRvIGxleHByID0gbmV3ICht
X3BhcnNlckFyZW5hKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0
ZXJuLmdldCgpLCAwKTsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkg
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsK
ICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvck9mTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0
YXRlbWVudHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kKTsKICAgICB9CiAKLSAg
ICBib29sIGlzQmluZGluZ05vZGUoY29uc3QgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuJiBwYXR0ZXJu
KQorICAgIGJvb2wgaXNCaW5kaW5nTm9kZShjb25zdCBEZXN0cnVjdHVyaW5nUGF0dGVybiYgcGF0
dGVybikKICAgICB7CiAgICAgICAgIHJldHVybiBwYXR0ZXJuLT5pc0JpbmRpbmdOb2RlKCk7CiAg
ICAgfQpAQCAtNzM4LDkgKzczOCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZXNvbHZlKEV4
cHJlc3Npb25Ob2RlKiBleHByKSBjb25zdCB7IHJldHVybiBleHByLT5pc1Jlc29sdmVOb2RlKCk7
IH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlv
blBhdHRlcm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCisgICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2Rl
PiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKGxv
Y2F0aW9uLCBwYXR0ZXJuLmdldCgpLCBpbml0aWFsaXplcik7CisgICAgICAgIHJldHVybiBuZXcg
KG1fcGFyc2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0
dGVybi5nZXQoKSwgaW5pdGlhbGl6ZXIpOwogICAgIH0KICAgICAKICAgICBBcnJheVBhdHRlcm4g
Y3JlYXRlQXJyYXlQYXR0ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCkBAIC03NTMsMTIgKzc1
MywxMiBAQCBwdWJsaWM6CiAgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5v
ZGU6OkJpbmRpbmdUeXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgMCwgbnVsbHB0cik7CiAgICAgfQog
Ci0gICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRl
cm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCisgICAgdm9pZCBhcHBlbmRBcnJheVBh
dHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1
bHRWYWx1ZSkKICAgICB7CiAgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5v
ZGU6OkJpbmRpbmdUeXBlOjpFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgZGVmYXVs
dFZhbHVlKTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVyblJlc3RFbnRyeShB
cnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuIHBhdHRlcm4pCisgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5SZXN0
RW50cnkoQXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pCiAgICAgewogICAgICAgICBub2RlLT5hcHBl
bmRJbmRleChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5nVHlwZTo6UmVzdEVsZW1lbnQsIGxvY2F0
aW9uLCBwYXR0ZXJuLmdldCgpLCBudWxscHRyKTsKICAgICB9CkBAIC03NzMsNyArNzczLDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSgpOwogICAg
IH0KICAgICAKLSAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShPYmplY3RQYXR0ZXJu
IG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgd2FzU3RyaW5nLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKKyAgICB2b2lkIGFwcGVuZE9iamVjdFBh
dHRlcm5FbnRyeShPYmplY3RQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGJvb2wgd2FzU3RyaW5nLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBEZXN0
cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQog
ICAgIHsKICAgICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRpb24sIGlkZW50aWZpZXIsIHdh
c1N0cmluZywgcGF0dGVybi5nZXQoKSwgZGVmYXVsdFZhbHVlKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNp
b24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgyMCwxNCArODIwLDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9k
ZShQYXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4pCisgICAgaW5s
aW5lIFBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5n
UGF0dGVybk5vZGU+IHBhdHRlcm4pCiAgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAg
ICAgICwgbV9uZXh0KDApCiAgICAgewogICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKICAgICB9
CiAKLSAgICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2Rl
KiBsLCBQYXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4pCisgICAg
aW5saW5lIFBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSogbCwgUGFz
c1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHBhdHRlcm4pCiAgICAgICAgIDogbV9w
YXR0ZXJuKHBhdHRlcm4pCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewpAQCAtOTM0LDEyICs5
MzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUg
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpCisg
ICAgaW5saW5lIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKCkKICAgICB7CiAgICAgfQogCiAgICAgaW5saW5lIEFycmF5UGF0dGVybk5vZGU6OkFycmF5
UGF0dGVybk5vZGUoKQotICAgICAgICA6IERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUoKQorICAg
ICAgICA6IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCiAgICAgewogICAgIH0KICAgICAKQEAg
LTk0OSw3ICs5NDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAgICAgCiAgICAgaW5saW5l
IE9iamVjdFBhdHRlcm5Ob2RlOjpPYmplY3RQYXR0ZXJuTm9kZSgpCi0gICAgICAgIDogRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpCisgICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2Rl
KCkKICAgICB7CiAgICAgfQogICAgIApAQCAtOTY0LDE0ICs5NjQsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgfQogICAgIAogICAgIGlubGluZSBCaW5kaW5nTm9kZTo6QmluZGluZ05vZGUoY29u
c3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24mIHN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQotICAgICAgICA6IERlY29uc3RydWN0aW9uUGF0
dGVybk5vZGUoKQorICAgICAgICA6IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSgpCiAgICAgICAg
ICwgbV9kaXZvdFN0YXJ0KHN0YXJ0KQogICAgICAgICAsIG1fZGl2b3RFbmQoZW5kKQogICAgICAg
ICAsIG1fYm91bmRQcm9wZXJ0eShib3VuZFByb3BlcnR5KQogICAgIHsKICAgICB9CiAgICAgCi0g
ICAgaW5saW5lIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGU6OkRlY29uc3RydWN0aW5nQXNz
aWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxE
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUqIGluaXRp
YWxpemVyKQorICAgIGlubGluZSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGU6OkRlc3RydWN0
dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNz
UmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gYmluZGluZ3MsIEV4cHJlc3Npb25Ob2Rl
KiBpbml0aWFsaXplcikKICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBtX2JpbmRpbmdzKGJpbmRpbmdzKQogICAgICAgICAsIG1faW5pdGlhbGl6ZXIoaW5pdGlh
bGl6ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkocmV2aXNp
b24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBSZWY8RnVuY3Rpb25QYXJhbWV0ZXJzPiBG
dW5jdGlvblBhcmFtZXRlCiAgICAgZm9yIChQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIgPSBmaXJz
dFBhcmFtZXRlcjsgcGFyYW1ldGVyOyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXItPm5leHRQYXJhbSgp
KQogICAgICAgICArK3BhcmFtZXRlckNvdW50OwogCi0gICAgc2l6ZV90IG9iamVjdFNpemUgPSBz
aXplb2YoRnVuY3Rpb25QYXJhbWV0ZXJzKSAtIHNpemVvZih2b2lkKikgKyBzaXplb2YoRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuTm9kZSopICogcGFyYW1ldGVyQ291bnQ7CisgICAgc2l6ZV90IG9iamVj
dFNpemUgPSBzaXplb2YoRnVuY3Rpb25QYXJhbWV0ZXJzKSAtIHNpemVvZih2b2lkKikgKyBzaXpl
b2YoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKikgKiBwYXJhbWV0ZXJDb3VudDsKICAgICB2b2lk
KiBzbG90ID0gZmFzdE1hbGxvYyhvYmplY3RTaXplKTsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyAoc2xvdCkgRnVuY3Rpb25QYXJhbWV0ZXJzKGZpcnN0UGFyYW1ldGVyLCBwYXJhbWV0ZXJDb3Vu
dCkpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24g
MTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTYsNyArMTU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
dmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFjY2Vzc29yTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0RlY29uc3RydWN0aW9uTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0
dXJpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzRnVuY0V4cHJOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzQ29tbWFOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzU2ltcGxlQXJyYXkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTM5
OSw3ICsxMzk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1f
c3RhdGVtZW50OwogICAgIH07CiAgICAgCi0gICAgY2xhc3MgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
Tm9kZTsKKyAgICBjbGFzcyBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU7CiAgICAgCiAgICAgY2xh
c3MgRW51bWVyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgpAQCAtMTUxOCwxNCArMTUxOCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBhcmFtZXRlck5vZGUgOiBwdWJsaWMgUGFyc2Vy
QXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUGFyYW1ldGVyTm9kZShQYXNz
UmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+KTsKLSAgICAgICAgUGFyYW1ldGVyTm9k
ZShQYXJhbWV0ZXJOb2RlKiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPik7
CisgICAgICAgIFBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+KTsKKyAgICAgICAgUGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiwgUGFzc1JlZlB0cjxE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+KTsKIAotICAgICAgICBEZWNvbnN0cnVjdGlvblBhdHRl
cm5Ob2RlKiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9wYXR0ZXJuLmdldCgpOyB9CisgICAg
ICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybigpIGNvbnN0IHsgcmV0dXJuIG1f
cGF0dGVybi5nZXQoKTsgfQogICAgICAgICBQYXJhbWV0ZXJOb2RlKiBuZXh0UGFyYW0oKSBjb25z
dCB7IHJldHVybiBtX25leHQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZlB0cjxEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBtX3BhdHRlcm47CisgICAgICAgIFJlZlB0cjxEZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGU+IG1fcGF0dGVybjsKICAgICAgICAgUGFyYW1ldGVyTm9kZSogbV9u
ZXh0OwogICAgIH07CiAKQEAgLTE2MzgsMTUgKzE2MzgsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH5GdW5jdGlvblBhcmFtZXRlcnMoKTsKIAogICAgICAgICB1bnNpZ25lZCBzaXplKCkg
Y29uc3QgeyByZXR1cm4gbV9zaXplOyB9Ci0gICAgICAgIERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGUqIGF0KHVuc2lnbmVkIGluZGV4KSB7IEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7IHJldHVybiBw
YXR0ZXJucygpW2luZGV4XTsgfQorICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGF0
KHVuc2lnbmVkIGluZGV4KSB7IEFTU0VSVChpbmRleCA8IG1fc2l6ZSk7IHJldHVybiBwYXR0ZXJu
cygpW2luZGV4XTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJz
KFBhcmFtZXRlck5vZGUqLCB1bnNpZ25lZCBzaXplKTsKIAotICAgICAgICBEZWNvbnN0cnVjdGlv
blBhdHRlcm5Ob2RlKiogcGF0dGVybnMoKSB7IHJldHVybiAmbV9zdG9yYWdlOyB9CisgICAgICAg
IERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSoqIHBhdHRlcm5zKCkgeyByZXR1cm4gJm1fc3RvcmFn
ZTsgfQogCiAgICAgICAgIHVuc2lnbmVkIG1fc2l6ZTsKLSAgICAgICAgRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuTm9kZSogbV9zdG9yYWdlOworICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUq
IG1fc3RvcmFnZTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSBmaW5hbCA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewpAQCAt
MTc2Miw4ICsxNzYyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKICNlbmRpZgogCi0gICAg
Y2xhc3MgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlY29u
c3RydWN0aW9uUGF0dGVybk5vZGU+IHsKLSAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVj
b25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSk7CisgICAgY2xhc3MgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiB7CisgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSk7CiAgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogCiAgICAgcHVibGljOgpAQCAtMTc3NCwxMyAr
MTc3NCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmluZGlu
Z05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXREaXJlY3RCaW5kaW5nKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCosIEV4
cHJlc3Npb25Ob2RlKikgeyByZXR1cm4gMDsgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCB+
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpID0gMDsKKyAgICAgICAgdmlydHVhbCB+RGVzdHJ1
Y3R1cmluZ1BhdHRlcm5Ob2RlKCkgPSAwOwogICAgICAgICAKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUoKTsKKyAgICAgICAgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKCk7CiAgICAgfTsKIAotICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJs
aWMgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKKyAgICBjbGFzcyBBcnJheVBhdHRlcm5Ob2RlIDogcHVibGljIERlc3RydWN0dXJpbmdQ
YXR0ZXJuTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIGVudW0gY2xhc3MgQmluZGluZ1R5cGUgewogICAgICAgICAgICAgRWxpc2lvbiwK
QEAgLTE3ODksNyArMTc4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9OwogCiAgICAg
ICAgIHN0YXRpYyBSZWY8QXJyYXlQYXR0ZXJuTm9kZT4gY3JlYXRlKCk7Ci0gICAgICAgIHZvaWQg
YXBwZW5kSW5kZXgoQmluZGluZ1R5cGUgYmluZGluZ1R5cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIG5vZGUsIEV4cHJlc3Npb25Ob2RlKiBkZWZh
dWx0VmFsdWUpCisgICAgICAgIHZvaWQgYXBwZW5kSW5kZXgoQmluZGluZ1R5cGUgYmluZGluZ1R5
cGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogbm9k
ZSwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAg
bV90YXJnZXRQYXR0ZXJucy5hcHBlbmQoeyBiaW5kaW5nVHlwZSwgbm9kZSwgZGVmYXVsdFZhbHVl
IH0pOwogICAgICAgICB9CkBAIC0xNzk3LDcgKzE3OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgQmluZGluZ1R5
cGUgYmluZGluZ1R5cGU7Ci0gICAgICAgICAgICBSZWZQdHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
Tm9kZT4gcGF0dGVybjsKKyAgICAgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGU+IHBhdHRlcm47CiAgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwog
ICAgICAgICB9OwogICAgICAgICBBcnJheVBhdHRlcm5Ob2RlKCk7CkBAIC0xODA5LDEwICsxODA5
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBWZWN0b3I8RW50cnk+IG1fdGFyZ2V0UGF0
dGVybnM7CiAgICAgfTsKICAgICAKLSAgICBjbGFzcyBPYmplY3RQYXR0ZXJuTm9kZSA6IHB1Ymxp
YyBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlIHsKKyAgICBjbGFzcyBPYmplY3RQYXR0ZXJuTm9k
ZSA6IHB1YmxpYyBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgc3RhdGljIFJlZjxPYmplY3RQYXR0ZXJuTm9kZT4gY3JlYXRlKCk7Ci0gICAgICAgIHZvaWQg
YXBwZW5kRW50cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnRpZmllciwgYm9vbCB3YXNTdHJpbmcsIERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUqIHBhdHRl
cm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCisgICAgICAgIHZvaWQgYXBwZW5kRW50
cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwg
Ym9vbCB3YXNTdHJpbmcsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVz
c2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgewogICAgICAgICAgICAgbV90YXJnZXRQ
YXR0ZXJucy5hcHBlbmQoRW50cnl7IGlkZW50aWZpZXIsIHdhc1N0cmluZywgcGF0dGVybiwgZGVm
YXVsdFZhbHVlIH0pOwogICAgICAgICB9CkBAIC0xODI1LDEzICsxODI1LDEzIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdHJ1Y3QgRW50cnkgewogICAgICAgICAgICAgSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWU7CiAgICAgICAgICAgICBib29sIHdhc1N0cmluZzsKLSAgICAgICAgICAgIFJl
ZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlPiBwYXR0ZXJuOworICAgICAgICAgICAgUmVm
UHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybjsKICAgICAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIH07CiAgICAgICAgIFZlY3RvcjxFbnRy
eT4gbV90YXJnZXRQYXR0ZXJuczsKICAgICB9OwogCi0gICAgY2xhc3MgQmluZGluZ05vZGUgOiBw
dWJsaWMgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSB7CisgICAgY2xhc3MgQmluZGluZ05vZGUg
OiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBSZWY8QmluZGluZ05vZGU+IGNyZWF0ZShjb25zdCBJZGVudGlmaWVyJiBib3VuZFBy
b3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBlbmQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5KCkgY29uc3Qg
eyByZXR1cm4gbV9ib3VuZFByb3BlcnR5OyB9CkBAIC0xODUzLDE5ICsxODUzLDE5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBJZGVudGlmaWVyIG1fYm91bmRQcm9wZXJ0eTsKICAgICB9Owog
Ci0gICAgY2xhc3MgRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKKyAgICBjbGFzcyBEZXN0cnVj
dHVyaW5nQXNzaWdubWVudE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQYXJz
ZXJBcmVuYURlbGV0YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWNvbnN0cnVjdGluZ0Fz
c2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBhc3NSZWZQdHI8RGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuTm9kZT4sIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIERlY29uc3RydWN0
aW9uUGF0dGVybk5vZGUqIGJpbmRpbmdzKCkgeyByZXR1cm4gbV9iaW5kaW5ncy5nZXQoKTsgfQor
ICAgICAgICBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+LCBFeHByZXNzaW9uTm9kZSop
OworICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIGJpbmRpbmdzKCkgeyByZXR1cm4g
bV9iaW5kaW5ncy5nZXQoKTsgfQogICAgICAgICAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFE
ZWxldGFibGU6Om9wZXJhdG9yIG5ldzsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0Fzc2lnbm1lbnRMb2NhdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7
IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzRGVjb25zdHJ1Y3Rpb25Ob2RlKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZXN0cnVjdHVy
aW5nTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOwogCi0gICAgICAgIFJlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5O
b2RlPiBtX2JpbmRpbmdzOworICAgICAgICBSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2Rl
PiBtX2JpbmRpbmdzOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9pbml0aWFsaXplcjsKICAg
ICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCShyZXZp
c2lvbiAxODYxMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50
IGVuZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7Ci0gICAgVHJlZURlY29uc3RydWN0aW9uUGF0dGVy
biBzY3JhdGNoMSA9IDA7CisgICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHNjcmF0Y2gxID0g
MDsKICAgICBUcmVlRXhwcmVzc2lvbiBzY3JhdGNoMiA9IDA7CiAgICAgSlNUZXh0UG9zaXRpb24g
c2NyYXRjaDM7CiAgICAgVHJlZUV4cHJlc3Npb24gdmFyRGVjbHMgPSBwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdChjb250ZXh0LCBzY3JhdGNoLCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNjcmF0Y2gzLCBz
Y3JhdGNoMywgc2NyYXRjaDMsIFZhckRlY2xhcmF0aW9uQ29udGV4dCk7CkBAIC00ODMsNyArNDgz
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3Qo
VHJlZUJ1aWxkZXImIGNvbnRleHQsIGludCYgZGVjbGFyYXRpb25zLCBUcmVlRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwg
SlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpT
VGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IGRlY2xhcmF0
aW9uTGlzdENvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRl
ciYgY29udGV4dCwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYg
bGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0
aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlv
biYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCBkZWNsYXJhdGlvbkxpc3RDb250
ZXh0KQogewogICAgIFRyZWVFeHByZXNzaW9uIGhlYWQgPSAwOwogICAgIFRyZWVFeHByZXNzaW9u
IHRhaWwgPSAwOwpAQCAtNTIyLDE1ICs1MjIsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzcwogICAgICAgICAgICAgICAgIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUVt
cHR5VmFyRXhwcmVzc2lvbih2YXJTdGFydExvY2F0aW9uLCAqbmFtZSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBsYXN0SWRlbnQgPSAwOwotICAgICAgICAgICAgYXV0byBwYXR0ZXJu
ID0gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVjb25zdHJ1Y3RUb1Zhcmlh
Ymxlcyk7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShwYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRo
aXMgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOworICAgICAgICAgICAgYXV0byBwYXR0ZXJuID0g
cGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvVmFyaWFibGVz
KTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBk
ZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKICAgICAgICAgICAgIGhhc0luaXRpYWxpemVyID0gbWF0
Y2goRVFVQUwpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZShkZWNsYXJhdGlvbkxpc3RDb250ZXh0
ID09IFZhckRlY2xhcmF0aW9uQ29udGV4dCAmJiAhaGFzSW5pdGlhbGl6ZXIsICJFeHBlY3RlZCBh
biBpbml0aWFsaXplciBpbiBkZXN0cnVjdHVyaW5nIHZhcmlhYmxlIGRlY2xhcmF0aW9uIik7CiAg
ICAgICAgICAgICBsYXN0UGF0dGVybiA9IHBhdHRlcm47CiAgICAgICAgICAgICBpZiAoaGFzSW5p
dGlhbGl6ZXIpIHsKICAgICAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRT
dHJpbmdzKTsgLy8gY29uc3VtZSAnPScKICAgICAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBy
aHMgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwotICAgICAgICAgICAgICAg
IG5vZGUgPSBjb250ZXh0LmNyZWF0ZURlY29uc3RydWN0aW5nQXNzaWdubWVudChsb2NhdGlvbiwg
cGF0dGVybiwgcmhzKTsKKyAgICAgICAgICAgICAgICBub2RlID0gY29udGV4dC5jcmVhdGVEZXN0
cnVjdHVyaW5nQXNzaWdubWVudChsb2NhdGlvbiwgcGF0dGVybiwgcmhzKTsKICAgICAgICAgICAg
ICAgICBsYXN0SW5pdGlhbGl6ZXIgPSByaHM7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTU0NCw1MCArNTQ0LDUwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3MKICAgICAgICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZFRvQ29tbWFFeHByKGxvY2F0aW9u
LCBoZWFkLCB0YWlsLCBub2RlKTsKICAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwogICAgIGlm
IChsYXN0SWRlbnQpCi0gICAgICAgIGxhc3RQYXR0ZXJuID0gY3JlYXRlQmluZGluZ1BhdHRlcm4o
Y29udGV4dCwgRGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcywgKmxhc3RJZGVudCwgMCwgbGFzdElkZW50
VG9rZW4pOworICAgICAgICBsYXN0UGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKGNvbnRl
eHQsIERlc3RydWN0dXJlVG9WYXJpYWJsZXMsICpsYXN0SWRlbnQsIDAsIGxhc3RJZGVudFRva2Vu
KTsKICAgICByZXR1cm4gaGVhZDsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIERlY29uc3RydWN0aW9uS2luZCBraW5kLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBpbnQg
ZGVwdGgsIEpTVG9rZW4gdG9rZW4pCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVE
ZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRl
cm4oVHJlZUJ1aWxkZXImIGNvbnRleHQsIERlc3RydWN0dXJpbmdLaW5kIGtpbmQsIGNvbnN0IElk
ZW50aWZpZXImIG5hbWUsIGludCBkZXB0aCwgSlNUb2tlbiB0b2tlbikKIHsKICAgICBBU1NFUlQo
IW5hbWUuaXNOdWxsKCkpOwogICAgIAogICAgIEFTU0VSVChuYW1lLmltcGwoKS0+aXNBdG9taWMo
KSB8fCBuYW1lLmltcGwoKS0+aXNTeW1ib2woKSk7CiAgICAgaWYgKGRlcHRoKSB7Ci0gICAgICAg
IGlmIChraW5kID09IERlY29uc3RydWN0VG9WYXJpYWJsZXMpCi0gICAgICAgICAgICBmYWlsSWZG
YWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjb25zdHJ1Y3Qg
dG8gYSB2YXJpYWJsZSBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
Ci0gICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9QYXJhbWV0ZXJzKSB7CisgICAgICAg
IGlmIChraW5kID09IERlc3RydWN0dXJlVG9WYXJpYWJsZXMpCisgICAgICAgICAgICBmYWlsSWZG
YWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVzdHJ1Y3R1cmUg
dG8gYSB2YXJpYWJsZSBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7
CisgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKSB7CiAgICAgICAg
ICAgICBhdXRvIGJpbmRpbmdSZXN1bHQgPSBkZWNsYXJlQm91bmRQYXJhbWV0ZXIoJm5hbWUpOwog
ICAgICAgICAgICAgaWYgKGJpbmRpbmdSZXN1bHQgPT0gU2NvcGU6OlN0cmljdEJpbmRpbmdGYWls
ZWQgJiYgc3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KG1fdm0tPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSBuYW1lIHx8IG1fdm0tPnByb3BlcnR5
TmFtZXMtPmV2YWwgPT0gbmFtZSwgIkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHBhcmFtZXRlciBu
YW1lICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09IG5h
bWUgfHwgbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSBuYW1lLCAiQ2Fubm90IGRlc3RydWN0
dXJlIHRvIGEgcGFyYW1ldGVyIG5hbWUgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9k
ZSIpOwogICAgICAgICAgICAgICAgIGlmIChtX2xhc3RGdW5jdGlvbk5hbWUgJiYgbmFtZSA9PSAq
bV9sYXN0RnVuY3Rpb25OYW1lKQotICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNh
bm5vdCBkZWNvbnN0cnVjdCB0byAnIiwgbmFtZS5pbXBsKCksICInIGFzIGl0IHNoYWRvd3MgdGhl
IG5hbWUgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZXN0cnVjdHVyZSB0byAnIiwgbmFtZS5pbXBsKCksICInIGFz
IGl0IHNoYWRvd3MgdGhlIG5hbWUgb2YgYSBzdHJpY3QgbW9kZSBmdW5jdGlvbiIpOwogICAgICAg
ICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZCgiYm91bmQgcGFyYW1ldGVyIG5h
bWUiKTsKICAgICAgICAgICAgICAgICBpZiAoaGFzRGVjbGFyZWRQYXJhbWV0ZXIobmFtZSkpCi0g
ICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2Fubm90IGRlY29uc3RydWN0IHRvICci
LCBuYW1lLmltcGwoKSwgIicgYXMgaXQgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpOworICAg
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZXN0cnVjdHVyZSB0byAnIiwg
bmFtZS5pbXBsKCksICInIGFzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWQiKTsKICAgICAg
ICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBiaW5kIHRvIGEgcGFyYW1ldGVyIG5hbWVk
ICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChiaW5kaW5nUmVzdWx0ID09IFNjb3BlOjpCaW5kaW5nRmFpbGVkKSB7CiAg
ICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKCJib3VuZCBwYXJhbWV0
ZXIgbmFtZSIpOwogICAgICAgICAgICAgICAgIGlmIChoYXNEZWNsYXJlZFBhcmFtZXRlcihuYW1l
KSkKLSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjb25zdHJ1Y3Qg
dG8gJyIsIG5hbWUuaW1wbCgpLCAiJyBhcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIik7
Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8gYSBw
YXJhbWV0ZXIgbmFtZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyIpOworICAgICAgICAgICAgICAgICAg
ICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZXN0cnVjdHVyZSB0byAnIiwgbmFtZS5pbXBsKCksICIn
IGFzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWQiKTsKKyAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWwoIkNhbm5vdCBkZXN0cnVjdHVyZSB0byBhIHBhcmFtZXRlciBuYW1lZCAnIiwgbmFt
ZS5pbXBsKCksICInIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGtp
bmQgIT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zKQorICAgICAgICBpZiAoa2luZCAhPSBEZXN0
cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICBjb250ZXh0LmFkZFZhcigmbmFtZSwg
RGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVyKTsKIAogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9WYXJpYWJsZXMpIHsKKyAgICAgICAgaWYgKGtp
bmQgPT0gRGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcykgewogICAgICAgICAgICAgZmFpbElmRmFsc2VJ
ZlN0cmljdChkZWNsYXJlVmFyaWFibGUoJm5hbWUpLCAiQ2Fubm90IGRlY2xhcmUgYSB2YXJpYWJs
ZSBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgICAg
ICBjb250ZXh0LmFkZFZhcigmbmFtZSwgRGVjbGFyYXRpb25TdGFja3M6Okhhc0luaXRpYWxpemVy
KTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RU
b1BhcmFtZXRlcnMpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb1BhcmFtZXRl
cnMpIHsKICAgICAgICAgICAgIGJvb2wgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNsYXJlUGFyYW1l
dGVyKCZuYW1lKTsKICAgICAgICAgICAgIGlmICghZGVjbGFyYXRpb25SZXN1bHQgJiYgc3RyaWN0
TW9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3Bl
cnR5TmFtZXMtPmFyZ3VtZW50cyA9PSBuYW1lIHx8IG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwg
PT0gbmFtZSwgIkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHBhcmFtZXRlciBuYW1lICciLCBuYW1l
LmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUobV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09IG5hbWUgfHwgbV92bS0+
cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSBuYW1lLCAiQ2Fubm90IGRlc3RydWN0dXJlIHRvIGEgcGFy
YW1ldGVyIG5hbWUgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAg
ICAgICAgICAgIGlmIChtX2xhc3RGdW5jdGlvbk5hbWUgJiYgbmFtZSA9PSAqbV9sYXN0RnVuY3Rp
b25OYW1lKQogICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZWNsYXJl
IGEgcGFyYW1ldGVyIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgYXMgaXQgc2hhZG93cyB0aGUg
bmFtZSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uIik7CiAgICAgICAgICAgICAgICAgc2VtYW50
aWNGYWlsdXJlRHVlVG9LZXl3b3JkKCJwYXJhbWV0ZXIgbmFtZSIpOwpAQCAtNjM3LDE3ICs2Mzcs
MTcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogI2VuZGlmCiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnRyeVBhcnNl
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKK3Rl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNl
cjxMZXhlclR5cGU+Ojp0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihUcmVl
QnVpbGRlciYgY29udGV4dCkKIHsKLSAgICByZXR1cm4gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRl
cm4oY29udGV4dCwgRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zKTsKKyAgICByZXR1cm4gcGFyc2VE
ZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZURlY29uc3RydWN0aW9uUGF0dGVybihUcmVlQnVpbGRlciYgY29udGV4dCwgRGVjb25zdHJ1Y3Rp
b25LaW5kIGtpbmQsIGludCBkZXB0aCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlc3RydWN0dXJp
bmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBEZXN0cnVjdHVyaW5nS2luZCBraW5kLCBp
bnQgZGVwdGgpCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwogICAgIGludCBub25MSFND
b3VudCA9IG1fbm9uTEhTQ291bnQ7Ci0gICAgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0
ZXJuOworICAgIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuOwogICAgIHN3aXRjaCAo
bV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAgICAgICAgIEpTVGV4
dFBvc2l0aW9uIGRpdm90U3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKQEAgLTY2OSwxMiAr
NjY5LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3QKICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShtYXRjaChET1RET1RET1QpKSkgewogICAgICAgICAgICAgICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKICAgICAgICAg
ICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJz
ZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCArIDEpOwotICAgICAg
ICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQ
YXR0ZXJuKQorICAgICAgICAgICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0gcGFyc2VEZXN0cnVj
dHVyaW5nUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAg
IGlmIChraW5kID09IERlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQYXR0ZXJuKQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJu
Iik7CisgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBh
cnNlIHRoaXMgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAKLSAgICAgICAgICAgICAgICBmYWls
SWZUcnVlKGtpbmQgIT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYmICFjb250ZXh0LmlzQmlu
ZGluZ05vZGUoaW5uZXJQYXR0ZXJuKSwgICJFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3Qg
ZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CisgICAgICAgICAgICAgICAgZmFpbElm
VHJ1ZShraW5kICE9IERlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAhY29udGV4dC5pc0JpbmRp
bmdOb2RlKGlubmVyUGF0dGVybiksICAiRXhwZWN0ZWQgaWRlbnRpZmllciBmb3IgYSByZXN0IGVs
ZW1lbnQgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAKICAgICAgICAgICAgICAgICBjb250ZXh0
LmFwcGVuZEFycmF5UGF0dGVyblJlc3RFbnRyeShhcnJheVBhdHRlcm4sIGxvY2F0aW9uLCBpbm5l
clBhdHRlcm4pOwogICAgICAgICAgICAgICAgIHJlc3RFbGVtZW50V2FzRm91bmQgPSB0cnVlOwpA
QCAtNjgyLDE4ICs2ODIsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVj
b25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24gPSBtX3Rva2VuLm1fbG9jYXRpb247Ci0gICAgICAgICAgICBhdXRvIGlubmVyUGF0dGVybiA9
IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRlcHRoICsgMSk7Ci0g
ICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIWlubmVy
UGF0dGVybikKKyAgICAgICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0gcGFyc2VEZXN0cnVjdHVy
aW5nUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCArIDEpOworICAgICAgICAgICAgaWYgKGtp
bmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zICYmICFpbm5lclBhdHRlcm4pCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRlcm4s
ICJDYW5ub3QgcGFyc2UgdGhpcyBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7Ci0gICAgICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBkZWZhdWx0VmFsdWUgPSBwYXJzZURlZmF1bHRWYWx1ZUZvckRlY29u
c3RydWN0aW9uUGF0dGVybihjb250ZXh0KTsKLSAgICAgICAgICAgIGZhaWxJZlRydWUoa2luZCA9
PSBEZWNvbnN0cnVjdFRvUGFyYW1ldGVycyAmJiBkZWZhdWx0VmFsdWUsICAiRGVmYXVsdCB2YWx1
ZXMgaW4gZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzIGFyZSBjdXJyZW50bHkgbm90IHN1cHBvcnRl
ZCIpOworICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBhcnNl
IHRoaXMgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lv
biBkZWZhdWx0VmFsdWUgPSBwYXJzZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJu
KGNvbnRleHQpOworICAgICAgICAgICAgZmFpbElmVHJ1ZShraW5kID09IERlc3RydWN0dXJlVG9Q
YXJhbWV0ZXJzICYmIGRlZmF1bHRWYWx1ZSwgICJEZWZhdWx0IHZhbHVlcyBpbiBkZXN0cnVjdHVy
aW5nIHBhcmFtZXRlcnMgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgICAg
ICBjb250ZXh0LmFwcGVuZEFycmF5UGF0dGVybkVudHJ5KGFycmF5UGF0dGVybiwgbG9jYXRpb24s
IGlubmVyUGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICAgICAgfSB3aGlsZSAoY29uc3VtZShD
T01NQSkpOwogCi0gICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAm
JiAhbWF0Y2goQ0xPU0VCUkFDS0VUKSkKKyAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVU
b0V4cHJlc3Npb25zICYmICFtYXRjaChDTE9TRUJSQUNLRVQpKQogICAgICAgICAgICAgcmV0dXJu
IDA7Ci0gICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDS0VULCByZXN0RWxlbWVudFdhc0Zv
dW5kID8gIkV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRl
Y29uc3RydWN0aW9uIHBhdHRlcm4iIDogIkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9y
IGEgJywnIGZvbGxvd2luZyBhbiBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKKyAg
ICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNLRVQsIHJlc3RFbGVtZW50V2FzRm91bmQgPyAi
RXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1
cmluZyBwYXR0ZXJuIiA6ICJFeHBlY3RlZCBlaXRoZXIgYSBjbG9zaW5nICddJyBvciBhICcsJyBm
b2xsb3dpbmcgYW4gZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKICAgICAgICAgY29u
dGV4dC5maW5pc2hBcnJheVBhdHRlcm4oYXJyYXlQYXR0ZXJuLCBkaXZvdFN0YXJ0LCBkaXZvdFN0
YXJ0LCBsYXN0VG9rZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgcGF0dGVybiA9IGFycmF5UGF0
dGVybjsKICAgICAgICAgYnJlYWs7CkBAIC03MDksMTQgKzcwOSwxNCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNvbnN0CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lOwotICAgICAgICAgICAgVHJlZURlY29u
c3RydWN0aW9uUGF0dGVybiBpbm5lclBhdHRlcm4gPSAwOworICAgICAgICAgICAgVHJlZURlc3Ry
dWN0dXJpbmdQYXR0ZXJuIGlubmVyUGF0dGVybiA9IDA7CiAgICAgICAgICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24gPSBtX3Rva2VuLm1fbG9jYXRpb247CiAgICAgICAgICAgICBpZiAobWF0
Y2goSURFTlQpKSB7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlOYW1lID0gKm1fdG9rZW4ubV9k
YXRhLmlkZW50OwogICAgICAgICAgICAgICAgIEpTVG9rZW4gaWRlbnRpZmllclRva2VuID0gbV90
b2tlbjsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN1
bWUoQ09MT04pKQotICAgICAgICAgICAgICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29u
c3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCArIDEpOworICAgICAgICAgICAg
ICAgICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQs
IGtpbmQsIGRlcHRoICsgMSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBpbm5lclBhdHRlcm4gPSBjcmVhdGVCaW5kaW5nUGF0dGVybihjb250ZXh0LCBraW5kLCBw
cm9wZXJ0eU5hbWUsIGRlcHRoLCBpZGVudGlmaWVyVG9rZW4pOwogICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTczMiw3ICs3MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVE
ZWNvbnN0CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRCAm
JiBtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRF9JRl9TVFJJQ1QgJiYgIShtX3Rva2VuLm1fdHlw
ZSAmIEtleXdvcmRUb2tlbkZsYWcpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMpCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsV2l0aE1lc3Nh
Z2UoIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICAgICAgICAgICAgICB9CkBA
IC03NDEsMzQgKzc0MSwzNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNv
bnN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoQ09MT04pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChr
aW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucykKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zKQogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0b2tl
blR5cGUgPT0gUkVTRVJWRUQsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9u
IHN5bnRheCBmb3IgcmVzZXJ2ZWQgbmFtZSAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIiciKTsK
LSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSA9PSBSRVNF
UlZFRF9JRl9TVFJJQ1QsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5
bnRheCBmb3IgcmVzZXJ2ZWQgbmFtZSAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIicgaW4gc3Ry
aWN0IG1vZGUiKTsKLSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2Vu
VHlwZSAmIEtleXdvcmRUb2tlbkZsYWcsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3Ry
dWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIiciKTsK
KyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSA9PSBSRVNF
UlZFRCwgIkNhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIHJl
c2VydmVkIG5hbWUgJyIsIHByb3BlcnR5TmFtZS5pbXBsKCksICInIik7CisgICAgICAgICAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0b2tlblR5cGUgPT0gUkVTRVJWRURfSUZfU1RSSUNU
LCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3IgcmVzZXJ2
ZWQgbmFtZSAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSAmIEtleXdvcmRU
b2tlbkZsYWcsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZv
ciBrZXl3b3JkICciLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhICc6
JyBwcmlvciB0byBuYW1lZCBwcm9wZXJ0eSBkZWNvbnN0cnVjdGlvbiIpOworICAgICAgICAgICAg
ICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgJzonIHByaW9yIHRvIGEgbmFtZWQg
ZGVzdHJ1Y3R1cmluZyBwcm9wZXJ0eSIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICBpbm5lclBhdHRlcm4gPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBr
aW5kLCBkZXB0aCArIDEpOworICAgICAgICAgICAgICAgIGlubmVyUGF0dGVybiA9IHBhcnNlRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwga2luZCwgZGVwdGggKyAxKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAh
aW5uZXJQYXR0ZXJuKQorICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJl
c3Npb25zICYmICFpbm5lclBhdHRlcm4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZWNv
bnN0cnVjdGlvbiBwYXR0ZXJuIik7Ci0gICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBkZWZhdWx0
VmFsdWUgPSBwYXJzZURlZmF1bHRWYWx1ZUZvckRlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0
KTsKLSAgICAgICAgICAgIGZhaWxJZlRydWUoa2luZCA9PSBEZWNvbnN0cnVjdFRvUGFyYW1ldGVy
cyAmJiBkZWZhdWx0VmFsdWUsICJEZWZhdWx0IHZhbHVlcyBpbiBkZXN0cnVjdHVyaW5nIHBhcmFt
ZXRlcnMgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgICAgICBmYWlsSWZG
YWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZXN0cnVjdHVyaW5nIHBhdHRl
cm4iKTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGRlZmF1bHRWYWx1ZSA9IHBhcnNlRGVm
YXVsdFZhbHVlRm9yRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCk7CisgICAgICAgICAgICBm
YWlsSWZUcnVlKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMgJiYgZGVmYXVsdFZhbHVl
LCAiRGVmYXVsdCB2YWx1ZXMgaW4gZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJzIGFyZSBjdXJyZW50
bHkgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAgICAgY29udGV4dC5hcHBlbmRPYmplY3RQYXR0
ZXJuRW50cnkob2JqZWN0UGF0dGVybiwgbG9jYXRpb24sIHdhc1N0cmluZywgcHJvcGVydHlOYW1l
LCBpbm5lclBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CiAgICAgICAgIH0gd2hpbGUgKGNvbnN1bWUo
Q09NTUEpKTsKIAotICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMg
JiYgIW1hdGNoKENMT1NFQlJBQ0UpKQorICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRv
RXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJBQ0UpKQogICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSwgIkV4cGVjdGVkIGVpdGhlciBhIGNs
b3NpbmcgJ30nIG9yIGFuICcsJyBhZnRlciBhIHByb3BlcnR5IGRlY29uc3RydWN0aW9uIHBhdHRl
cm4iKTsKKyAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgZWl0aGVy
IGEgY2xvc2luZyAnfScgb3IgYW4gJywnIGFmdGVyIGEgcHJvcGVydHkgZGVzdHJ1Y3R1cmluZyBw
YXR0ZXJuIik7CiAgICAgICAgIHBhdHRlcm4gPSBvYmplY3RQYXR0ZXJuOwogICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICBkZWZhdWx0OiB7CiAgICAgICAgIGlmICghbWF0Y2goSURFTlQpKSB7
Ci0gICAgICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMpCisgICAg
ICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQo
InZhcmlhYmxlIG5hbWUiKTsKICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQg
YSBwYXJhbWV0ZXIgcGF0dGVybiBvciBhICcpJyBpbiBwYXJhbWV0ZXIgbGlzdCIpOwpAQCAtNzgz
LDcgKzc4Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3QKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVmYXVsdFZhbHVl
Rm9yRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VEZWZhdWx0VmFsdWVGb3JEZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBpZiAoIW1hdGNoKEVRVUFMKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC04MzQs
MTMgKzgzNCwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAg
ICAgSlNUZXh0UG9zaXRpb24gZGVjbHNTdGFydDsKICAgICBKU1RleHRQb3NpdGlvbiBkZWNsc0Vu
ZDsKICAgICBUcmVlRXhwcmVzc2lvbiBkZWNscyA9IDA7Ci0gICAgVHJlZURlY29uc3RydWN0aW9u
UGF0dGVybiBwYXR0ZXJuID0gMDsKKyAgICBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVy
biA9IDA7CiAgICAgaWYgKG1hdGNoKFZBUikpIHsKICAgICAgICAgLyoKICAgICAgICAgIGZvciAo
dmFyIElERU5UIGluIGV4cHJlc3Npb24pIHN0YXRlbWVudAogICAgICAgICAgZm9yICh2YXIgdmFy
RGVjbGFyYXRpb25MaXN0OyBleHByZXNzaW9uT3B0OyBleHByZXNzaW9uT3B0KQogICAgICAgICAg
Ki8KLSAgICAgICAgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBmb3JJblRhcmdldCA9IDA7Cisg
ICAgICAgIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBmb3JJblRhcmdldCA9IDA7CiAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGZvckluSW5pdGlhbGl6ZXIgPSAwOwogICAgICAgICBtX2FsbG93c0lu
ID0gZmFsc2U7CiAgICAgICAgIEpTVGV4dFBvc2l0aW9uIGluaXRTdGFydDsKQEAgLTg5MCw3ICs4
OTAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAgICAgICAg
IGlmIChtYXRjaChPUEVOQlJBQ0UpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkgewogICAgICAgICAg
ICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgICAgICAgICAg
ZGVjbHNTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwotICAgICAgICAgICAgcGF0dGVybiA9
IHRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAg
ICAgICAgIHBhdHRlcm4gPSB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICAgICAgICAgIGRlY2xzRW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsK
ICAgICAgICAgICAgIGlmIChwYXR0ZXJuICYmIChtYXRjaChJTlRPS0VOKSB8fCAobWF0Y2goSURF
TlQpICYmICptX3Rva2VuLm1fZGF0YS5pZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5vZikp
KQogICAgICAgICAgICAgICAgIGdvdG8gZW51bWVyYXRpb25Mb29wOwpAQCAtMTM0OSwxMiArMTM0
OSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0
ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VE
ZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnMpOwor
ICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBE
ZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAiQ2Fu
bm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxp
c3QgbGlzdCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChwYXJhbWV0ZXIpOwog
ICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHRhaWwgPSBsaXN0OwogICAgIHdoaWxlIChjb25z
dW1lKENPTU1BKSkgewotICAgICAgICBwYXJhbWV0ZXIgPSBwYXJzZURlY29uc3RydWN0aW9uUGF0
dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRvUGFyYW1ldGVycyk7CisgICAgICAgIHBhcmFtZXRl
ciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFt
ZXRlcnMpOwogICAgICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJDYW5ub3QgcGFyc2UgcGFy
YW1ldGVyIHBhdHRlcm4iKTsKICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdCh0YWlsLCBwYXJhbWV0ZXIpOwogICAgIH0KQEAgLTE0MjksNyArMTQyOSw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDwKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJFeHBlY3RlZCBh
ICcpJyBvciBhICcsJyBhZnRlciBhIHBhcmFtZXRlciBkZWNsYXJhdGlvbiIpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcnNlRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9QYXJhbWV0ZXJzKTsKKyAgICAg
ICAgICAgICAgICBhdXRvIHBhcmFtZXRlciA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29u
dGV4dCwgRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwogICAgICAg
ICAgICAgICAgIGluZm8ucGFyYW1ldGVycyA9IGNvbnRleHQuY3JlYXRlRm9ybWFsUGFyYW1ldGVy
TGlzdChwYXJhbWV0ZXIpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluZm8ucGFyYW1l
dGVycywgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXJzIGZvciB0aGlzICIsIHN0cmluZ0ZvckZ1bmN0
aW9uTW9kZShtb2RlKSk7CkBAIC0xNDQ5LDcgKzE0NDksNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwg
ImdldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG5vIHBhcmFtZXRlcnMiKTsKICAgICBlbHNlIGlm
IChtb2RlID09IFNldHRlck1vZGUpIHsKICAgICAgICAgZmFpbElmVHJ1ZShtYXRjaChDTE9TRVBB
UkVOKSwgInNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZlIG9uZSBwYXJhbWV0ZXIiKTsKLSAgICAg
ICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBE
ZWNvbnN0cnVjdFRvUGFyYW1ldGVycyk7CisgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VE
ZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgInNldHRlciBmdW5jdGlvbnMgbXVzdCBoYXZl
IG9uZSBwYXJhbWV0ZXIiKTsKICAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gY29udGV4dC5jcmVh
dGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7CiAgICAgICAgIGZhaWxJZlRydWUobWF0
Y2goQ09NTUEpLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUgb25lIHBhcmFtZXRlciIpOwpA
QCAtMjA3NCwxMSArMjA3NCwxMSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByCiAgICAgaW50IGluaXRpYWxOb25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAg
aWYgKG1hdGNoKE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSB7CiAgICAgICAgIFNh
dmVQb2ludCBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoKTsKLSAgICAgICAgYXV0byBwYXR0
ZXJuID0gdHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm5FeHByZXNzaW9uKGNvbnRleHQpOwor
ICAgICAgICBhdXRvIHBhdHRlcm4gPSB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICAgICAgaWYgKHBhdHRlcm4gJiYgY29uc3VtZShFUVVBTCkpIHsK
ICAgICAgICAgICAgIGF1dG8gcmhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0
KTsKICAgICAgICAgICAgIGlmIChyaHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCByaHMpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25t
ZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCByaHMpOwogICAgICAgICB9CiAgICAgICAgIHJlc3RvcmVT
YXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgJKHJldmlzaW9uIDE4NjEwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDcgQEAgY2xhc3MgU291
cmNlQ29kZTsKICNlbmRpZgogI2RlZmluZSBUcmVlUHJvcGVydHkgdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OlByb3BlcnR5CiAjZGVmaW5lIFRyZWVQcm9wZXJ0eUxpc3QgdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OlByb3BlcnR5TGlzdAotI2RlZmluZSBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpEZWNvbnN0cnVjdGlvblBhdHRlcm4KKyNkZWZpbmUgVHJlZURlc3Ry
dWN0dXJpbmdQYXR0ZXJuIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpEZXN0cnVjdHVyaW5nUGF0dGVy
bgogCiBDT01QSUxFX0FTU0VSVChMYXN0VW50YWdnZWRUb2tlbiA8IDY0LCBMZXNzVGhhbjY0VW50
YWdnZWRUb2tlbnMpOwogCkBAIC05NSwxMCArOTUsMTAgQEAgZW51bSBGdW5jdGlvblBhcnNlTW9k
ZSB7CiAgICAgQXJyb3dGdW5jdGlvbk1vZGUKICNlbmRpZgogfTsKLWVudW0gRGVjb25zdHJ1Y3Rp
b25LaW5kIHsKLSAgICBEZWNvbnN0cnVjdFRvVmFyaWFibGVzLAotICAgIERlY29uc3RydWN0VG9Q
YXJhbWV0ZXJzLAotICAgIERlY29uc3RydWN0VG9FeHByZXNzaW9ucworZW51bSBEZXN0cnVjdHVy
aW5nS2luZCB7CisgICAgRGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcywKKyAgICBEZXN0cnVjdHVyZVRv
UGFyYW1ldGVycywKKyAgICBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMKIH07CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPiBpbmxpbmUgYm9vbCBpc0V2YWxOb2RlKCkgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTgwOSw3ICs4MDksNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRy
ZWVCdWlsZGVyJiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3Rh
cnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIENvbnN0cnVjdG9yS2luZCwgRnVuY3Rpb25QYXJzZVR5
cGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVl
Rm9ybWFsUGFyYW1ldGVyTGlzdCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImKTsK
ICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFy
RGVjbGFyYXRpb25Db250ZXh0IH07Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYsIGludCYg
ZGVjbGFyYXRpb25zLCBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJl
ZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQs
IEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJE
ZWNsYXJhdGlvbkxpc3RDb250ZXh0KTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIHBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50
JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRy
ZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0
LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFy
RGVjbGFyYXRpb25MaXN0Q29udGV4dCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgVHJlZUNvbnN0RGVjbExpc3QgcGFyc2VDb25zdERlY2xhcmF0aW9uTGlz
dChUcmVlQnVpbGRlciYpOwogCiAjaWYgRU5BQkxFKEVTNl9BUlJPV0ZVTkNUSU9OX1NZTlRBWCkK
QEAgLTgxNywxMCArODE3LDEwIEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKFRyZWVC
dWlsZGVyJik7CiAjZW5kaWYKIAotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gY3JlYXRlQmluZGluZ1BhdHRlcm4o
VHJlZUJ1aWxkZXImLCBEZWNvbnN0cnVjdGlvbktpbmQsIGNvbnN0IElkZW50aWZpZXImLCBpbnQg
ZGVwdGgsIEpTVG9rZW4pOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJf
SU5MSU5FIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGFyc2VEZWNvbnN0cnVjdGlvblBhdHRl
cm4oVHJlZUJ1aWxkZXImLCBEZWNvbnN0cnVjdGlvbktpbmQsIGludCBkZXB0aCA9IDApOwotICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZWNvbnN0cnVj
dGlvblBhdHRlcm4gdHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm5FeHByZXNzaW9uKFRyZWVC
dWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
VHJlZUV4cHJlc3Npb24gcGFyc2VEZWZhdWx0VmFsdWVGb3JEZWNvbnN0cnVjdGlvblBhdHRlcm4o
VHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lO
TElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ1BhdHRlcm4oVHJlZUJ1
aWxkZXImLCBEZXN0cnVjdHVyaW5nS2luZCwgY29uc3QgSWRlbnRpZmllciYsIGludCBkZXB0aCwg
SlNUb2tlbik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
VHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1
aWxkZXImLCBEZXN0cnVjdHVyaW5nS2luZCwgaW50IGRlcHRoID0gMCk7CisgICAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJu
IHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJik7Cisg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUV4cHJlc3Np
b24gcGFyc2VEZWZhdWx0VmFsdWVGb3JEZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVpbGRlciYp
OwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBw
YXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBGdW5j
dGlvblBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCShyZXZpc2lvbiAx
ODYxMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsMTIgKzc2LDEyIEBAIHB1YmxpYzoKICAgICAgICAgRnVuY3Rp
b25FeHByLCBDbGFzc0V4cHIsIFN1cGVyRXhwciwgQnJhY2tldEV4cHIsIERvdEV4cHIsIENhbGxF
eHByLAogICAgICAgICBOZXdFeHByLCBQcmVFeHByLCBQb3N0RXhwciwgVW5hcnlFeHByLCBCaW5h
cnlFeHByLAogICAgICAgICBDb25kaXRpb25hbEV4cHIsIEFzc2lnbm1lbnRFeHByLCBUeXBlb2ZF
eHByLAotICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVyYWxFeHByLCBCaW5kaW5nRGVjb25z
dHJ1Y3Rpb24sCi0gICAgICAgIEFycmF5RGVjb25zdHJ1Y3Rpb24sIE9iamVjdERlY29uc3RydWN0
aW9uLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKKyAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRl
cmFsRXhwciwgQmluZGluZ0Rlc3RydWN0dXJpbmcsCisgICAgICAgIEFycmF5RGVzdHJ1Y3R1cmlu
ZywgT2JqZWN0RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQsCiAgICAgICAgIEZ1
bmN0aW9uQm9keVJlc3VsdCwgU3ByZWFkRXhwciwgQXJndW1lbnRzUmVzdWx0LAogICAgICAgICBQ
cm9wZXJ0eUxpc3RSZXN1bHQsIEFyZ3VtZW50c0xpc3RSZXN1bHQsIEVsZW1lbnRzTGlzdFJlc3Vs
dCwKICAgICAgICAgU3RhdGVtZW50UmVzdWx0LCBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0LCBD
bGF1c2VSZXN1bHQsCi0gICAgICAgIENsYXVzZUxpc3RSZXN1bHQsIENvbW1hRXhwciwgRGVjb25z
dHJ1Y3RpbmdBc3NpZ25tZW50LAorICAgICAgICBDbGF1c2VMaXN0UmVzdWx0LCBDb21tYUV4cHIs
IERlc3RydWN0dXJpbmdBc3NpZ25tZW50LAogICAgICAgICBUZW1wbGF0ZVN0cmluZ1Jlc3VsdCwg
VGVtcGxhdGVTdHJpbmdMaXN0UmVzdWx0LAogICAgICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0
UmVzdWx0LCBUZW1wbGF0ZUV4cHIsCiAgICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwcgpAQCAtMTMw
LDkgKzEzMCw5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBDbGF1c2U7CiAgICAgdHlwZWRl
ZiBpbnQgQ29uc3REZWNsTGlzdDsKICAgICB0eXBlZGVmIGludCBCaW5hcnlPcGVyYW5kOwotICAg
IHR5cGVkZWYgaW50IERlY29uc3RydWN0aW9uUGF0dGVybjsKLSAgICB0eXBlZGVmIERlY29uc3Ry
dWN0aW9uUGF0dGVybiBBcnJheVBhdHRlcm47Ci0gICAgdHlwZWRlZiBEZWNvbnN0cnVjdGlvblBh
dHRlcm4gT2JqZWN0UGF0dGVybjsKKyAgICB0eXBlZGVmIGludCBEZXN0cnVjdHVyaW5nUGF0dGVy
bjsKKyAgICB0eXBlZGVmIERlc3RydWN0dXJpbmdQYXR0ZXJuIEFycmF5UGF0dGVybjsKKyAgICB0
eXBlZGVmIERlc3RydWN0dXJpbmdQYXR0ZXJuIE9iamVjdFBhdHRlcm47CiAKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBDcmVhdGVzQVNUID0gZmFsc2U7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgTmVl
ZHNGcmVlVmFyaWFibGVJbmZvID0gZmFsc2U7CkBAIC0yMjAsOCArMjIwLDggQEAgcHVibGljOgog
ICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVy
dHksIGludCkgeyByZXR1cm4gUHJvcGVydHlMaXN0UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUVs
ZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RSZXN1bHQ7IH0KICAgICBp
bnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gRWxlbWVudHNMaXN0
UmVzdWx0OyB9Ci0gICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuKSB7IHJldHVybiBGb3JtYWxQYXJhbWV0ZXJMaXN0UmVzdWx0OyB9Ci0gICAgaW50
IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoaW50LCBEZWNvbnN0cnVjdGlvblBhdHRlcm4pIHsg
cmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRm9ybWFs
UGFyYW1ldGVyTGlzdChEZXN0cnVjdHVyaW5nUGF0dGVybikgeyByZXR1cm4gRm9ybWFsUGFyYW1l
dGVyTGlzdFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGludCwg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4pIHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7
IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlKGludCwgaW50KSB7IHJldHVybiBDbGF1c2VSZXN1bHQ7
IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIENsYXVzZUxpc3RSZXN1
bHQ7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gQ2xhdXNl
TGlzdFJlc3VsdDsgfQpAQCAtMzAwLDIyICszMDAsMjIgQEAgcHVibGljOgogICAgIGNvbnN0IElk
ZW50aWZpZXIqIGdldE5hbWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVy
biBwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUoY29uc3Qg
UHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9CiAgICAg
Ym9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgY29uc3QgeyByZXR1cm4gZXhwciA9
PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZURlY29uc3RydWN0aW5nQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIEV4cHJlc3Npb25UeXBlKQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURlc3Ry
dWN0dXJpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgRXhwcmVzc2lv
blR5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Owor
ICAgICAgICByZXR1cm4gRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQ7CiAgICAgfQogICAgIAogICAg
IEFycmF5UGF0dGVybiBjcmVhdGVBcnJheVBhdHRlcm4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBBcnJheURlY29uc3RydWN0aW9uOworICAgICAgICByZXR1
cm4gQXJyYXlEZXN0cnVjdHVyaW5nOwogICAgIH0KICAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVy
blNraXBFbnRyeShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCiAgICAgewog
ICAgIH0KLSAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVybkVudHJ5KEFycmF5UGF0dGVybiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuLCBpbnQpCisgICAgdm9p
ZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIERlc3RydWN0dXJpbmdQYXR0ZXJuLCBpbnQpCiAgICAgewogICAgIH0KLSAgICB2b2lk
IGFwcGVuZEFycmF5UGF0dGVyblJlc3RFbnRyeShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIERlY29uc3RydWN0aW9uUGF0dGVybikKKyAgICB2b2lkIGFwcGVuZEFycmF5UGF0
dGVyblJlc3RFbnRyeShBcnJheVBhdHRlcm4sIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuKQogICAgIHsKICAgICB9CiAgICAgdm9pZCBmaW5pc2hBcnJheVBhdHRl
cm4oQXJyYXlQYXR0ZXJuLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mKQpAQCAtMzIzLDE5ICszMjMsMTkgQEAgcHVibGlj
OgogICAgIH0KICAgICBPYmplY3RQYXR0ZXJuIGNyZWF0ZU9iamVjdFBhdHRlcm4oY29uc3QgSlNU
b2tlbkxvY2F0aW9uJikKICAgICB7Ci0gICAgICAgIHJldHVybiBPYmplY3REZWNvbnN0cnVjdGlv
bjsKKyAgICAgICAgcmV0dXJuIE9iamVjdERlc3RydWN0dXJpbmc7CiAgICAgfQotICAgIHZvaWQg
YXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgYm9vbCwgY29uc3QgSWRlbnRpZmllciYsIERlY29uc3RydWN0aW9uUGF0dGVybiwgaW50
KQorICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KEFycmF5UGF0dGVybiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgYm9vbCwgY29uc3QgSWRlbnRpZmllciYsIERlc3RydWN0dXJpbmdQ
YXR0ZXJuLCBpbnQpCiAgICAgewogICAgIH0KLSAgICBEZWNvbnN0cnVjdGlvblBhdHRlcm4gY3Jl
YXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJikKKyAgICBE
ZXN0cnVjdHVyaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEJpbmRpbmdEZWNvbnN0cnVj
dGlvbjsKKyAgICAgICAgcmV0dXJuIEJpbmRpbmdEZXN0cnVjdHVyaW5nOwogICAgIH0KIAotICAg
IGJvb2wgaXNCaW5kaW5nTm9kZShEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybikKKyAgICBi
b29sIGlzQmluZGluZ05vZGUoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBwYXR0ZXJuID09IEJpbmRpbmdEZWNvbnN0cnVjdGlvbjsKKyAgICAgICAg
cmV0dXJuIHBhdHRlcm4gPT0gQmluZGluZ0Rlc3RydWN0dXJpbmc7CiAgICAgfQogCiAgICAgdm9p
ZCBzZXRFbmRPZmZzZXQoaW50LCBpbnQpIHsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rlc3RzL3N0cmVzcy9yZXNlcnZlZC13b3JkLXdpdGgtZXNjYXBlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVzZXJ2ZWQtd29yZC13aXRoLWVz
Y2FwZS5qcwkocmV2aXNpb24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9yZXNlcnZlZC13b3JkLXdpdGgtZXNjYXBlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw5ICszMiw5IEBAIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB2YXIgPSAyMDAKIHRl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB2XHUwMDYxciA9IDIwMDAwMDA7YCwgU3RyaW5n
LnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEg
dmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB2XHV7MDA2
MX1yID0gMjAwMDAwMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtl
eXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIAotdGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgdmFyIHt2YXJ9ID0gb2JqKWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3Jk
ICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHt2XHUwMDYxcn0gPSBv
YmpgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29u
c3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YHZhciB7dlx1ezAwNjF9cn0gPSBvYmpgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29y
ZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YHZhciB7dmFyfSA9IG9iailg
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0
dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgdmFyIHt2XHUwMDYxcn0gPSBvYmpgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXIn
LmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHt2XHV7MDA2MX1yfSA9IG9iamAs
IFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1
cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7CiAKIHRlc3RTeW50YXhFcnJvcihTdHJp
bmcucmF3YHZhciB7dmFyOnZhcn0gPSBvYmopYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3Zhcjp2XHUwMDYxcn0gPSBvYmpgLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJp
YWJsZSBuYW1lLmApOwpAQCAtNTYsOSArNTYsOSBAQCB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2BmdW5jdGlvbiBhKHZhCiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHZc
dTAwNjFyKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3
b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwogdGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgZnVuY3Rpb24gYSh2XHV7MDA2MX1yKSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVy
cm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5h
bWUuYCk7CiAKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3Zhcn0pIHsg
fWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25z
dHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgZnVuY3Rpb24gYSh7dlx1MDA2MXJ9KSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVy
cm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5
d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3Zc
dXswMDYxfXJ9KSB7IH1gLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJl
dmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3Zhcn0pIHsgfWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXgg
Zm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlv
biBhKHt2XHUwMDYxcn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
YWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0
ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHt2XHV7MDA2MX1yfSkgeyB9YCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVy
aW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKIAogdGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZhcn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwogdGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyOnZcdTAwNjFyfSkgeyB9YCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXIn
IGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKQEAgLTc2LDkgKzc2LDkgQEAgdGVzdFN5bnRheEVycm9y
KFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEodgogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1
bmN0aW9uIGEodlx1MDA2MXIpIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwogdGVzdFN5
bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEodlx1ezAwNjF9cikgeyB9KWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFz
IGEgdmFyaWFibGUgbmFtZS5gKTsKIAotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0
aW9uIGEoe3Zhcn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFi
YnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHt2XHUwMDYxcn0pIHsgfSlgLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0
aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YChmdW5jdGlvbiBhKHt2XHV7MDA2MX1yfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3
b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3Zh
cn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVk
IGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3ZcdTAwNjFyfSkgeyB9KWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXgg
Zm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rp
b24gYSh7dlx1ezAwNjF9cn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmAp
OwogCiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7dmFyOnZhcn0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXIn
IGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5j
dGlvbiBhKHt2YXI6dlx1MDA2MXJ9KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fu
bm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKQEAg
LTg4LDkgKzg4LDkgQEAgdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoWwog
dGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3ZcdTAwNjFyXSkgeyB9KWAs
IFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFy
JyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVu
Y3Rpb24gYShbdlx1ezAwNjF9cl0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiAK
LXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dmFyfV0pIHsgfSlgLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0
aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YChmdW5jdGlvbiBhKFt7dlx1MDA2MXJ9XSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3
b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2
XHV7MDA2MX1yfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFi
YnJldmlhdGVkIGRlY29uc3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dmFyfV0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcg
c3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdg
KGZ1bmN0aW9uIGEoW3t2XHUwMDYxcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAn
dmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7dlx1ezAw
NjF9cn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZp
YXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKIAogdGVzdFN5
bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2YXI6dmFyfV0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFy
aWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFt7
dmFyOnZcdTAwNjFyfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNl
IHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwpAQCAtMTAwLDkg
KzEwMCw5IEBAIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFsKIHRlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKFtbdlx1MDA2MXJdXSkgeyB9KWAsIFN0
cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBh
cyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rp
b24gYShbW3ZcdXswMDYxfXJdXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIAot
dGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzoge3Zhcn19KSB7
IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNv
bnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Ci10ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dlx1MDA2MXJ9fSkgeyB9KWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24g
c3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdg
KGZ1bmN0aW9uIGEoeyBoZWxsbzoge3ZcdXswMDYxfXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3lu
dGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZv
ciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9u
IGEoeyBoZWxsbzoge3Zhcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90
IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5g
KTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2XHUw
MDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZp
YXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2XHV7MDA2MX1yfX0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3Ry
dWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwogCiB0ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dmFyOnZhcn19KSB7IH0pYCwgU3RyaW5n
LnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlh
YmxlIG5hbWUuYCk7CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhl
bGxvOiB7dmFyOnZcdTAwNjFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwpAQCAt
MTEyLDkgKzExMiw5IEBAIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsK
IHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IFt2XHUwMDYx
cl19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29y
ZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJp
bmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IFt2XHV7MDA2MX1yXX0pIHsgfSlgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHV7MDA2MX1yJyBhcyBh
IHZhcmlhYmxlIG5hbWUuYCk7CiAKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlv
biBhKHsgMDoge3Zhcn0gfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmAp
OwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyAwOiB7dlx1MDA2MXJ9
fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQg
ZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyAwOiB7dlx1ezAwNjF9cn19KSB7IH0pYCwgU3Ry
aW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlv
biBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AoZnVuY3Rpb24gYSh7IDA6IHt2YXJ9IH0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3Jk
ICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyAwOiB7
dlx1MDA2MXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJi
cmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2XHV7MDA2MX1yfX0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3Ry
dWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwogCiB0ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2YXI6dmFyfX0pIHsgfSlgLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFibGUg
bmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3Zh
cjp2XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0
aGUga2V5d29yZCAndlx1MDA2MXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVzdC1lbGVtZW50cy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3Jlc3QtZWxlbWVudHMuanMJ
KHJldmlzaW9uIDE4NjEwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
cmVzdC1lbGVtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtOTUsMTkgKzk1LDE5IEBAIGZ1bmN0
aW9uIHRlc3RTeW50YXhFcnJvcihzY3JpcHQsIG1lc3NhZ2UKICAgICBzaG91bGRCZShKU09OLnN0
cmluZ2lmeShjKSwgU3RyaW5nLnJhd2BbXWApOwogfSgiQyIpKTsKIAotdGVzdFN5bnRheEVycm9y
KFN0cmluZy5yYXdgdmFyIFthLCAuLi5iLCBjXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5n
IGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci10ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2B2YXIgW2EsIC4uLmIsXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5n
IGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci10ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2B2YXIgW2EsIC4uLmIsLF0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2lu
ZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuLmApOwotdGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgdmFyIFthLCAuLi5iID0gMjBdID0gMjBgLCBTdHJpbmcucmF3YFN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xs
b3dpbmcgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKLXRlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YHZhciBbYSwgLi4uW2IsIGNdXSA9IDIwYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9y
IGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci10ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2B2YXIgW2EsIC4uLnsgYiwgYyB9XSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEg
cmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci0KLXRlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLmIsIGNdKSB7IH0pYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScg
Zm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci10ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gKFthLCAuLi5iLF0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9z
aW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5g
KTsKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLmIsLF0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0
ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24g
cGF0dGVybi5gKTsKLXRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4u
LmIgPSAyMCwsXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9r
ZW4gJz0nLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBk
ZWNvbnN0cnVjdGlvbiBwYXR0ZXJuLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1
bmN0aW9uIChbYSwgLi4uW2IsIGNdXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgdG9rZW4gJ10nLiBFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxlbWVu
dCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdg
KGZ1bmN0aW9uIChbYSwgLi4ueyBiLCBjIH1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBl
bGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2B2YXIgW2EsIC4uLmIsIGNdID0gMjBgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4
cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSByZXN0
IGVsZW1lbnQgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgdmFyIFthLCAuLi5iLF0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3Qg
ZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2B2YXIgW2EsIC4uLmIsLF0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3Qg
ZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2B2YXIgW2EsIC4uLmIgPSAyMF0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJl
c3QgZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2B2YXIgW2EsIC4uLltiLCBjXV0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgdG9rZW4gJ10nLiBFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxl
bWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJh
d2B2YXIgW2EsIC4uLnsgYiwgYyB9XSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBlbGVtZW50
IGRlc3RydWN0dXJpbmcgcGF0dGVybi5gKTsKKwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdg
KGZ1bmN0aW9uIChbYSwgLi4uYiwgY10pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSBy
ZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4uYixdKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhF
cnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93
aW5nIGEgcmVzdCBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhF
cnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLmIsLF0pIHsgfSlgLCBTdHJpbmcucmF3
YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICdd
JyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLmApOwordGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4uYiA9IDIwLCxdKSB7IH0p
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVk
IGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0
dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLlti
LCBjXV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICdd
Jy4gRXhwZWN0ZWQgaWRlbnRpZmllciBmb3IgYSByZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1cmluZyBw
YXR0ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4u
eyBiLCBjIH1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBlbGVtZW50IGRlc3RydWN0dXJp
bmcgcGF0dGVybi5gKTsKIAogc2hvdWxkVGhyb3coZnVuY3Rpb24gKCkgewogICAgIFthLCAuLi5i
LCBjXSA9IDIwOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MTk5KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTUtMDctMDEgIFNhYW0g
YmFyYXRpICA8c2FhbWJhcmF0aTFAZ21haWwuY29tPgorCisgICAgICAgIFJlbmFtZSAiRGVjb25z
dHJ1Y3Rpb24iIHRvICJEZXN0cnVjdHVyaW5nIiB0aHJvdWdob3V0IEpTQworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MTAwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kZWNvbnN0cnVjdGluZy1w
YXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIGpzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIGpzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50
eHQ6CisgICAgICAgICoganMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2Nh
bHMtZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9qcy9kZWNvbnN0cnVjdGlu
Zy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0LgorICAgICAgICAqIGpz
L2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0bWw6IENvcGllZCBm
cm9tIExheW91dFRlc3RzL2pzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxv
Y2Fscy5odG1sLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVy
cy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAg
KiBqcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5j
dGlvbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1w
YXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24tZXhwZWN0ZWQudHh0OiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJp
ZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQuCisgICAgICAgICoganMvcmVncmVzcy9kZXN0
cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sOiBDb3BpZWQg
ZnJvbSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3Zl
cnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRl
c3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5qczog
UmVtb3ZlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5n
LXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5qczogQ29waWVkIGZyb20gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1v
dmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpzLgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9kZWNv
bnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuanM6IFJlbW92ZWQuCisgICAg
ICAgICoganMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC5qczoKKyAgICAg
ICAgKHRlc3REZXN0cnVjdHVyZWRBcmdzKToKKyAgICAgICAgKHRlc3REZXN0cnVjdHVyZWRBcmdM
ZW5ndGgpOgorICAgICAgICAodGVzdERlY29uc3RydWN0QXJncyk6IERlbGV0ZWQuCisgICAgICAg
ICh0ZXN0RGVjb25zdHJ1Y3RBcmdMZW5ndGgpOiBEZWxldGVkLgorICAgICAgICAqIGpzL3Njcmlw
dC10ZXN0cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qczogQ29w
aWVkIGZyb20gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFt
ZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcy4KKyAgICAgICAgKGRlc2NyaXB0aW9uLnZhbHVlLnN0
cmluZ19hcHBlYXJlZF9oZXJlLnJlYWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIpOgorICAgICAgICAo
b3ZlcndyaXRlRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKToKKyAgICAgICAgKHJlYWRDYXB0dXJlZERl
c3RydWN0dXJlZFBhcmFtZXRlcik6CisgICAgICAgIChvdmVyd3JpdGVDYXB0dXJlZERlc3RydWN0
dXJlZFBhcmFtZXRlcik6CisgICAgICAgIChkZXNjcmlwdGlvbi52YWx1ZS5zdHJpbmdfYXBwZWFy
ZWRfaGVyZS5yZWFkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcik6IERlbGV0ZWQuCisgICAgICAgIChv
dmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKTogRGVsZXRlZC4KKyAgICAgICAgKHJlYWRD
YXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIpOiBEZWxldGVkLgorICAgICAgICAob3Zlcndy
aXRlQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKTogRGVsZXRlZC4KKwogMjAxNS0wNy0w
MSAgTWF0dGhldyBEYWl0ZXIgIDxtZGFpdGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBUdXJuIG9m
ZiBtZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sIHRlc3QKSW5kZXg6IExheW91dFRlc3Rz
L2pzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVy
cy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2MTA0KQorKysgTGF5
b3V0VGVzdHMvanMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMCwwIEBACi1UaGlzIHRlc3RzIHRv
IGVuc3VyZSB0aGF0IGRkZWNvbnN0cnVjdGluZyBwYXJhbWV0ZXJzIGJlaGF2ZSBsaWtlIHJlZ3Vs
YXIgbG9jYWxzCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHJlYWREZWNv
bnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkgaXMgJ2lubmVyJwotUEFTUyBvdmVyd3JpdGVE
ZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyB2YWx1ZTsgaXMgJ291dGVyJwotUEFT
UyByZWFkQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkgaXMgJ2lubmVy
JwotUEFTUyBvdmVyd3JpdGVDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWyd1bnVzZWQn
XSk7IGlzICdpbm5lcm1vc3QnCi1QQVNTIHZhbHVlIGlzICdvdXRlcicKLVBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1i
ZS1sb2NhbHMuaHRtbAkocmV2aXNpb24gMTg2MTA0KQorKysgTGF5b3V0VGVzdHMvanMvZGVjb25z
dHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTAgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5n
LWFzc2lnbm1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rl
c3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjEwNCkKKysr
IExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdubWVudC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTc4LDkgKzc4LDkgQEAgUEFTUyAoZnVuY3Rpb24gKHsnYSc6YSwnYic6
Yn0pIHsgcmV0dXJuIAogUEFTUyAoeydhJzphLCdiJzpifT1hbk9iamVjdCk7IHZhciByPWErYjsg
ciBpcyAnMTInCiBQQVNTIGErYiBpcyAnMTEyMicKIFBBU1MgYStiIGlzICcyMjExJwotUEFTUyB0
ZXN0RGVjb25zdHJ1Y3RBcmdzKCcxJywgJzInKSBpcyAnMTInCi1QQVNTIHRlc3REZWNvbnN0cnVj
dEFyZ0xlbmd0aCgnMScsICcyJykgaXMgMgotUEFTUyB0ZXN0RGVjb25zdHJ1Y3RBcmdzKCcyJykg
aXMgJzJ1bmRlZmluZWQnCitQQVNTIHRlc3REZXN0cnVjdHVyZWRBcmdzKCcxJywgJzInKSBpcyAn
MTInCitQQVNTIHRlc3REZXN0cnVjdHVyZWRBcmdMZW5ndGgoJzEnLCAnMicpIGlzIDIKK1BBU1Mg
dGVzdERlc3RydWN0dXJlZEFyZ3MoJzInKSBpcyAnMnVuZGVmaW5lZCcKIFBBU1MgYSBpcyAxCiBQ
QVNTIGIgaXMgMgogUEFTUyBjIGlzIDMKSW5kZXg6IExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJp
bmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fs
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjEwNCkJKGZyb20gTGF5b3V0VGVzdHMvanMvZGVj
b25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dDoxODYx
MDQpCisrKyBMYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJl
LWxvY2Fscy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNCBAQAorVGhp
cyB0ZXN0cyB0byBlbnN1cmUgdGhhdCBkZGVjb25zdHJ1Y3RpbmcgcGFyYW1ldGVycyBiZWhhdmUg
bGlrZSByZWd1bGFyIGxvY2FscworCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyByZWFkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pIGlzICdpbm5lcicKK1BBU1Mg
b3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgdmFsdWU7IGlzICdv
dXRlcicKK1BBU1MgcmVhZENhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10p
IGlzICdpbm5lcicKK1BBU1Mgb3ZlcndyaXRlQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVy
KFsndW51c2VkJ10pOyBpcyAnaW5uZXJtb3N0JworUEFTUyB2YWx1ZSBpcyAnb3V0ZXInCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5
b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctcGFy
YW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQorKysg
TGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICsxLDEyIEBACi1UaGlzIHRlc3Rz
IHRvIGVuc3VyZSB0aGF0IGRkZWNvbnN0cnVjdGluZyBwYXJhbWV0ZXJzIGJlaGF2ZSBsaWtlIHJl
Z3VsYXIgbG9jYWxzCitUaGlzIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGRlc3RydWN0dXJpbmcgcGFy
YW1ldGVycyBiZWhhdmUgbGlrZSByZWd1bGFyIGxvY2FscwogCiBPbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCiAKIAotUEFTUyByZWFkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pIGlz
ICdpbm5lcicKLVBBU1Mgb3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCdd
KTsgdmFsdWU7IGlzICdvdXRlcicKLVBBU1MgcmVhZENhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFt
ZXRlcihbJ2lubmVyJ10pIGlzICdpbm5lcicKLVBBU1Mgb3ZlcndyaXRlQ2FwdHVyZWREZWNvbnN0
cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyBpcyAnaW5uZXJtb3N0JworUEFTUyByZWFkRGVz
dHJ1Y3R1cmVkUGFyYW1ldGVyKFsnaW5uZXInXSkgaXMgJ2lubmVyJworUEFTUyBvdmVyd3JpdGVE
ZXN0cnVjdHVyZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7IHZhbHVlOyBpcyAnb3V0ZXInCitQQVNT
IHJlYWRDYXB0dXJlZERlc3RydWN0dXJlZFBhcmFtZXRlcihbJ2lubmVyJ10pIGlzICdpbm5lcicK
K1BBU1Mgb3ZlcndyaXRlQ2FwdHVyZWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7
IGlzICdpbm5lcm1vc3QnCiBQQVNTIHZhbHVlIGlzICdvdXRlcicKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIApJbmRleDogTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJh
bWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9q
cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sCShyZXZpc2lv
biAxODYxMDQpCShmcm9tIExheW91dFRlc3RzL2pzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMt
c2hvdWxkLWJlLWxvY2Fscy5odG1sOjE4NjEwNCkKKysrIExheW91dFRlc3RzL2pzL2Rlc3RydWN0
dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRl
c3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBh
cmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0bWwJKHdvcmtp
bmcgY29weSkKKysrIExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91
bGQtYmUtbG9jYWxzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJz
LXNob3VsZC1iZS1sb2NhbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0
aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJz
LW92ZXJyaWRkZW4tYnktZnVuY3Rpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODYxMDQpCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJp
ZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAs
MCBAQAotSlNSZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1m
dW5jdGlvbgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBubyBleGNlcHRp
b24gdGhyb3duCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0
ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5j
dGlvbi5odG1sCShyZXZpc2lvbiAxODYxMDQpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rl
Y29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ic2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1i
eS1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1
bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMTg2MTA0KQkoZnJvbSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29u
c3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQ6
MTg2MTA0KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRl
cnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJp
ZGRlbi1ieS1mdW5jdGlvbgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBu
byBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5n
LXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3Zl
cnJpZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnkt
ZnVuY3Rpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotSlNS
ZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbgor
SlNSZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9u
CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApJbmRleDogTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1wYXJh
bWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24uaHRtbAkocmV2aXNpb24gMTg2MTA0KQkoZnJv
bSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJp
ZGRlbi1ieS1mdW5jdGlvbi5odG1sOjE4NjEwNCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
ZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24uaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InNjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4t
YnktZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1m
dW5jdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1
Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24uaHRtbAkod29ya2luZyBj
b3B5KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMt
b3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDcgKzUsNyBA
QAogPC9oZWFkPgogPGJvZHk+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3Mt
cHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3Rp
bmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4t
YnktZnVuY3Rpb24uanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9y
ZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVu
LWJ5LWZ1bmN0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlv
bi5qcwkocmV2aXNpb24gMTg2MTA0KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDExICswLDAgQEAKLWZ1bmN0aW9uIGYoKSB7IHJldHVybiA0
MDsgfQotZnVuY3Rpb24gdGVzdCh7YXJnfSkgewotICAgIGZ1bmN0aW9uIGFyZygpIHsgcmV0dXJu
IDQxOyB9Ci0gICAgcmV0dXJuIGFyZzsKLX0KLW5vSW5saW5lKHRlc3QpOwotCi1mb3IgKHZhciBp
ID0gMDsgaSA8IDEwMDA7IGkrKykgewotICAgIGlmICh0ZXN0KHthcmc6IGZ9KSgpICE9PSA0MSkK
LSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJiYWQgdmFsdWUiKTsKLX0KSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVy
cmlkZGVuLWJ5LWZ1bmN0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1
bmN0aW9uLmpzCShyZXZpc2lvbiAxODYxMDQpCShmcm9tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5j
dGlvbi5qczoxODYxMDQpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9k
ZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDExIEBACitmdW5jdGlvbiBmKCkgeyByZXR1cm4gNDA7IH0KK2Z1
bmN0aW9uIHRlc3Qoe2FyZ30pIHsKKyAgICBmdW5jdGlvbiBhcmcoKSB7IHJldHVybiA0MTsgfQor
ICAgIHJldHVybiBhcmc7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxMDAwOyBpKyspIHsKKyAgICBpZiAodGVzdCh7YXJnOiBmfSkoKSAhPT0gNDEpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcigiYmFkIHZhbHVlIik7Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGlu
Zy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuanMJKHJldmlzaW9uIDE4NjEwNCkKKysrIExh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3Vs
ZC1iZS1sb2NhbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzUgKzAsMCBAQAotZGVzY3JpcHRp
b24oIlRoaXMgdGVzdHMgdG8gZW5zdXJlIHRoYXQgZGRlY29uc3RydWN0aW5nIHBhcmFtZXRlcnMg
YmVoYXZlIGxpa2UgcmVndWxhciBsb2NhbHMiKQotCi12YXIgdmFsdWU9Im91dGVyIgotZnVuY3Rp
b24gcmVhZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgewotICAgIHJldHVybiB2YWx1
ZTsKLX0KLQotZnVuY3Rpb24gb3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVd
KSB7Ci0JdmFsdWUgPSAiaW5uZXIiCi19Ci0KLWZ1bmN0aW9uIHJlYWRDYXB0dXJlZERlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgewotCXJldHVybiAoZnVuY3Rpb24gKCkgewotCSAgICBy
ZXR1cm4gdmFsdWU7Ci0JfSkoKQotfQotCi1mdW5jdGlvbiBvdmVyd3JpdGVDYXB0dXJlZERlY29u
c3RydWN0ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgewotCShmdW5jdGlvbiAoKSB7Ci0JICAgIHZhbHVl
ID0gImlubmVybW9zdCI7Ci0JfSkoKQotCXJldHVybiB2YWx1ZQotfQotCi1zaG91bGRCZSgicmVh
ZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKSIsICInaW5uZXInIikKLW92ZXJ3cml0
ZURlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKQotCi1zaG91bGRCZSgib3ZlcndyaXRl
RGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgdmFsdWU7IiwgIidvdXRlciciKQot
Ci1zaG91bGRCZSgicmVhZENhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10p
IiwgIidpbm5lciciKQotb3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10p
Ci0KLXNob3VsZEJlKCJvdmVyd3JpdGVDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWyd1
bnVzZWQnXSk7IiwgIidpbm5lcm1vc3QnIikKLXNob3VsZEJlKCJ2YWx1ZSIsICInb3V0ZXInIikK
LQpJbmRleDogTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctYXNzaWdu
bWVudC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1
Y3R1cmluZy1hc3NpZ25tZW50LmpzCShyZXZpc2lvbiAxODYxMDQpCisrKyBMYXlvdXRUZXN0cy9q
cy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSwyMCArMzUsMjAgQEAgdmFyIFthLGJdID0gWycxMScsJzIyJ10KIHNob3VsZEJlKCJh
K2IiLCAiJzExMjInIikKIHZhciBbYixhXSA9IFthLGJdOwogc2hvdWxkQmUoImErYiIsICInMjIx
MSciKQotZnVuY3Rpb24gdGVzdERlY29uc3RydWN0QXJncygpIHsKK2Z1bmN0aW9uIHRlc3REZXN0
cnVjdHVyZWRBcmdzKCkgewogICAgIHZhciBbYSxiXSA9IGFyZ3VtZW50czsKICAgICByZXR1cm4g
YStiOwogfQogCi1mdW5jdGlvbiB0ZXN0RGVjb25zdHJ1Y3RBcmdMZW5ndGgoKSB7CitmdW5jdGlv
biB0ZXN0RGVzdHJ1Y3R1cmVkQXJnTGVuZ3RoKCkgewogICAgIHZhciB7bGVuZ3RofSA9IGFyZ3Vt
ZW50czsKICAgICByZXR1cm4gbGVuZ3RoOwogfQotc2hvdWxkQmUoInRlc3REZWNvbnN0cnVjdEFy
Z3MoJzEnLCAnMicpIiwgIicxMiciKTsKLXNob3VsZEJlKCJ0ZXN0RGVjb25zdHJ1Y3RBcmdMZW5n
dGgoJzEnLCAnMicpIiwgIjIiKTsKK3Nob3VsZEJlKCJ0ZXN0RGVzdHJ1Y3R1cmVkQXJncygnMScs
ICcyJykiLCAiJzEyJyIpOworc2hvdWxkQmUoInRlc3REZXN0cnVjdHVyZWRBcmdMZW5ndGgoJzEn
LCAnMicpIiwgIjIiKTsKIHZhciB0ZXh0ID0gJzMnOwogT2JqZWN0LnByb3RvdHlwZS5fX2RlZmlu
ZUdldHRlcl9fKDEsIGZ1bmN0aW9uKCl7IHZhciByID0gdGV4dDsgdGV4dCA9ICJmYWlsIjsgcmV0
dXJuIHI7IH0pCi1zaG91bGRCZSgidGVzdERlY29uc3RydWN0QXJncygnMicpIiwgIicydW5kZWZp
bmVkJyIpOworc2hvdWxkQmUoInRlc3REZXN0cnVjdHVyZWRBcmdzKCcyJykiLCAiJzJ1bmRlZmlu
ZWQnIik7CiAKIHZhciBbYSxiXSA9IFsxLDJdLCBbYyxkXSA9IFszLDRdCiAKSW5kZXg6IExheW91
dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJl
LWxvY2Fscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVz
dHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuanMJKHJldmlzaW9uIDE4NjEw
NCkJKGZyb20gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFt
ZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qczoxODYxMDQpCisrKyBMYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdG8g
ZW5zdXJlIHRoYXQgZGRlY29uc3RydWN0aW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2UgcmVndWxh
ciBsb2NhbHMiKQorCit2YXIgdmFsdWU9Im91dGVyIgorZnVuY3Rpb24gcmVhZERlY29uc3RydWN0
ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgeworICAgIHJldHVybiB2YWx1ZTsKK30KKworZnVuY3Rpb24g
b3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7CisJdmFsdWUgPSAiaW5u
ZXIiCit9CisKK2Z1bmN0aW9uIHJlYWRDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoW3Zh
bHVlXSkgeworCXJldHVybiAoZnVuY3Rpb24gKCkgeworCSAgICByZXR1cm4gdmFsdWU7CisJfSko
KQorfQorCitmdW5jdGlvbiBvdmVyd3JpdGVDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIo
W3ZhbHVlXSkgeworCShmdW5jdGlvbiAoKSB7CisJICAgIHZhbHVlID0gImlubmVybW9zdCI7CisJ
fSkoKQorCXJldHVybiB2YWx1ZQorfQorCitzaG91bGRCZSgicmVhZERlY29uc3RydWN0ZWRQYXJh
bWV0ZXIoWydpbm5lciddKSIsICInaW5uZXInIikKK292ZXJ3cml0ZURlY29uc3RydWN0ZWRQYXJh
bWV0ZXIoWydpbm5lciddKQorCitzaG91bGRCZSgib3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFt
ZXRlcihbJ3VudXNlZCddKTsgdmFsdWU7IiwgIidvdXRlciciKQorCitzaG91bGRCZSgicmVhZENh
cHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pIiwgIidpbm5lciciKQorb3Zl
cndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pCisKK3Nob3VsZEJlKCJvdmVy
d3JpdGVDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7IiwgIidpbm5l
cm1vc3QnIikKK3Nob3VsZEJlKCJ2YWx1ZSIsICInb3V0ZXInIikKKwpJbmRleDogTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9j
YWxzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVj
dHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcwkod29ya2luZyBjb3B5KQorKysg
TGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91
bGQtYmUtbG9jYWxzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM1ICsxLDM1IEBACi1kZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0byBlbnN1cmUgdGhhdCBkZGVjb25zdHJ1Y3RpbmcgcGFyYW1ldGVy
cyBiZWhhdmUgbGlrZSByZWd1bGFyIGxvY2FscyIpCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0
byBlbnN1cmUgdGhhdCBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2UgcmVndWxh
ciBsb2NhbHMiKQogCiB2YXIgdmFsdWU9Im91dGVyIgotZnVuY3Rpb24gcmVhZERlY29uc3RydWN0
ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgeworZnVuY3Rpb24gcmVhZERlc3RydWN0dXJlZFBhcmFtZXRl
cihbdmFsdWVdKSB7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1mdW5jdGlvbiBvdmVyd3JpdGVE
ZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKK2Z1bmN0aW9uIG92ZXJ3cml0ZURlc3Ry
dWN0dXJlZFBhcmFtZXRlcihbdmFsdWVdKSB7CiAJdmFsdWUgPSAiaW5uZXIiCiB9CiAKLWZ1bmN0
aW9uIHJlYWRDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgeworZnVuY3Rp
b24gcmVhZENhcHR1cmVkRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKIAlyZXR1cm4g
KGZ1bmN0aW9uICgpIHsKIAkgICAgcmV0dXJuIHZhbHVlOwogCX0pKCkKIH0KIAotZnVuY3Rpb24g
b3ZlcndyaXRlQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKK2Z1bmN0
aW9uIG92ZXJ3cml0ZUNhcHR1cmVkRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKIAko
ZnVuY3Rpb24gKCkgewogCSAgICB2YWx1ZSA9ICJpbm5lcm1vc3QiOwogCX0pKCkKIAlyZXR1cm4g
dmFsdWUKIH0KIAotc2hvdWxkQmUoInJlYWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXIn
XSkiLCAiJ2lubmVyJyIpCi1vdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXIn
XSkKK3Nob3VsZEJlKCJyZWFkRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFsnaW5uZXInXSkiLCAiJ2lu
bmVyJyIpCitvdmVyd3JpdGVEZXN0cnVjdHVyZWRQYXJhbWV0ZXIoWydpbm5lciddKQogCi1zaG91
bGRCZSgib3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgdmFsdWU7
IiwgIidvdXRlciciKQorc2hvdWxkQmUoIm92ZXJ3cml0ZURlc3RydWN0dXJlZFBhcmFtZXRlcihb
J3VudXNlZCddKTsgdmFsdWU7IiwgIidvdXRlciciKQogCi1zaG91bGRCZSgicmVhZENhcHR1cmVk
RGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pIiwgIidpbm5lciciKQotb3ZlcndyaXRl
RGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pCitzaG91bGRCZSgicmVhZENhcHR1cmVk
RGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFsnaW5uZXInXSkiLCAiJ2lubmVyJyIpCitvdmVyd3JpdGVE
ZXN0cnVjdHVyZWRQYXJhbWV0ZXIoWydpbm5lciddKQogCi1zaG91bGRCZSgib3ZlcndyaXRlQ2Fw
dHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyIsICInaW5uZXJtb3N0JyIp
CitzaG91bGRCZSgib3ZlcndyaXRlQ2FwdHVyZWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIoWyd1bnVz
ZWQnXSk7IiwgIidpbm5lcm1vc3QnIikKIHNob3VsZEJlKCJ2YWx1ZSIsICInb3V0ZXInIikKIAo=
</data>
<flag name="review"
          id="281054"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256034</attachid>
            <date>2015-07-02 14:05:37 -0700</date>
            <delta_ts>2015-07-02 16:54:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>94840</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2MTk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExNSBA
QAorMjAxNS0wNy0wMSAgU2FhbSBiYXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmVuYW1lICJEZWNvbnN0cnVjdGlvbiIgdG8gIkRlc3RydWN0dXJpbmciIHRocm91Z2hv
dXQgSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDYxMDAKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICBJdCBpcyBn
b29kIHRvIHVzZSB0aGUgc2FtZSBuYW1pbmcgY29udmVudGlvbnMgYXMgdGhlIEVTNiAKKyAgICAg
ICAgc3BlYyBiZWNhdXNlIGl0IGlzIHRoZSBkZSBmYWN0byB3YXkgb2Ygc3BlYWtpbmcgYWJvdXQg
dGhlc2UgCisgICAgICAgIGxhbmd1YWdlIGZlYXR1cmVzLiBUaGlzIGFsc28gaGFzIHRoZSBiZW5l
Zml0IG9mIGltcHJvdmluZyBKU0MncworICAgICAgICBoYWNrYWJpbGl0eSBiZWNhdXNlIGl0IGlt
cHJvdmVzIGNvZGUgcmVhZGFiaWxpdHkgZm9yIG5ld2NvbWVycyAKKyAgICAgICAgdG8gSlNDIG9y
IG5ld2NvbWVycyB0byB0aGlzIHBhcnQgb2YgdGhlIGNvZGUgYmFzZS4KKworICAgICAgICAqIGJ5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpC
eXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0
aWFsaXplTmV4dFBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjp2
aXNpYmxlTmFtZUZvclBhcmFtZXRlcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZWdpc3RlckZv
cik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChK
U0M6OkZvckluTm9kZTo6dHJ5R2V0Qm91bmRMb2NhbCk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdExvb3BIZWFkZXIpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6OmVtaXRCeXRlY29k
ZSk6CisgICAgICAgIChKU0M6OkNsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1cmluZ1BhdHRlcm5O
b2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6Y29sbGVjdEJvdW5kSWRlbnRp
ZmllcnMpOgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGlvblBhdHRlcm5O
b2RlOjp+RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogcGFy
c2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRWxlbWVu
dExpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ2xhdXNlTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvck9mTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmlzQmluZGluZ05vZGUpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjppc1Jlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVEZXN0cnVjdHVyaW5nQXNzaWdubWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFycmF5UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmFwcGVuZEFycmF5UGF0dGVybkVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBw
ZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlT2JqZWN0UGF0dGVybik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZE9iamVj
dFBhdHRlcm5FbnRyeSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURlY29uc3Ry
dWN0aW5nQXNzaWdubWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6
OlBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUpOgorICAgICAgICAoSlNDOjpGb3JPZk5vZGU6
OkZvck9mTm9kZSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTo6RGVz
dHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6
QXJyYXlQYXR0ZXJuTm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5UGF0dGVybk5vZGU6OmNyZWF0
ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdFBhdHRlcm5Ob2RlOjpPYmplY3RQYXR0ZXJuTm9kZSk6
CisgICAgICAgIChKU0M6OkJpbmRpbmdOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpCaW5k
aW5nTm9kZTo6QmluZGluZ05vZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nQXNzaWdu
bWVudE5vZGU6OkRlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkRl
Y29uc3RydWN0aW9uUGF0dGVybk5vZGU6OkRlY29uc3RydWN0aW9uUGF0dGVybk5vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlOjpEZWNvbnN0
cnVjdGluZ0Fzc2lnbm1lbnROb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
Y3BwOgorICAgICAgICAoSlNDOjpGdW5jdGlvblBhcmFtZXRlcnM6OmNyZWF0ZSk6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc1Jlc29s
dmVOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzQnJhY2tldEFjY2Vzc29y
Tm9kZSk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0RvdEFjY2Vzc29yTm9kZSk6
CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0Rlc3RydWN0dXJpbmdOb2RlKToKKyAg
ICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OmlzRnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpT
Qzo6RXhwcmVzc2lvbk5vZGU6OmlzQ29tbWFOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVzc2lv
bk5vZGU6OmlzU2ltcGxlQXJyYXkpOgorICAgICAgICAoSlNDOjpQYXJhbWV0ZXJOb2RlOjpwYXR0
ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6bmV4dFBhcmFtKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25QYXJhbWV0ZXJzOjpzaXplKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Q
YXJhbWV0ZXJzOjphdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uUGFyYW1ldGVyczo6cGF0dGVy
bnMpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6OmlzQmluZGluZ05v
ZGUpOgorICAgICAgICAoSlNDOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU6OmVtaXREaXJlY3RC
aW5kaW5nKToKKyAgICAgICAgKEpTQzo6QXJyYXlQYXR0ZXJuTm9kZTo6YXBwZW5kSW5kZXgpOgor
ICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YXBwZW5kRW50cnkpOgorICAgICAgICAo
SlNDOjpCaW5kaW5nTm9kZTo6Ym91bmRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkRlc3RydWN0
dXJpbmdBc3NpZ25tZW50Tm9kZTo6YmluZGluZ3MpOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9u
Tm9kZTo6aXNEZWNvbnN0cnVjdGlvbk5vZGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlOjppc0JpbmRpbmdOb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6ZW1pdERpcmVjdEJpbmRpbmcpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlOjpiaW5kaW5n
cyk6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZXN0cnVjdHVyaW5n
UGF0dGVybik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlZmF1bHRW
YWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnRyeVBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuRXhwcmVzc2lvbik6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlY29uc3RydWN0
aW9uUGF0dGVybik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZURlZmF1bHRWYWx1ZUZvckRlY29uc3RydWN0aW9uUGF0dGVybik6IERlbGV0ZWQuCisgICAg
ICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjppc0V2YWxOb2RlKToKKyAgICAg
ICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVQcm9wZXJ0eUxpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVFbGVtZW50TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvcm1h
bFBhcmFtZXRlckxpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGF1
c2UpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDbGF1c2VMaXN0KToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6b3BlcmF0b3JTdGFja1BvcCk6CisgICAgICAgICog
dGVzdHMvc3RyZXNzL3Jlc2VydmVkLXdvcmQtd2l0aC1lc2NhcGUuanM6CisgICAgICAgICogdGVz
dHMvc3RyZXNzL3Jlc3QtZWxlbWVudHMuanM6CisKIDIwMTUtMDctMDEgIERlYW4gSmFja3NvbiAg
PGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgdGhlIGV4cGVyaW1lbnRhbCBXZWJH
TDIgaW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxODYxMDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsOCArNzEsOCBAQCBQYXJzZXJFcnJvciBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoCiAgICAgaWYgKG1fbmVlZFRvSW5pdGlhbGl6ZUFyZ3VtZW50
cykKICAgICAgICAgaW5pdGlhbGl6ZVZhcmlhYmxlKHZhcmlhYmxlKHByb3BlcnR5TmFtZXMoKS5h
cmd1bWVudHMpLCBtX2FyZ3VtZW50c1JlZ2lzdGVyKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9kZWNvbnN0cnVjdGVkUGFyYW1ldGVycy5zaXplKCk7IGkrKykgewotICAgICAgICBh
dXRvJiBlbnRyeSA9IG1fZGVjb25zdHJ1Y3RlZFBhcmFtZXRlcnNbaV07CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX2Rlc3RydWN0dXJpbmdQYXJhbWV0ZXJzLnNpemUoKTsgaSsrKSB7Cisg
ICAgICAgIGF1dG8mIGVudHJ5ID0gbV9kZXN0cnVjdHVyaW5nUGFyYW1ldGVyc1tpXTsKICAgICAg
ICAgZW50cnkuc2Vjb25kLT5iaW5kVmFsdWUoKnRoaXMsIGVudHJ5LmZpcnN0LmdldCgpKTsKICAg
ICB9CiAKQEAgLTI1NywxNCArMjU3LDE0IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdl
bmVyYXRvcihWTSYKICAgICB9CiAgICAgCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBjb2RlIGJsb2Nr
IGtub3dzIGFib3V0IGFsbCBvZiBvdXIgcGFyYW1ldGVycywgYW5kIG1ha2Ugc3VyZSB0aGF0IHBh
cmFtZXRlcnMKLSAgICAvLyBuZWVkaW5nIGRlY29uc3RydWN0aW9uIGFyZSBub3RlZC4KKyAgICAv
LyBuZWVkaW5nIGRlc3RydWN0dXJpbmcgYXJlIG5vdGVkLgogICAgIG1fcGFyYW1ldGVycy5ncm93
KHBhcmFtZXRlcnMuc2l6ZSgpICsgMSk7IC8vIHJlc2VydmUgc3BhY2UgZm9yICJ0aGlzIgogICAg
IG1fdGhpc1JlZ2lzdGVyLnNldEluZGV4KGluaXRpYWxpemVOZXh0UGFyYW1ldGVyKCktPmluZGV4
KCkpOyAvLyB0aGlzCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6
ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byBwYXR0ZXJuID0gcGFyYW1ldGVycy5hdChpKTsKICAg
ICAgICAgUmVnaXN0ZXJJRCogcmVnID0gaW5pdGlhbGl6ZU5leHRQYXJhbWV0ZXIoKTsKICAgICAg
ICAgaWYgKCFwYXR0ZXJuLT5pc0JpbmRpbmdOb2RlKCkpCi0gICAgICAgICAgICBtX2RlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihyZWcsIHBhdHRlcm4pKTsKKyAg
ICAgICAgICAgIG1fZGVzdHJ1Y3R1cmluZ1BhcmFtZXRlcnMuYXBwZW5kKHN0ZDo6bWFrZV9wYWly
KHJlZywgcGF0dGVybikpOwogICAgIH0KICAgICAKICAgICAvLyBGaWd1cmUgb3V0IHNvbWUgaW50
ZXJlc3RpbmcgZmFjdHMgYWJvdXQgb3VyIGFyZ3VtZW50cy4KQEAgLTQxOSw3ICs0MTksNyBAQCBC
eXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mCiAgICAgLy8gQnV0IHNvbWUg
YXJndW1lbnRzIGFyZSBhbHJlYWR5IGluaXRpYWxpemVkIGJ5IGRlZmF1bHQsIHNpbmNlIGlmIHRo
ZXkgYXJlbid0IGNhcHR1cmVkIGFuZCB3ZQogICAgIC8vIGRvbid0IGhhdmUgImFyZ3VtZW50cyIg
dGhlbiB3ZSBqdXN0IHBvaW50IHRoZSBzeW1ib2wgdGFibGUgYXQgdGhlIHN0YWNrIHNsb3Qgb2Yg
dGhvc2UKICAgICAvLyBhcmd1bWVudHMuIFdlIGVuZCB1cCBpbml0aWFsaXppbmcgdGhlIHJlc3Qg
b2YgdGhlIGFyZ3VtZW50cyB0aGF0IGhhdmUgYW4gdW5jb21wbGljYXRlZAotICAgIC8vIGJpbmRp
bmcgKGkuZS4gZG9uJ3QgaW52b2x2ZSBkZWNvbnN0cnVjdGlvbikgYWJvdmUgd2hlbiBmaWd1cmlu
ZyBvdXQgaG93IHRvIGxheSB0aGVtIG91dCwKKyAgICAvLyBiaW5kaW5nIChpLmUuIGRvbid0IGlu
dm9sdmUgZGVzdHJ1Y3R1cmluZykgYWJvdmUgd2hlbiBmaWd1cmluZyBvdXQgaG93IHRvIGxheSB0
aGVtIG91dCwKICAgICAvLyBiZWNhdXNlIHRoYXQncyBqdXN0IHRoZSBzaW1wbGVzdCB0aGluZy4g
VGhpcyBtZWFucyB0aGF0IHdoZW4gd2UgaW5pdGlhbGl6ZSB0aGVtLCB3ZSBoYXZlIHRvCiAgICAg
Ly8gd2F0Y2ggb3V0IGZvciB0aGUgdGhpbmdzIHRoYXQgb3ZlcnJpZGUgYXJndW1lbnRzIChuYW1l
bHksIGZ1bmN0aW9ucykuCiAgICAgLy8KQEAgLTQ1NSwxMCArNDU1LDEwIEBAIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihWTSYKICAgICAvLyBUaGlzIGlzIG91ciBmaW5hbCBh
Y3Qgb2Ygd2VpcmRuZXNzLiAiYXJndW1lbnRzIiBpcyBvdmVycmlkZGVuIGJ5IGV2ZXJ5dGhpbmcg
ZXhjZXB0IHRoZQogICAgIC8vIGNhbGxlZS4gV2UgYWRkIGl0IHRvIHRoZSBzeW1ib2wgdGFibGUg
aWYgaXQncyBub3QgYWxyZWFkeSB0aGVyZSBhbmQgaXQncyBub3QgYW4gYXJndW1lbnQuCiAgICAg
aWYgKG5lZWRzQXJndW1lbnRzKSB7Ci0gICAgICAgIC8vIElmICJhcmd1bWVudHMiIGlzIG92ZXJy
aWRkZW4gYnkgYSBmdW5jdGlvbiBvciBkZWNvbnN0cnVjdGVkIHBhcmFtZXRlciBuYW1lLCB0aGVu
IGl0J3MKKyAgICAgICAgLy8gSWYgImFyZ3VtZW50cyIgaXMgb3ZlcnJpZGRlbiBieSBhIGZ1bmN0
aW9uIG9yIGRlc3RydWN0dXJpbmcgcGFyYW1ldGVyIG5hbWUsIHRoZW4gaXQncwogICAgICAgICAv
LyBPSyBmb3IgdXMgdG8gY2FsbCBjcmVhdGVWYXJpYWJsZSgpIGJlY2F1c2UgaXQgd29uJ3QgY2hh
bmdlIGFueXRoaW5nLiBJdCdzIGFsc28gT0sgZm9yCiAgICAgICAgIC8vIHVzIHRvIHRoZW0gdGVs
bCBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKSB0byB3cml0ZSB0byBpdCBiZWNhdXNlIGl0
IHdpbGwgZG8gc28KLSAgICAgICAgLy8gYmVmb3JlIGl0IGluaXRpYWxpemVzIGZ1bmN0aW9ucyBh
bmQgZGVjb25zdHJ1Y3RlZCBwYXJhbWV0ZXJzLiBCdXQgaWYgImFyZ3VtZW50cyIgaXMKKyAgICAg
ICAgLy8gYmVmb3JlIGl0IGluaXRpYWxpemVzIGZ1bmN0aW9ucyBhbmQgZGVzdHJ1Y3R1cmluZyBw
YXJhbWV0ZXJzLiBCdXQgaWYgImFyZ3VtZW50cyIgaXMKICAgICAgICAgLy8gb3ZlcnJpZGRlbiBi
eSBhICJzaW1wbGUiIGZ1bmN0aW9uIHBhcmFtZXRlciwgdGhlbiB3ZSBoYXZlIHRvIGJhaWw6IGNy
ZWF0ZVZhcmlhYmxlKCkKICAgICAgICAgLy8gd291bGQgYXNzZXJ0IGFuZCBCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUoKSB3b3VsZCB3cml0ZSB0aGUgImFyZ3VtZW50cyIgYWZ0ZXIgdGhlCiAg
ICAgICAgIC8vIGFyZ3VtZW50IHZhbHVlIGhhZCBhbHJlYWR5IGJlZW4gcHJvcGVybHkgaW5pdGlh
bGl6ZWQuCkBAIC01NDUsNyArNTQ1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmluaXRpYWxpegogICAgIHJldHVybiAmcGFyYW1ldGVyOwogfQogCi1VbmlxdWVkU3RyaW5nSW1w
bCogQnl0ZWNvZGVHZW5lcmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlY29uc3RydWN0
aW9uUGF0dGVybk5vZGUqIHBhdHRlcm4pCitVbmlxdWVkU3RyaW5nSW1wbCogQnl0ZWNvZGVHZW5l
cmF0b3I6OnZpc2libGVOYW1lRm9yUGFyYW1ldGVyKERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSog
cGF0dGVybikKIHsKICAgICBpZiAocGF0dGVybi0+aXNCaW5kaW5nTm9kZSgpKSB7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmluZGluZ05vZGUq
PihwYXR0ZXJuKS0+Ym91bmRQcm9wZXJ0eSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAkocmV2aXNpb24g
MTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NTMsNyArNjUzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgLy8gSW5pdGlhbGl6ZXMgdGhlIHN0YWNrIGZvcm0gdGhlIHBhcmFtZXRl
cjsgZG9lcyBub3RoaW5nIGZvciB0aGUgc3ltYm9sIHRhYmxlLgogICAgICAgICBSZWdpc3RlcklE
KiBpbml0aWFsaXplTmV4dFBhcmFtZXRlcigpOwotICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dmlzaWJsZU5hbWVGb3JQYXJhbWV0ZXIoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSopOworICAg
ICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdmlzaWJsZU5hbWVGb3JQYXJhbWV0ZXIoRGVzdHJ1Y3R1
cmluZ1BhdHRlcm5Ob2RlKik7CiAgICAgICAgIAogICAgICAgICBSZWdpc3RlcklEJiByZWdpc3Rl
ckZvcihWaXJ0dWFsUmVnaXN0ZXIgcmVnKQogICAgICAgICB7CkBAIC03NTYsNyArNzU2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxTd2l0Y2hJbmZvPiBtX3N3aXRjaENvbnRl
eHRTdGFjazsKICAgICAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxGb3JJbkNvbnRleHQ+PiBt
X2ZvckluQ29udGV4dFN0YWNrOwogICAgICAgICBWZWN0b3I8VHJ5Q29udGV4dD4gbV90cnlDb250
ZXh0U3RhY2s7Ci0gICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFJlZ2lzdGVySUQ+LCBj
b25zdCBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKj4+IG1fZGVjb25zdHJ1Y3RlZFBhcmFtZXRl
cnM7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8UmVmUHRyPFJlZ2lzdGVySUQ+LCBjb25zdCBE
ZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqPj4gbV9kZXN0cnVjdHVyaW5nUGFyYW1ldGVyczsKICAg
ICAgICAgZW51bSBGdW5jdGlvblZhcmlhYmxlVHlwZSA6IHVpbnQ4X3QgeyBOb3JtYWxGdW5jdGlv
blZhcmlhYmxlLCBHbG9iYWxGdW5jdGlvblZhcmlhYmxlIH07CiAgICAgICAgIFZlY3RvcjxzdGQ6
OnBhaXI8RnVuY3Rpb25Cb2R5Tm9kZSosIEZ1bmN0aW9uVmFyaWFibGVUeXBlPj4gbV9mdW5jdGlv
bnNUb0luaXRpYWxpemU7CiAgICAgICAgIGJvb2wgbV9uZWVkVG9Jbml0aWFsaXplQXJndW1lbnRz
IHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9k
ZXNDb2RlZ2VuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHJldmlzaW9uIDE4NjEwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI1Niw4ICsyMjU2LDggQEAgUmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjp0cnlHZXRCb3VuZExv
Y2FsKAogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KS5sb2NhbCgpOwog
ICAgIH0KIAotICAgIGlmIChtX2xleHByLT5pc0RlY29uc3RydWN0aW9uTm9kZSgpKSB7Ci0gICAg
ICAgIERlY29uc3RydWN0aW5nQXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2Fz
dDxEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKj4obV9sZXhwcik7CisgICAgaWYgKG1fbGV4
cHItPmlzRGVzdHJ1Y3R1cmluZ05vZGUoKSkgeworICAgICAgICBEZXN0cnVjdHVyaW5nQXNzaWdu
bWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZXN0cnVjdHVyaW5nQXNzaWdubWVu
dE5vZGUqPihtX2xleHByKTsKICAgICAgICAgYXV0byBiaW5kaW5nID0gYXNzaWduTm9kZS0+Ymlu
ZGluZ3MoKTsKICAgICAgICAgaWYgKCFiaW5kaW5nLT5pc0JpbmRpbmdOb2RlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTIzMTgsOCArMjMxOCw4IEBAIHZvaWQgRm9ySW5Ob2Rl
OjplbWl0TG9vcEhlYWRlcihCeXRlY29kZUcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGlmIChtX2xleHByLT5pc0RlY29uc3RydWN0aW9uTm9kZSgpKSB7Ci0gICAgICAgIERlY29uc3Ry
dWN0aW5nQXNzaWdubWVudE5vZGUqIGFzc2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZWNvbnN0cnVj
dGluZ0Fzc2lnbm1lbnROb2RlKj4obV9sZXhwcik7CisgICAgaWYgKG1fbGV4cHItPmlzRGVzdHJ1
Y3R1cmluZ05vZGUoKSkgeworICAgICAgICBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUqIGFz
c2lnbk5vZGUgPSBzdGF0aWNfY2FzdDxEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUqPihtX2xl
eHByKTsKICAgICAgICAgYXV0byBiaW5kaW5nID0gYXNzaWduTm9kZS0+YmluZGluZ3MoKTsKICAg
ICAgICAgaWYgKCFiaW5kaW5nLT5pc0JpbmRpbmdOb2RlKCkpIHsKICAgICAgICAgICAgIGFzc2ln
bk5vZGUtPmJpbmRpbmdzKCktPmJpbmRWYWx1ZShnZW5lcmF0b3IsIHByb3BlcnR5TmFtZSk7CkBA
IC0yNTM2LDggKzI1MzYsOCBAQCB2b2lkIEZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuCiAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUeXBlUHJvZmlsZXJFeHByZXNzaW9u
SW5mbyhhc3NpZ25Ob2RlLT5kaXZvdFN0YXJ0KCksIGFzc2lnbk5vZGUtPmRpdm90RW5kKCkpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKG1fbGV4
cHItPmlzRGVjb25zdHJ1Y3Rpb25Ob2RlKCkpOwotICAgICAgICAgICAgRGVjb25zdHJ1Y3RpbmdB
c3NpZ25tZW50Tm9kZSogYXNzaWduTm9kZSA9IHN0YXRpY19jYXN0PERlY29uc3RydWN0aW5nQXNz
aWdubWVudE5vZGUqPihtX2xleHByKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2xleHByLT5pc0Rl
c3RydWN0dXJpbmdOb2RlKCkpOworICAgICAgICAgICAgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnRO
b2RlKiBhc3NpZ25Ob2RlID0gc3RhdGljX2Nhc3Q8RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2Rl
Kj4obV9sZXhwcik7CiAgICAgICAgICAgICBhc3NpZ25Ob2RlLT5iaW5kaW5ncygpLT5iaW5kVmFs
dWUoZ2VuZXJhdG9yLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQ
cm9maWxlQ29udHJvbEZsb3cobV9zdGF0ZW1lbnQtPnN0YXJ0T2Zmc2V0KCkpOwpAQCAtMzEwNSw4
ICszMTA1LDggQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6ZW1pdEJ5dGVjb2RlKAogfQog
I2VuZGlmCiAgICAgCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGVjb25zdHJ1
Y3RpbmdBc3NpZ25tZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLQotUmVnaXN0ZXJJRCogRGVjb25z
dHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0KK1JlZ2lz
dGVySUQqIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAoUmVnaXN0
ZXJJRCogcmVzdWx0ID0gbV9iaW5kaW5ncy0+ZW1pdERpcmVjdEJpbmRpbmcoZ2VuZXJhdG9yLCBk
c3QsIG1faW5pdGlhbGl6ZXIpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzExNiw3ICsz
MTE2LDcgQEAgUmVnaXN0ZXJJRCogRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZQogICAgIHJl
dHVybiBnZW5lcmF0b3IubW92ZVRvRGVzdGluYXRpb25JZk5lZWRlZChkc3QsIGluaXRpYWxpemVy
LmdldCgpKTsKIH0KIAotRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZTo6fkRlY29uc3RydWN0aW9u
UGF0dGVybk5vZGUoKQorRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlOjp+RGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKCkKIHsKIH0KIApAQCAtMzI3Nyw3ICszMjc3LDcgQEAgdm9pZCBBcnJheVBhdHRl
cm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdQogdm9pZCBBcnJheVBhdHRlcm5Ob2RlOjpjb2xsZWN0
Qm91bmRJZGVudGlmaWVycyhWZWN0b3I8SWRlbnRpZmllcj4mIGlkZW50aWZpZXJzKSBjb25zdAog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV90YXJnZXRQYXR0ZXJucy5zaXplKCk7IGkr
KykgewotICAgICAgICBpZiAoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogbm9kZSA9IG1fdGFy
Z2V0UGF0dGVybnNbaV0ucGF0dGVybi5nZXQoKSkKKyAgICAgICAgaWYgKERlc3RydWN0dXJpbmdQ
YXR0ZXJuTm9kZSogbm9kZSA9IG1fdGFyZ2V0UGF0dGVybnNbaV0ucGF0dGVybi5nZXQoKSkKICAg
ICAgICAgICAgIG5vZGUtPmNvbGxlY3RCb3VuZElkZW50aWZpZXJzKGlkZW50aWZpZXJzKTsKICAg
ICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAko
cmV2aXNpb24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw3ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBDYXNlQ2xhdXNlTm9kZSogQ2xhdXNlOwogICAgIHR5cGVkZWYgQ29uc3REZWNsTm9kZSog
Q29uc3REZWNsTGlzdDsKICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJp
bmFyeU9wSW5mbz4gQmluYXJ5T3BlcmFuZDsKLSAgICB0eXBlZGVmIFJlZlB0cjxEZWNvbnN0cnVj
dGlvblBhdHRlcm5Ob2RlPiBEZWNvbnN0cnVjdGlvblBhdHRlcm47CisgICAgdHlwZWRlZiBSZWZQ
dHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBEZXN0cnVjdHVyaW5nUGF0dGVybjsKICAgICB0
eXBlZGVmIFJlZlB0cjxBcnJheVBhdHRlcm5Ob2RlPiBBcnJheVBhdHRlcm47CiAgICAgdHlwZWRl
ZiBSZWZQdHI8T2JqZWN0UGF0dGVybk5vZGU+IE9iamVjdFBhdHRlcm47CiAgICAgdHlwZWRlZiBS
ZWZQdHI8QmluZGluZ05vZGU+IEJpbmRpbmdQYXR0ZXJuOwpAQCAtNDIwLDggKzQyMCw4IEBAIHB1
YmxpYzoKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25zLCBF
eHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFbGVtZW50
Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExp
c3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlzaW9u
cywgZXhwcik7IH0KIAotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxp
c3QoRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRlcm4pIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgUGFyYW1ldGVyTm9kZShwYXR0ZXJuKTsgfQotICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0
ZUZvcm1hbFBhcmFtZXRlckxpc3QoUGFyYW1ldGVyTm9kZSogbGlzdCwgRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuIHBhdHRlcm4pIHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgUGFyYW1ldGVyTm9k
ZShsaXN0LCBwYXR0ZXJuKTsgfQorICAgIFBhcmFtZXRlck5vZGUqIGNyZWF0ZUZvcm1hbFBhcmFt
ZXRlckxpc3QoRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybikgeyByZXR1cm4gbmV3IChtX3Bh
cnNlckFyZW5hKSBQYXJhbWV0ZXJOb2RlKHBhdHRlcm4pOyB9CisgICAgUGFyYW1ldGVyTm9kZSog
Y3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChQYXJhbWV0ZXJOb2RlKiBsaXN0LCBEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXR0ZXJuKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIFBhcmFtZXRl
ck5vZGUobGlzdCwgcGF0dGVybik7IH0KIAogICAgIENhc2VDbGF1c2VOb2RlKiBjcmVhdGVDbGF1
c2UoRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEpTQzo6U291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMp
IHsgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgQ2FzZUNsYXVzZU5vZGUoZXhwciwgc3RhdGVt
ZW50cyk7IH0KICAgICBDbGF1c2VMaXN0Tm9kZSogY3JlYXRlQ2xhdXNlTGlzdChDYXNlQ2xhdXNl
Tm9kZSogY2xhdXNlKSB7IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIENsYXVzZUxpc3ROb2Rl
KGNsYXVzZSk7IH0KQEAgLTQ4Niw5ICs0ODYsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlY29uc3RydWN0aW9u
UGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZVN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZUVuZCwgaW50IHN0YXJ0LCBp
bnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4g
cGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRGl2
b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAg
ewotICAgICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNlckFyZW5hKSBEZWNvbnN0cnVjdGlu
Z0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKKyAgICAgICAgYXV0
byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnROb2Rl
KGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKICAgICAgICAgcmV0dXJuIGNyZWF0ZUZvcklu
TG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVudHMsIGVTdGFydCwgZURpdm90LCBl
RW5kLCBzdGFydCwgZW5kKTsKICAgICB9CiAgICAgCkBAIC01MDAsMTMgKzUwMCwxMyBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUZvck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNz
UmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2Rl
KiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZVN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZURpdm90LCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZv
ck9mTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZT4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlU3RhcnQsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBlRGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlRW5kLCBpbnQg
c3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBhdXRvIGxleHByID0gbmV3IChtX3BhcnNl
ckFyZW5hKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdl
dCgpLCAwKTsKKyAgICAgICAgYXV0byBsZXhwciA9IG5ldyAobV9wYXJzZXJBcmVuYSkgRGVzdHJ1
Y3R1cmluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9uLCBwYXR0ZXJuLmdldCgpLCAwKTsKICAgICAg
ICAgcmV0dXJuIGNyZWF0ZUZvck9mTG9vcChsb2NhdGlvbiwgbGV4cHIsIGl0ZXIsIHN0YXRlbWVu
dHMsIGVTdGFydCwgZURpdm90LCBlRW5kLCBzdGFydCwgZW5kKTsKICAgICB9CiAKLSAgICBib29s
IGlzQmluZGluZ05vZGUoY29uc3QgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuJiBwYXR0ZXJuKQorICAg
IGJvb2wgaXNCaW5kaW5nTm9kZShjb25zdCBEZXN0cnVjdHVyaW5nUGF0dGVybiYgcGF0dGVybikK
ICAgICB7CiAgICAgICAgIHJldHVybiBwYXR0ZXJuLT5pc0JpbmRpbmdOb2RlKCk7CiAgICAgfQpA
QCAtNzM4LDkgKzczOCw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Np
b25Ob2RlKiBleHByKSBjb25zdCB7IHJldHVybiBleHByLT5pc1Jlc29sdmVOb2RlKCk7IH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRl
cm5Ob2RlPiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZURlc3RydWN0dXJpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFBhc3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0
ZXJuLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgewotICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlKGxvY2F0aW9u
LCBwYXR0ZXJuLmdldCgpLCBpbml0aWFsaXplcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShsb2NhdGlvbiwgcGF0dGVybi5n
ZXQoKSwgaW5pdGlhbGl6ZXIpOwogICAgIH0KICAgICAKICAgICBBcnJheVBhdHRlcm4gY3JlYXRl
QXJyYXlQYXR0ZXJuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpCkBAIC03NTMsMTIgKzc1MywxMiBA
QCBwdWJsaWM6CiAgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJp
bmRpbmdUeXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgMCwgbnVsbHB0cik7CiAgICAgfQogCi0gICAg
dm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRlcm4sIEV4
cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCisgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5F
bnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1
ZSkKICAgICB7CiAgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJp
bmRpbmdUeXBlOjpFbGVtZW50LCBsb2NhdGlvbiwgcGF0dGVybi5nZXQoKSwgZGVmYXVsdFZhbHVl
KTsKICAgICB9CiAKLSAgICB2b2lkIGFwcGVuZEFycmF5UGF0dGVyblJlc3RFbnRyeShBcnJheVBh
dHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuIHBhdHRlcm4pCisgICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5SZXN0RW50cnko
QXJyYXlQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pCiAgICAgewogICAgICAgICBub2RlLT5hcHBlbmRJbmRl
eChBcnJheVBhdHRlcm5Ob2RlOjpCaW5kaW5nVHlwZTo6UmVzdEVsZW1lbnQsIGxvY2F0aW9uLCBw
YXR0ZXJuLmdldCgpLCBudWxscHRyKTsKICAgICB9CkBAIC03NzMsNyArNzczLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gT2JqZWN0UGF0dGVybk5vZGU6OmNyZWF0ZSgpOwogICAgIH0KICAg
ICAKLSAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5FbnRyeShPYmplY3RQYXR0ZXJuIG5vZGUs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgd2FzU3RyaW5nLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4gcGF0dGVybiwgRXhw
cmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKKyAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5F
bnRyeShPYmplY3RQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGJvb2wgd2FzU3RyaW5nLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXR0ZXJuLCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgIHsK
ICAgICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRpb24sIGlkZW50aWZpZXIsIHdhc1N0cmlu
ZywgcGF0dGVybi5nZXQoKSwgZGVmYXVsdFZhbHVlKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkocmV2aXNpb24gMTg2
MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyMCwyMCArODIwLDIwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXNz
UmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4pCisgICAgaW5saW5lIFBh
cmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFzc1JlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVy
bk5vZGU+IHBhdHRlcm4pCiAgICAgICAgIDogbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAgICAgICwg
bV9uZXh0KDApCiAgICAgewogICAgICAgICBBU1NFUlQobV9wYXR0ZXJuKTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUGFyYW1ldGVyTm9kZTo6UGFyYW1ldGVyTm9kZShQYXJhbWV0ZXJOb2RlKiBsLCBQ
YXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm4pCisgICAgaW5saW5l
IFBhcmFtZXRlck5vZGU6OlBhcmFtZXRlck5vZGUoUGFyYW1ldGVyTm9kZSogcHJldmlvdXMsIFBh
c3NSZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuKQogICAgICAgICA6IG1f
cGF0dGVybihwYXR0ZXJuKQogICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsKLSAgICAgICAgbC0+
bV9uZXh0ID0gdGhpczsKKyAgICAgICAgcHJldmlvdXMtPm1fbmV4dCA9IHRoaXM7CiAgICAgICAg
IEFTU0VSVChtX3BhdHRlcm4pOwotICAgICAgICBBU1NFUlQobC0+bV9wYXR0ZXJuKTsKKyAgICAg
ICAgQVNTRVJUKHByZXZpb3VzLT5tX3BhdHRlcm4pOwogICAgIH0KIAogICAgIGlubGluZSBGdW5j
RXhwck5vZGU6OkZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCkBAIC05MzQsMTIgKzkz
NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBE
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlOjpEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKCkKKyAg
ICBpbmxpbmUgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlOjpEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGUoKQogICAgIHsKICAgICB9CiAKICAgICBpbmxpbmUgQXJyYXlQYXR0ZXJuTm9kZTo6QXJyYXlQ
YXR0ZXJuTm9kZSgpCi0gICAgICAgIDogRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpCisgICAg
ICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICB7CiAgICAgfQogICAgIApAQCAt
OTQ5LDcgKzk0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH0KICAgICAKICAgICBpbmxpbmUg
T2JqZWN0UGF0dGVybk5vZGU6Ok9iamVjdFBhdHRlcm5Ob2RlKCkKLSAgICAgICAgOiBEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlKCkKKyAgICAgICAgOiBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUo
KQogICAgIHsKICAgICB9CiAgICAgCkBAIC05NjQsMTQgKzk2NCwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB9CiAgICAgCiAgICAgaW5saW5lIEJpbmRpbmdOb2RlOjpCaW5kaW5nTm9kZShjb25z
dCBJZGVudGlmaWVyJiBib3VuZFByb3BlcnR5LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgc3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBlbmQpCi0gICAgICAgIDogRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuTm9kZSgpCisgICAgICAgIDogRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKCkKICAgICAgICAg
LCBtX2Rpdm90U3RhcnQoc3RhcnQpCiAgICAgICAgICwgbV9kaXZvdEVuZChlbmQpCiAgICAgICAg
ICwgbV9ib3VuZFByb3BlcnR5KGJvdW5kUHJvcGVydHkpCiAgICAgewogICAgIH0KICAgICAKLSAg
ICBpbmxpbmUgRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50Tm9kZTo6RGVjb25zdHJ1Y3RpbmdBc3Np
Z25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQYXNzUmVmUHRyPERl
Y29uc3RydWN0aW9uUGF0dGVybk5vZGU+IGJpbmRpbmdzLCBFeHByZXNzaW9uTm9kZSogaW5pdGlh
bGl6ZXIpCisgICAgaW5saW5lIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6RGVzdHJ1Y3R1
cmluZ0Fzc2lnbm1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBhc3NS
ZWZQdHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBiaW5kaW5ncywgRXhwcmVzc2lvbk5vZGUq
IGluaXRpYWxpemVyKQogICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fYmluZGluZ3MoYmluZGluZ3MpCiAgICAgICAgICwgbV9pbml0aWFsaXplcihpbml0aWFs
aXplcikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCShyZXZpc2lv
biAxODYxMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIFJlZjxGdW5jdGlvblBhcmFtZXRlcnM+IEZ1
bmN0aW9uUGFyYW1ldGUKICAgICBmb3IgKFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlciA9IGZpcnN0
UGFyYW1ldGVyOyBwYXJhbWV0ZXI7IHBhcmFtZXRlciA9IHBhcmFtZXRlci0+bmV4dFBhcmFtKCkp
CiAgICAgICAgICsrcGFyYW1ldGVyQ291bnQ7CiAKLSAgICBzaXplX3Qgb2JqZWN0U2l6ZSA9IHNp
emVvZihGdW5jdGlvblBhcmFtZXRlcnMpIC0gc2l6ZW9mKHZvaWQqKSArIHNpemVvZihEZWNvbnN0
cnVjdGlvblBhdHRlcm5Ob2RlKikgKiBwYXJhbWV0ZXJDb3VudDsKKyAgICBzaXplX3Qgb2JqZWN0
U2l6ZSA9IHNpemVvZihGdW5jdGlvblBhcmFtZXRlcnMpIC0gc2l6ZW9mKHZvaWQqKSArIHNpemVv
ZihEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqKSAqIHBhcmFtZXRlckNvdW50OwogICAgIHZvaWQq
IHNsb3QgPSBmYXN0TWFsbG9jKG9iamVjdFNpemUpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IChzbG90KSBGdW5jdGlvblBhcmFtZXRlcnMoZmlyc3RQYXJhbWV0ZXIsIHBhcmFtZXRlckNvdW50
KSk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCShyZXZpc2lvbiAx
ODYxMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Niw3ICsxNTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVh
bCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNCcmFja2V0QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzRGVjb25zdHJ1Y3Rpb25Ob2RlKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzRGVzdHJ1Y3R1
cmluZ05vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNGdW5jRXhwck5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNDb21tYU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNTaW1wbGVBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMzk5
LDcgKzEzOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9z
dGF0ZW1lbnQ7CiAgICAgfTsKICAgICAKLSAgICBjbGFzcyBEZWNvbnN0cnVjdGlvblBhdHRlcm5O
b2RlOworICAgIGNsYXNzIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZTsKICAgICAKICAgICBjbGFz
cyBFbnVtZXJhdGlvbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6CkBAIC0xNTE4LDE0ICsxNTE4LDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUGFyYW1ldGVyTm9kZSA6IHB1YmxpYyBQYXJzZXJB
cmVuYURlbGV0YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBQYXJhbWV0ZXJOb2RlKFBhc3NS
ZWZQdHI8RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZT4pOwotICAgICAgICBQYXJhbWV0ZXJOb2Rl
KFBhcmFtZXRlck5vZGUqLCBQYXNzUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+KTsK
KyAgICAgICAgUGFyYW1ldGVyTm9kZShQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZT4pOworICAgICAgICBQYXJhbWV0ZXJOb2RlKFBhcmFtZXRlck5vZGUqLCBQYXNzUmVmUHRyPERl
c3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4pOwogCi0gICAgICAgIERlY29uc3RydWN0aW9uUGF0dGVy
bk5vZGUqIHBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm4uZ2V0KCk7IH0KKyAgICAg
ICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9w
YXR0ZXJuLmdldCgpOyB9CiAgICAgICAgIFBhcmFtZXRlck5vZGUqIG5leHRQYXJhbSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmV4dDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVmUHRyPERlY29u
c3RydWN0aW9uUGF0dGVybk5vZGU+IG1fcGF0dGVybjsKKyAgICAgICAgUmVmUHRyPERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZT4gbV9wYXR0ZXJuOwogICAgICAgICBQYXJhbWV0ZXJOb2RlKiBtX25l
eHQ7CiAgICAgfTsKIApAQCAtMTYzOCwxNSArMTYzOCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfkZ1bmN0aW9uUGFyYW1ldGVycygpOwogCiAgICAgICAgIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NpemU7IH0KLSAgICAgICAgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9k
ZSogYXQodW5zaWduZWQgaW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBh
dHRlcm5zKClbaW5kZXhdOyB9CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYXQo
dW5zaWduZWQgaW5kZXgpIHsgQVNTRVJUKGluZGV4IDwgbV9zaXplKTsgcmV0dXJuIHBhdHRlcm5z
KClbaW5kZXhdOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMo
UGFyYW1ldGVyTm9kZSosIHVuc2lnbmVkIHNpemUpOwogCi0gICAgICAgIERlY29uc3RydWN0aW9u
UGF0dGVybk5vZGUqKiBwYXR0ZXJucygpIHsgcmV0dXJuICZtX3N0b3JhZ2U7IH0KKyAgICAgICAg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiogcGF0dGVybnMoKSB7IHJldHVybiAmbV9zdG9yYWdl
OyB9CiAKICAgICAgICAgdW5zaWduZWQgbV9zaXplOwotICAgICAgICBEZWNvbnN0cnVjdGlvblBh
dHRlcm5Ob2RlKiBtX3N0b3JhZ2U7CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSog
bV9zdG9yYWdlOwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIGZpbmFsIDog
cHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CkBAIC0x
NzYyLDggKzE3NjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogI2VuZGlmCiAKLSAgICBj
bGFzcyBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlIDogcHVibGljIFJlZkNvdW50ZWQ8RGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuTm9kZT4gewotICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZWNv
bnN0cnVjdGlvblBhdHRlcm5Ob2RlKTsKKyAgICBjbGFzcyBEZXN0cnVjdHVyaW5nUGF0dGVybk5v
ZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+IHsKKyAgICAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKTsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAKICAgICBwdWJsaWM6CkBAIC0xNzc0LDEzICsx
Nzc0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCaW5kaW5n
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhw
cmVzc2lvbk5vZGUqKSB7IHJldHVybiAwOyB9CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFsIH5E
ZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlKCkgPSAwOworICAgICAgICB2aXJ0dWFsIH5EZXN0cnVj
dHVyaW5nUGF0dGVybk5vZGUoKSA9IDA7CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSgpOworICAgICAgICBEZXN0cnVjdHVyaW5nUGF0
dGVybk5vZGUoKTsKICAgICB9OwogCi0gICAgY2xhc3MgQXJyYXlQYXR0ZXJuTm9kZSA6IHB1Ymxp
YyBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgeworICAgIGNsYXNzIEFycmF5UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
ICAgICAgICAgZW51bSBjbGFzcyBCaW5kaW5nVHlwZSB7CiAgICAgICAgICAgICBFbGlzaW9uLApA
QCAtMTc4OSw3ICsxNzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAKICAgICAg
ICAgc3RhdGljIFJlZjxBcnJheVBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKLSAgICAgICAgdm9pZCBh
cHBlbmRJbmRleChCaW5kaW5nVHlwZSBiaW5kaW5nVHlwZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogbm9kZSwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1
bHRWYWx1ZSkKKyAgICAgICAgdm9pZCBhcHBlbmRJbmRleChCaW5kaW5nVHlwZSBiaW5kaW5nVHlw
ZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBub2Rl
LCBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBt
X3RhcmdldFBhdHRlcm5zLmFwcGVuZCh7IGJpbmRpbmdUeXBlLCBub2RlLCBkZWZhdWx0VmFsdWUg
fSk7CiAgICAgICAgIH0KQEAgLTE3OTcsNyArMTc5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByaXZhdGU6CiAgICAgICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAgICAgICBCaW5kaW5nVHlw
ZSBiaW5kaW5nVHlwZTsKLSAgICAgICAgICAgIFJlZlB0cjxEZWNvbnN0cnVjdGlvblBhdHRlcm5O
b2RlPiBwYXR0ZXJuOworICAgICAgICAgICAgUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9k
ZT4gcGF0dGVybjsKICAgICAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWU7CiAg
ICAgICAgIH07CiAgICAgICAgIEFycmF5UGF0dGVybk5vZGUoKTsKQEAgLTE4MDksMTAgKzE4MDks
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFZlY3RvcjxFbnRyeT4gbV90YXJnZXRQYXR0
ZXJuczsKICAgICB9OwogICAgIAotICAgIGNsYXNzIE9iamVjdFBhdHRlcm5Ob2RlIDogcHVibGlj
IERlY29uc3RydWN0aW9uUGF0dGVybk5vZGUgeworICAgIGNsYXNzIE9iamVjdFBhdHRlcm5Ob2Rl
IDogcHVibGljIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSB7CiAgICAgcHVibGljOgogICAgICAg
ICBzdGF0aWMgUmVmPE9iamVjdFBhdHRlcm5Ob2RlPiBjcmVhdGUoKTsKLSAgICAgICAgdm9pZCBh
cHBlbmRFbnRyeShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCBib29sIHdhc1N0cmluZywgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuTm9kZSogcGF0dGVy
biwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKKyAgICAgICAgdm9pZCBhcHBlbmRFbnRy
eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBi
b29sIHdhc1N0cmluZywgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuLCBFeHByZXNz
aW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBtX3RhcmdldFBh
dHRlcm5zLmFwcGVuZChFbnRyeXsgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJuLCBkZWZh
dWx0VmFsdWUgfSk7CiAgICAgICAgIH0KQEAgLTE4MjUsMTMgKzE4MjUsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0cnVjdCBFbnRyeSB7CiAgICAgICAgICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5TmFtZTsKICAgICAgICAgICAgIGJvb2wgd2FzU3RyaW5nOwotICAgICAgICAgICAgUmVm
UHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5vZGU+IHBhdHRlcm47CisgICAgICAgICAgICBSZWZQ
dHI8RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlPiBwYXR0ZXJuOwogICAgICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIGRlZmF1bHRWYWx1ZTsKICAgICAgICAgfTsKICAgICAgICAgVmVjdG9yPEVudHJ5
PiBtX3RhcmdldFBhdHRlcm5zOwogICAgIH07CiAKLSAgICBjbGFzcyBCaW5kaW5nTm9kZSA6IHB1
YmxpYyBEZWNvbnN0cnVjdGlvblBhdHRlcm5Ob2RlIHsKKyAgICBjbGFzcyBCaW5kaW5nTm9kZSA6
IHB1YmxpYyBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIFJlZjxCaW5kaW5nTm9kZT4gY3JlYXRlKGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJv
cGVydHksIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGVuZCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGJvdW5kUHJvcGVydHkoKSBjb25zdCB7
IHJldHVybiBtX2JvdW5kUHJvcGVydHk7IH0KQEAgLTE4NTMsMTkgKzE4NTMsMTkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXIgbV9ib3VuZFByb3BlcnR5OwogICAgIH07CiAK
LSAgICBjbGFzcyBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgeworICAgIGNsYXNzIERlc3RydWN0
dXJpbmdBc3NpZ25tZW50Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFBhcnNl
ckFyZW5hRGVsZXRhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlY29uc3RydWN0aW5nQXNz
aWdubWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUGFzc1JlZlB0cjxEZWNvbnN0cnVj
dGlvblBhdHRlcm5Ob2RlPiwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAgICAgRGVjb25zdHJ1Y3Rp
b25QYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBtX2JpbmRpbmdzLmdldCgpOyB9Cisg
ICAgICAgIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBQYXNzUmVmUHRyPERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZT4sIEV4cHJlc3Npb25Ob2RlKik7
CisgICAgICAgIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogYmluZGluZ3MoKSB7IHJldHVybiBt
X2JpbmRpbmdzLmdldCgpOyB9CiAgICAgICAgIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURl
bGV0YWJsZTo6b3BlcmF0b3IgbmV3OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBi
b29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEZWNvbnN0cnVjdGlvbk5vZGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Rlc3RydWN0dXJp
bmdOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgb3ZlcnJpZGU7CiAKLSAgICAgICAgUmVmUHRyPERlY29uc3RydWN0aW9uUGF0dGVybk5v
ZGU+IG1fYmluZGluZ3M7CisgICAgICAgIFJlZlB0cjxEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGU+
IG1fYmluZGluZ3M7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2luaXRpYWxpemVyOwogICAg
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAJKHJldmlz
aW9uIDE4NjEwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDExLDcgKzQxMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWUKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQg
ZW5kID0gMDsKICAgICBpbnQgc2NyYXRjaDsKLSAgICBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJu
IHNjcmF0Y2gxID0gMDsKKyAgICBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gc2NyYXRjaDEgPSAw
OwogICAgIFRyZWVFeHByZXNzaW9uIHNjcmF0Y2gyID0gMDsKICAgICBKU1RleHRQb3NpdGlvbiBz
Y3JhdGNoMzsKICAgICBUcmVlRXhwcmVzc2lvbiB2YXJEZWNscyA9IHBhcnNlVmFyRGVjbGFyYXRp
b25MaXN0KGNvbnRleHQsIHNjcmF0Y2gsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2NyYXRjaDMsIHNj
cmF0Y2gzLCBzY3JhdGNoMywgVmFyRGVjbGFyYXRpb25Db250ZXh0KTsKQEAgLTQ4Myw3ICs0ODMs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdChU
cmVlQnVpbGRlciYgY29udGV4dCwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZWNvbnN0cnVjdGlv
blBhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVlRXhwcmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBK
U1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNU
ZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgZGVjbGFyYXRp
b25MaXN0Q29udGV4dCkKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBpbnQmIGRlY2xhcmF0aW9ucywgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBs
YXN0UGF0dGVybiwgVHJlZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRp
b24mIGlkZW50U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9u
JiBpbml0RW5kLCBWYXJEZWNsYXJhdGlvbkxpc3RDb250ZXh0IGRlY2xhcmF0aW9uTGlzdENvbnRl
eHQpCiB7CiAgICAgVHJlZUV4cHJlc3Npb24gaGVhZCA9IDA7CiAgICAgVHJlZUV4cHJlc3Npb24g
dGFpbCA9IDA7CkBAIC01MjIsMTUgKzUyMiwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzCiAgICAgICAgICAgICAgICAgbm9kZSA9IGNvbnRleHQuY3JlYXRlRW1w
dHlWYXJFeHByZXNzaW9uKHZhclN0YXJ0TG9jYXRpb24sICpuYW1lKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGxhc3RJZGVudCA9IDA7Ci0gICAgICAgICAgICBhdXRvIHBhdHRlcm4g
PSBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRvVmFyaWFi
bGVzKTsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhdHRlcm4sICJDYW5ub3QgcGFyc2UgdGhp
cyBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuIik7CisgICAgICAgICAgICBhdXRvIHBhdHRlcm4gPSBw
YXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9WYXJpYWJsZXMp
OworICAgICAgICAgICAgZmFpbElmRmFsc2UocGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0aGlzIGRl
c3RydWN0dXJpbmcgcGF0dGVybiIpOwogICAgICAgICAgICAgaGFzSW5pdGlhbGl6ZXIgPSBtYXRj
aChFUVVBTCk7CiAgICAgICAgICAgICBmYWlsSWZUcnVlKGRlY2xhcmF0aW9uTGlzdENvbnRleHQg
PT0gVmFyRGVjbGFyYXRpb25Db250ZXh0ICYmICFoYXNJbml0aWFsaXplciwgIkV4cGVjdGVkIGFu
IGluaXRpYWxpemVyIGluIGRlc3RydWN0dXJpbmcgdmFyaWFibGUgZGVjbGFyYXRpb24iKTsKICAg
ICAgICAgICAgIGxhc3RQYXR0ZXJuID0gcGF0dGVybjsKICAgICAgICAgICAgIGlmIChoYXNJbml0
aWFsaXplcikgewogICAgICAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIHJo
cyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7Ci0gICAgICAgICAgICAgICAg
bm9kZSA9IGNvbnRleHQuY3JlYXRlRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50KGxvY2F0aW9uLCBw
YXR0ZXJuLCByaHMpOworICAgICAgICAgICAgICAgIG5vZGUgPSBjb250ZXh0LmNyZWF0ZURlc3Ry
dWN0dXJpbmdBc3NpZ25tZW50KGxvY2F0aW9uLCBwYXR0ZXJuLCByaHMpOwogICAgICAgICAgICAg
ICAgIGxhc3RJbml0aWFsaXplciA9IHJoczsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
NTQ0LDUwICs1NDQsNTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
cwogICAgICAgICAgICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kVG9Db21tYUV4cHIobG9jYXRpb24s
IGhlYWQsIHRhaWwsIG5vZGUpOwogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAgICAgaWYg
KGxhc3RJZGVudCkKLSAgICAgICAgbGFzdFBhdHRlcm4gPSBjcmVhdGVCaW5kaW5nUGF0dGVybihj
b250ZXh0LCBEZWNvbnN0cnVjdFRvVmFyaWFibGVzLCAqbGFzdElkZW50LCAwLCBsYXN0SWRlbnRU
b2tlbik7CisgICAgICAgIGxhc3RQYXR0ZXJuID0gY3JlYXRlQmluZGluZ1BhdHRlcm4oY29udGV4
dCwgRGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcywgKmxhc3RJZGVudCwgMCwgbGFzdElkZW50VG9rZW4p
OwogICAgIHJldHVybiBoZWFkOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgot
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIFBh
cnNlcjxMZXhlclR5cGU+OjpjcmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVpbGRlciYgY29udGV4
dCwgRGVjb25zdHJ1Y3Rpb25LaW5kIGtpbmQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGludCBk
ZXB0aCwgSlNUb2tlbiB0b2tlbikKK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURl
c3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVCaW5kaW5nUGF0dGVy
bihUcmVlQnVpbGRlciYgY29udGV4dCwgRGVzdHJ1Y3R1cmluZ0tpbmQga2luZCwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgaW50IGRlcHRoLCBKU1Rva2VuIHRva2VuKQogewogICAgIEFTU0VSVCgh
bmFtZS5pc051bGwoKSk7CiAgICAgCiAgICAgQVNTRVJUKG5hbWUuaW1wbCgpLT5pc0F0b21pYygp
IHx8IG5hbWUuaW1wbCgpLT5pc1N5bWJvbCgpKTsKICAgICBpZiAoZGVwdGgpIHsKLSAgICAgICAg
aWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcykKLSAgICAgICAgICAgIGZhaWxJZkZh
bHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKCZuYW1lKSwgIkNhbm5vdCBkZWNvbnN0cnVjdCB0
byBhIHZhcmlhYmxlIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsK
LSAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnMpIHsKKyAgICAgICAg
aWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb1ZhcmlhYmxlcykKKyAgICAgICAgICAgIGZhaWxJZkZh
bHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxlKCZuYW1lKSwgIkNhbm5vdCBkZXN0cnVjdHVyZSB0
byBhIHZhcmlhYmxlIG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsK
KyAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb1BhcmFtZXRlcnMpIHsKICAgICAgICAg
ICAgIGF1dG8gYmluZGluZ1Jlc3VsdCA9IGRlY2xhcmVCb3VuZFBhcmFtZXRlcigmbmFtZSk7CiAg
ICAgICAgICAgICBpZiAoYmluZGluZ1Jlc3VsdCA9PSBTY29wZTo6U3RyaWN0QmluZGluZ0ZhaWxl
ZCAmJiBzdHJpY3RNb2RlKCkpIHsKLSAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
bV92bS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09IG5hbWUgfHwgbV92bS0+cHJvcGVydHlO
YW1lcy0+ZXZhbCA9PSBuYW1lLCAiQ2Fubm90IGRlY29uc3RydWN0IHRvIGEgcGFyYW1ldGVyIG5h
bWUgJyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAgICAgICAgICAgICAg
IHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gbmFt
ZSB8fCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5ldmFsID09IG5hbWUsICJDYW5ub3QgZGVzdHJ1Y3R1
cmUgdG8gYSBwYXJhbWV0ZXIgbmFtZSAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2Rl
Iik7CiAgICAgICAgICAgICAgICAgaWYgKG1fbGFzdEZ1bmN0aW9uTmFtZSAmJiBuYW1lID09ICpt
X2xhc3RGdW5jdGlvbk5hbWUpCi0gICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2Fu
bm90IGRlY29uc3RydWN0IHRvICciLCBuYW1lLmltcGwoKSwgIicgYXMgaXQgc2hhZG93cyB0aGUg
bmFtZSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbCgiQ2Fubm90IGRlc3RydWN0dXJlIHRvICciLCBuYW1lLmltcGwoKSwgIicgYXMg
aXQgc2hhZG93cyB0aGUgbmFtZSBvZiBhIHN0cmljdCBtb2RlIGZ1bmN0aW9uIik7CiAgICAgICAg
ICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKCJib3VuZCBwYXJhbWV0ZXIgbmFt
ZSIpOwogICAgICAgICAgICAgICAgIGlmIChoYXNEZWNsYXJlZFBhcmFtZXRlcihuYW1lKSkKLSAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsKCJDYW5ub3QgZGVjb25zdHJ1Y3QgdG8gJyIs
IG5hbWUuaW1wbCgpLCAiJyBhcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGRlY2xhcmVkIik7CisgICAg
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2Fubm90IGRlc3RydWN0dXJlIHRvICciLCBu
YW1lLmltcGwoKSwgIicgYXMgaXQgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpOwogICAgICAg
ICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2Fubm90IGJpbmQgdG8gYSBwYXJhbWV0ZXIgbmFtZWQg
JyIsIG5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGJpbmRpbmdSZXN1bHQgPT0gU2NvcGU6OkJpbmRpbmdGYWlsZWQpIHsKICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWx1cmVEdWVUb0tleXdvcmQoImJvdW5kIHBhcmFtZXRl
ciBuYW1lIik7CiAgICAgICAgICAgICAgICAgaWYgKGhhc0RlY2xhcmVkUGFyYW1ldGVyKG5hbWUp
KQotICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZWNvbnN0cnVjdCB0
byAnIiwgbmFtZS5pbXBsKCksICInIGFzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZGVjbGFyZWQiKTsK
LSAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkNhbm5vdCBkZWNvbnN0cnVjdCB0byBhIHBh
cmFtZXRlciBuYW1lZCAnIiwgbmFtZS5pbXBsKCksICInIik7CisgICAgICAgICAgICAgICAgICAg
IHNlbWFudGljRmFpbCgiQ2Fubm90IGRlc3RydWN0dXJlIHRvICciLCBuYW1lLmltcGwoKSwgIicg
YXMgaXQgaGFzIGFscmVhZHkgYmVlbiBkZWNsYXJlZCIpOworICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbCgiQ2Fubm90IGRlc3RydWN0dXJlIHRvIGEgcGFyYW1ldGVyIG5hbWVkICciLCBuYW1l
LmltcGwoKSwgIiciKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoa2lu
ZCAhPSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMpCisgICAgICAgIGlmIChraW5kICE9IERlc3Ry
dWN0dXJlVG9FeHByZXNzaW9ucykKICAgICAgICAgICAgIGNvbnRleHQuYWRkVmFyKCZuYW1lLCBE
ZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIpOwogCiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb1ZhcmlhYmxlcykgeworICAgICAgICBpZiAoa2lu
ZCA9PSBEZXN0cnVjdHVyZVRvVmFyaWFibGVzKSB7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZUlm
U3RyaWN0KGRlY2xhcmVWYXJpYWJsZSgmbmFtZSksICJDYW5ub3QgZGVjbGFyZSBhIHZhcmlhYmxl
IG5hbWVkICciLCBuYW1lLmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgICAg
IGNvbnRleHQuYWRkVmFyKCZuYW1lLCBEZWNsYXJhdGlvblN0YWNrczo6SGFzSW5pdGlhbGl6ZXIp
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoa2luZCA9PSBEZWNvbnN0cnVjdFRv
UGFyYW1ldGVycykgeworICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvUGFyYW1ldGVy
cykgewogICAgICAgICAgICAgYm9vbCBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVQYXJhbWV0
ZXIoJm5hbWUpOwogICAgICAgICAgICAgaWYgKCFkZWNsYXJhdGlvblJlc3VsdCAmJiBzdHJpY3RN
b2RlKCkpIHsKLSAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobV92bS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09IG5hbWUgfHwgbV92bS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9
PSBuYW1lLCAiQ2Fubm90IGRlY29uc3RydWN0IHRvIGEgcGFyYW1ldGVyIG5hbWUgJyIsIG5hbWUu
aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAgICAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gbmFtZSB8fCBtX3ZtLT5w
cm9wZXJ0eU5hbWVzLT5ldmFsID09IG5hbWUsICJDYW5ub3QgZGVzdHJ1Y3R1cmUgdG8gYSBwYXJh
bWV0ZXIgbmFtZSAnIiwgbmFtZS5pbXBsKCksICInIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fbGFzdEZ1bmN0aW9uTmFtZSAmJiBuYW1lID09ICptX2xhc3RGdW5jdGlv
bk5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbCgiQ2Fubm90IGRlY2xhcmUg
YSBwYXJhbWV0ZXIgbmFtZWQgJyIsIG5hbWUuaW1wbCgpLCAiJyBhcyBpdCBzaGFkb3dzIHRoZSBu
YW1lIG9mIGEgc3RyaWN0IG1vZGUgZnVuY3Rpb24iKTsKICAgICAgICAgICAgICAgICBzZW1hbnRp
Y0ZhaWx1cmVEdWVUb0tleXdvcmQoInBhcmFtZXRlciBuYW1lIik7CkBAIC02MzcsMTcgKzYzNywx
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lCiAjZW5kaWYKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6dHJ5UGFyc2VE
ZWNvbnN0cnVjdGlvblBhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2Vy
PExleGVyVHlwZT46OnRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQogewotICAgIHJldHVybiBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVy
bihjb250ZXh0LCBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMpOworICAgIHJldHVybiBwYXJzZURl
c3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9FeHByZXNzaW9ucyk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBEZWNvbnN0cnVjdGlv
bktpbmQga2luZCwgaW50IGRlcHRoKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4oVHJlZUJ1aWxkZXImIGNvbnRleHQsIERlc3RydWN0dXJpbmdLaW5kIGtpbmQsIGlu
dCBkZXB0aCkKIHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgaW50IG5vbkxIU0Nv
dW50ID0gbV9ub25MSFNDb3VudDsKLSAgICBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIHBhdHRl
cm47CisgICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm47CiAgICAgc3dpdGNoICht
X3Rva2VuLm1fdHlwZSkgewogICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgSlNUZXh0
UG9zaXRpb24gZGl2b3RTdGFydCA9IHRva2VuU3RhcnRQb3NpdGlvbigpOwpAQCAtNjY5LDEyICs2
NjksMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdAogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKG1hdGNoKERPVERPVERPVCkpKSB7CiAgICAgICAgICAgICAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gbV90b2tlbi5tX2xvY2F0aW9uOwogICAgICAgICAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGlubmVyUGF0dGVybiA9IHBhcnNl
RGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRlcHRoICsgMSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYmICFpbm5lclBh
dHRlcm4pCisgICAgICAgICAgICAgICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJzZURlc3RydWN0
dXJpbmdQYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRlcHRoICsgMSk7CisgICAgICAgICAgICAgICAg
aWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zICYmICFpbm5lclBhdHRlcm4pCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNl
KGlubmVyUGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0aGlzIGRlY29uc3RydWN0aW9uIHBhdHRlcm4i
KTsKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFy
c2UgdGhpcyBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKIAotICAgICAgICAgICAgICAgIGZhaWxJ
ZlRydWUoa2luZCAhPSBEZWNvbnN0cnVjdFRvRXhwcmVzc2lvbnMgJiYgIWNvbnRleHQuaXNCaW5k
aW5nTm9kZShpbm5lclBhdHRlcm4pLCAgIkV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBl
bGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKKyAgICAgICAgICAgICAgICBmYWlsSWZU
cnVlKGtpbmQgIT0gRGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25zICYmICFjb250ZXh0LmlzQmluZGlu
Z05vZGUoaW5uZXJQYXR0ZXJuKSwgICJFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxl
bWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKIAogICAgICAgICAgICAgICAgIGNvbnRleHQu
YXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KGFycmF5UGF0dGVybiwgbG9jYXRpb24sIGlubmVy
UGF0dGVybik7CiAgICAgICAgICAgICAgICAgcmVzdEVsZW1lbnRXYXNGb3VuZCA9IHRydWU7CkBA
IC02ODIsMTggKzY4MiwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZWNv
bnN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
biA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKLSAgICAgICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0g
cGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm4oY29udGV4dCwga2luZCwgZGVwdGggKyAxKTsKLSAg
ICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQ
YXR0ZXJuKQorICAgICAgICAgICAgYXV0byBpbm5lclBhdHRlcm4gPSBwYXJzZURlc3RydWN0dXJp
bmdQYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRlcHRoICsgMSk7CisgICAgICAgICAgICBpZiAoa2lu
ZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMgJiYgIWlubmVyUGF0dGVybikKICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVybiwg
IkNhbm5vdCBwYXJzZSB0aGlzIGRlY29uc3RydWN0aW9uIHBhdHRlcm4iKTsKLSAgICAgICAgICAg
IFRyZWVFeHByZXNzaW9uIGRlZmF1bHRWYWx1ZSA9IHBhcnNlRGVmYXVsdFZhbHVlRm9yRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQpOwotICAgICAgICAgICAgZmFpbElmVHJ1ZShraW5kID09
IERlY29uc3RydWN0VG9QYXJhbWV0ZXJzICYmIGRlZmF1bHRWYWx1ZSwgICJEZWZhdWx0IHZhbHVl
cyBpbiBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMgYXJlIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVk
Iik7CisgICAgICAgICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRlcm4sICJDYW5ub3QgcGFyc2Ug
dGhpcyBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9u
IGRlZmF1bHRWYWx1ZSA9IHBhcnNlRGVmYXVsdFZhbHVlRm9yRGVzdHJ1Y3R1cmluZ1BhdHRlcm4o
Y29udGV4dCk7CisgICAgICAgICAgICBmYWlsSWZUcnVlKGtpbmQgPT0gRGVzdHJ1Y3R1cmVUb1Bh
cmFtZXRlcnMgJiYgZGVmYXVsdFZhbHVlLCAgIkRlZmF1bHQgdmFsdWVzIGluIGRlc3RydWN0dXJp
bmcgcGFyYW1ldGVycyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgICAg
IGNvbnRleHQuYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoYXJyYXlQYXR0ZXJuLCBsb2NhdGlvbiwg
aW5uZXJQYXR0ZXJuLCBkZWZhdWx0VmFsdWUpOwogICAgICAgICB9IHdoaWxlIChjb25zdW1lKENP
TU1BKSk7CiAKLSAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYm
ICFtYXRjaChDTE9TRUJSQUNLRVQpKQorICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRv
RXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJBQ0tFVCkpCiAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNLRVQsIHJlc3RFbGVtZW50V2FzRm91
bmQgPyAiRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVj
b25zdHJ1Y3Rpb24gcGF0dGVybiIgOiAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnXScgb3Ig
YSAnLCcgZm9sbG93aW5nIGFuIGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybiIpOworICAg
ICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCwgcmVzdEVsZW1lbnRXYXNGb3VuZCA/ICJF
eHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZXN0cnVjdHVy
aW5nIHBhdHRlcm4iIDogIkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ10nIG9yIGEgJywnIGZv
bGxvd2luZyBhbiBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybiIpOwogICAgICAgICBjb250
ZXh0LmZpbmlzaEFycmF5UGF0dGVybihhcnJheVBhdHRlcm4sIGRpdm90U3RhcnQsIGRpdm90U3Rh
cnQsIGxhc3RUb2tlbkVuZFBvc2l0aW9uKCkpOwogICAgICAgICBwYXR0ZXJuID0gYXJyYXlQYXR0
ZXJuOwogICAgICAgICBicmVhazsKQEAgLTcwOSwxNCArNzA5LDE0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZURlY29uc3QKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAg
ICAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWU7Ci0gICAgICAgICAgICBUcmVlRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuIGlubmVyUGF0dGVybiA9IDA7CisgICAgICAgICAgICBUcmVlRGVzdHJ1
Y3R1cmluZ1BhdHRlcm4gaW5uZXJQYXR0ZXJuID0gMDsKICAgICAgICAgICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbiA9IG1fdG9rZW4ubV9sb2NhdGlvbjsKICAgICAgICAgICAgIGlmIChtYXRj
aChJREVOVCkpIHsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUgPSAqbV90b2tlbi5tX2Rh
dGEuaWRlbnQ7CiAgICAgICAgICAgICAgICAgSlNUb2tlbiBpZGVudGlmaWVyVG9rZW4gPSBtX3Rv
a2VuOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3Vt
ZShDT0xPTikpCi0gICAgICAgICAgICAgICAgICAgIGlubmVyUGF0dGVybiA9IHBhcnNlRGVjb25z
dHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIGtpbmQsIGRlcHRoICsgMSk7CisgICAgICAgICAgICAg
ICAgICAgIGlubmVyUGF0dGVybiA9IHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCwg
a2luZCwgZGVwdGggKyAxKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIGlubmVyUGF0dGVybiA9IGNyZWF0ZUJpbmRpbmdQYXR0ZXJuKGNvbnRleHQsIGtpbmQsIHBy
b3BlcnR5TmFtZSwgZGVwdGgsIGlkZW50aWZpZXJUb2tlbik7CiAgICAgICAgICAgICB9IGVsc2Ug
ewpAQCAtNzMyLDcgKzczMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURl
Y29uc3QKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICE9IFJFU0VSVkVEICYm
IG1fdG9rZW4ubV90eXBlICE9IFJFU0VSVkVEX0lGX1NUUklDVCAmJiAhKG1fdG9rZW4ubV90eXBl
ICYgS2V5d29yZFRva2VuRmxhZykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChraW5k
ID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChraW5kID09IERlc3RydWN0dXJlVG9FeHByZXNzaW9ucykKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxXaXRoTWVzc2Fn
ZSgiRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lIik7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTc0MSwzNCArNzQxLDM0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlY29u
c3QKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAg
ICAgICAgIGlmICghY29uc3VtZShDT0xPTikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtp
bmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zKQorICAgICAgICAgICAgICAgICAgICBpZiAo
a2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMpCiAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2Vu
VHlwZSA9PSBSRVNFUlZFRCwgIkNhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24g
c3ludGF4IGZvciByZXNlcnZlZCBuYW1lICciLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyIpOwot
ICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodG9rZW5UeXBlID09IFJFU0VS
VkVEX0lGX1NUUklDVCwgIkNhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3lu
dGF4IGZvciByZXNlcnZlZCBuYW1lICciLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyBpbiBzdHJp
Y3QgbW9kZSIpOwotICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodG9rZW5U
eXBlICYgS2V5d29yZFRva2VuRmxhZywgIkNhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1
Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICciLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyIpOwor
ICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodG9rZW5UeXBlID09IFJFU0VS
VkVELCAiQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3IgcmVz
ZXJ2ZWQgbmFtZSAnIiwgcHJvcGVydHlOYW1lLmltcGwoKSwgIiciKTsKKyAgICAgICAgICAgICAg
ICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSA9PSBSRVNFUlZFRF9JRl9TVFJJQ1Qs
ICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciByZXNlcnZl
ZCBuYW1lICciLCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOworICAg
ICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodG9rZW5UeXBlICYgS2V5d29yZFRv
a2VuRmxhZywgIkNhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9y
IGtleXdvcmQgJyIsIHByb3BlcnR5TmFtZS5pbXBsKCksICInIik7CiAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgJzon
IHByaW9yIHRvIG5hbWVkIHByb3BlcnR5IGRlY29uc3RydWN0aW9uIik7CisgICAgICAgICAgICAg
ICAgICAgIGZhaWxXaXRoTWVzc2FnZSgiRXhwZWN0ZWQgYSAnOicgcHJpb3IgdG8gYSBuYW1lZCBk
ZXN0cnVjdHVyaW5nIHByb3BlcnR5Iik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlubmVyUGF0dGVybiA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIGtp
bmQsIGRlcHRoICsgMSk7CisgICAgICAgICAgICAgICAgaW5uZXJQYXR0ZXJuID0gcGFyc2VEZXN0
cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBraW5kLCBkZXB0aCArIDEpOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zICYmICFp
bm5lclBhdHRlcm4pCisgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyZVRvRXhwcmVz
c2lvbnMgJiYgIWlubmVyUGF0dGVybikKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKGlubmVyUGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0aGlzIGRlY29u
c3RydWN0aW9uIHBhdHRlcm4iKTsKLSAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGRlZmF1bHRW
YWx1ZSA9IHBhcnNlRGVmYXVsdFZhbHVlRm9yRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQp
OwotICAgICAgICAgICAgZmFpbElmVHJ1ZShraW5kID09IERlY29uc3RydWN0VG9QYXJhbWV0ZXJz
ICYmIGRlZmF1bHRWYWx1ZSwgIkRlZmF1bHQgdmFsdWVzIGluIGRlc3RydWN0dXJpbmcgcGFyYW1l
dGVycyBhcmUgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGlubmVyUGF0dGVybiwgIkNhbm5vdCBwYXJzZSB0aGlzIGRlc3RydWN0dXJpbmcgcGF0dGVy
biIpOworICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gZGVmYXVsdFZhbHVlID0gcGFyc2VEZWZh
dWx0VmFsdWVGb3JEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0KTsKKyAgICAgICAgICAgIGZh
aWxJZlRydWUoa2luZCA9PSBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyAmJiBkZWZhdWx0VmFsdWUs
ICJEZWZhdWx0IHZhbHVlcyBpbiBkZXN0cnVjdHVyaW5nIHBhcmFtZXRlcnMgYXJlIGN1cnJlbnRs
eSBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgICAgICBjb250ZXh0LmFwcGVuZE9iamVjdFBhdHRl
cm5FbnRyeShvYmplY3RQYXR0ZXJuLCBsb2NhdGlvbiwgd2FzU3RyaW5nLCBwcm9wZXJ0eU5hbWUs
IGlubmVyUGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICAgICAgfSB3aGlsZSAoY29uc3VtZShD
T01NQSkpOwogCi0gICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucyAm
JiAhbWF0Y2goQ0xPU0VCUkFDRSkpCisgICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9F
eHByZXNzaW9ucyAmJiAhbWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
LSAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xv
c2luZyAnfScgb3IgYW4gJywnIGFmdGVyIGEgcHJvcGVydHkgZGVjb25zdHJ1Y3Rpb24gcGF0dGVy
biIpOworICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBlaXRoZXIg
YSBjbG9zaW5nICd9JyBvciBhbiAnLCcgYWZ0ZXIgYSBwcm9wZXJ0eSBkZXN0cnVjdHVyaW5nIHBh
dHRlcm4iKTsKICAgICAgICAgcGF0dGVybiA9IG9iamVjdFBhdHRlcm47CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIGRlZmF1bHQ6IHsKICAgICAgICAgaWYgKCFtYXRjaChJREVOVCkpIHsK
LSAgICAgICAgICAgIGlmIChraW5kID09IERlY29uc3RydWN0VG9FeHByZXNzaW9ucykKKyAgICAg
ICAgICAgIGlmIChraW5kID09IERlc3RydWN0dXJlVG9FeHByZXNzaW9ucykKICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHNlbWFudGljRmFpbHVyZUR1ZVRvS2V5d29yZCgi
dmFyaWFibGUgbmFtZSIpOwogICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBh
IHBhcmFtZXRlciBwYXR0ZXJuIG9yIGEgJyknIGluIHBhcmFtZXRlciBsaXN0Iik7CkBAIC03ODMs
NyArNzgzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVjb25zdAogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZWZhdWx0VmFsdWVG
b3JEZWNvbnN0cnVjdGlvblBhdHRlcm4oVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiBjb250ZXh0
KQogewogICAgIGlmICghbWF0Y2goRVFVQUwpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTgzNCwx
MyArODM0LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAg
ICBKU1RleHRQb3NpdGlvbiBkZWNsc1N0YXJ0OwogICAgIEpTVGV4dFBvc2l0aW9uIGRlY2xzRW5k
OwogICAgIFRyZWVFeHByZXNzaW9uIGRlY2xzID0gMDsKLSAgICBUcmVlRGVjb25zdHJ1Y3Rpb25Q
YXR0ZXJuIHBhdHRlcm4gPSAwOworICAgIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJu
ID0gMDsKICAgICBpZiAobWF0Y2goVkFSKSkgewogICAgICAgICAvKgogICAgICAgICAgZm9yICh2
YXIgSURFTlQgaW4gZXhwcmVzc2lvbikgc3RhdGVtZW50CiAgICAgICAgICBmb3IgKHZhciB2YXJE
ZWNsYXJhdGlvbkxpc3Q7IGV4cHJlc3Npb25PcHQ7IGV4cHJlc3Npb25PcHQpCiAgICAgICAgICAq
LwotICAgICAgICBUcmVlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuIGZvckluVGFyZ2V0ID0gMDsKKyAg
ICAgICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIGZvckluVGFyZ2V0ID0gMDsKICAgICAgICAg
VHJlZUV4cHJlc3Npb24gZm9ySW5Jbml0aWFsaXplciA9IDA7CiAgICAgICAgIG1fYWxsb3dzSW4g
PSBmYWxzZTsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gaW5pdFN0YXJ0OwpAQCAtODkwLDcgKzg5
MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKICAgICAgICAg
aWYgKG1hdGNoKE9QRU5CUkFDRSkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSB7CiAgICAgICAgICAg
ICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0gY3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgICAgICAgICBk
ZWNsc1N0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7Ci0gICAgICAgICAgICBwYXR0ZXJuID0g
dHJ5UGFyc2VEZWNvbnN0cnVjdGlvblBhdHRlcm5FeHByZXNzaW9uKGNvbnRleHQpOworICAgICAg
ICAgICAgcGF0dGVybiA9IHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKGNv
bnRleHQpOwogICAgICAgICAgICAgZGVjbHNFbmQgPSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwog
ICAgICAgICAgICAgaWYgKHBhdHRlcm4gJiYgKG1hdGNoKElOVE9LRU4pIHx8IChtYXRjaChJREVO
VCkgJiYgKm1fdG9rZW4ubV9kYXRhLmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPm9mKSkp
CiAgICAgICAgICAgICAgICAgZ290byBlbnVtZXJhdGlvbkxvb3A7CkBAIC0xMzQ5LDEyICsxMzQ5
LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWUKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVG
b3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvcm1hbFBhcmFtZXRl
cnMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7Ci0gICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURl
Y29uc3RydWN0aW9uUGF0dGVybihjb250ZXh0LCBEZWNvbnN0cnVjdFRvUGFyYW1ldGVycyk7Cisg
ICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERl
c3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAgICBmYWlsSWZGYWxzZShwYXJhbWV0ZXIsICJDYW5u
b3QgcGFyc2UgcGFyYW1ldGVyIHBhdHRlcm4iKTsKICAgICBUcmVlRm9ybWFsUGFyYW1ldGVyTGlz
dCBsaXN0ID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KHBhcmFtZXRlcik7CiAg
ICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgdGFpbCA9IGxpc3Q7CiAgICAgd2hpbGUgKGNvbnN1
bWUoQ09NTUEpKSB7Ci0gICAgICAgIHBhcmFtZXRlciA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0
ZXJuKGNvbnRleHQsIERlY29uc3RydWN0VG9QYXJhbWV0ZXJzKTsKKyAgICAgICAgcGFyYW1ldGVy
ID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1l
dGVycyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJh
bWV0ZXIgcGF0dGVybiIpOwogICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJh
bWV0ZXJMaXN0KHRhaWwsIHBhcmFtZXRlcik7CiAgICAgfQpAQCAtMTQyOSw3ICsxNDI5LDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPAogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTiwgIkV4cGVjdGVkIGEg
JyknIG9yIGEgJywnIGFmdGVyIGEgcGFyYW1ldGVyIGRlY2xhcmF0aW9uIik7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZWNvbnN0
cnVjdGlvblBhdHRlcm4oY29udGV4dCwgRGVjb25zdHJ1Y3RUb1BhcmFtZXRlcnMpOworICAgICAg
ICAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250
ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycyk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFs
c2UocGFyYW1ldGVyLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlciBwYXR0ZXJuIik7CiAgICAgICAg
ICAgICAgICAgaW5mby5wYXJhbWV0ZXJzID0gY29udGV4dC5jcmVhdGVGb3JtYWxQYXJhbWV0ZXJM
aXN0KHBhcmFtZXRlcik7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5mby5wYXJhbWV0
ZXJzLCAiQ2Fubm90IHBhcnNlIHBhcmFtZXRlcnMgZm9yIHRoaXMgIiwgc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKG1vZGUpKTsKQEAgLTE0NDksNyArMTQ0OSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+IHRlbXBsYXRlIDwKICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOLCAi
Z2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUgbm8gcGFyYW1ldGVycyIpOwogICAgIGVsc2UgaWYg
KG1vZGUgPT0gU2V0dGVyTW9kZSkgewogICAgICAgICBmYWlsSWZUcnVlKG1hdGNoKENMT1NFUEFS
RU4pLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUgb25lIHBhcmFtZXRlciIpOwotICAgICAg
ICBhdXRvIHBhcmFtZXRlciA9IHBhcnNlRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKGNvbnRleHQsIERl
Y29uc3RydWN0VG9QYXJhbWV0ZXJzKTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURl
c3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJlVG9QYXJhbWV0ZXJzKTsKICAg
ICAgICAgZmFpbElmRmFsc2UocGFyYW1ldGVyLCAic2V0dGVyIGZ1bmN0aW9ucyBtdXN0IGhhdmUg
b25lIHBhcmFtZXRlciIpOwogICAgICAgICBpbmZvLnBhcmFtZXRlcnMgPSBjb250ZXh0LmNyZWF0
ZUZvcm1hbFBhcmFtZXRlckxpc3QocGFyYW1ldGVyKTsKICAgICAgICAgZmFpbElmVHJ1ZShtYXRj
aChDT01NQSksICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVyIik7CkBA
IC0yMDc0LDExICsyMDc0LDExIEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHIKICAgICBpbnQgaW5pdGlhbE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKICAgICBp
ZiAobWF0Y2goT1BFTkJSQUNFKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkpIHsKICAgICAgICAgU2F2
ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwotICAgICAgICBhdXRvIHBhdHRl
cm4gPSB0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Npb24oY29udGV4dCk7Cisg
ICAgICAgIGF1dG8gcGF0dGVybiA9IHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNz
aW9uKGNvbnRleHQpOwogICAgICAgICBpZiAocGF0dGVybiAmJiBjb25zdW1lKEVRVUFMKSkgewog
ICAgICAgICAgICAgYXV0byByaHMgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgICAgICAgICAgaWYgKHJocykKLSAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQobG9jYXRpb24sIHBhdHRlcm4sIHJocyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVzdHJ1Y3R1cmluZ0Fzc2lnbm1l
bnQobG9jYXRpb24sIHBhdHRlcm4sIHJocyk7CiAgICAgICAgIH0KICAgICAgICAgcmVzdG9yZVNh
dmVQb2ludChzYXZlUG9pbnQpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAkocmV2aXNpb24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNyBAQCBjbGFzcyBTb3Vy
Y2VDb2RlOwogI2VuZGlmCiAjZGVmaW5lIFRyZWVQcm9wZXJ0eSB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6UHJvcGVydHkKICNkZWZpbmUgVHJlZVByb3BlcnR5TGlzdCB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6UHJvcGVydHlMaXN0Ci0jZGVmaW5lIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4gdHlwZW5h
bWUgVHJlZUJ1aWxkZXI6OkRlY29uc3RydWN0aW9uUGF0dGVybgorI2RlZmluZSBUcmVlRGVzdHJ1
Y3R1cmluZ1BhdHRlcm4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkRlc3RydWN0dXJpbmdQYXR0ZXJu
CiAKIENPTVBJTEVfQVNTRVJUKExhc3RVbnRhZ2dlZFRva2VuIDwgNjQsIExlc3NUaGFuNjRVbnRh
Z2dlZFRva2Vucyk7CiAKQEAgLTk1LDEwICs5NSwxMCBAQCBlbnVtIEZ1bmN0aW9uUGFyc2VNb2Rl
IHsKICAgICBBcnJvd0Z1bmN0aW9uTW9kZQogI2VuZGlmCiB9OwotZW51bSBEZWNvbnN0cnVjdGlv
bktpbmQgewotICAgIERlY29uc3RydWN0VG9WYXJpYWJsZXMsCi0gICAgRGVjb25zdHJ1Y3RUb1Bh
cmFtZXRlcnMsCi0gICAgRGVjb25zdHJ1Y3RUb0V4cHJlc3Npb25zCitlbnVtIERlc3RydWN0dXJp
bmdLaW5kIHsKKyAgICBEZXN0cnVjdHVyZVRvVmFyaWFibGVzLAorICAgIERlc3RydWN0dXJlVG9Q
YXJhbWV0ZXJzLAorICAgIERlc3RydWN0dXJlVG9FeHByZXNzaW9ucwogfTsKIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGlubGluZSBib29sIGlzRXZhbE5vZGUoKSB7IHJldHVybiBmYWxzZTsgfQpA
QCAtODA5LDcgKzgwOSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVGdW5jdGlvbkJvZHkgcGFyc2VGdW5jdGlvbkJvZHkoVHJl
ZUJ1aWxkZXImLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFy
dCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvblBhcnNlVHlw
ZSk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVG
b3JtYWxQYXJhbWV0ZXJMaXN0IHBhcnNlRm9ybWFsUGFyYW1ldGVycyhUcmVlQnVpbGRlciYpOwog
ICAgIGVudW0gVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCB7IEZvckxvb3BDb250ZXh0LCBWYXJE
ZWNsYXJhdGlvbkNvbnRleHQgfTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIHBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBk
ZWNsYXJhdGlvbnMsIFRyZWVEZWNvbnN0cnVjdGlvblBhdHRlcm4mIGxhc3RQYXR0ZXJuLCBUcmVl
RXhwcmVzc2lvbiYgbGFzdEluaXRpYWxpemVyLCBKU1RleHRQb3NpdGlvbiYgaWRlbnRTdGFydCwg
SlNUZXh0UG9zaXRpb24mIGluaXRTdGFydCwgSlNUZXh0UG9zaXRpb24mIGluaXRFbmQsIFZhckRl
Y2xhcmF0aW9uTGlzdENvbnRleHQpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gcGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QoVHJlZUJ1aWxkZXImLCBpbnQm
IGRlY2xhcmF0aW9ucywgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuJiBsYXN0UGF0dGVybiwgVHJl
ZUV4cHJlc3Npb24mIGxhc3RJbml0aWFsaXplciwgSlNUZXh0UG9zaXRpb24mIGlkZW50U3RhcnQs
IEpTVGV4dFBvc2l0aW9uJiBpbml0U3RhcnQsIEpTVGV4dFBvc2l0aW9uJiBpbml0RW5kLCBWYXJE
ZWNsYXJhdGlvbkxpc3RDb250ZXh0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBUcmVlQ29uc3REZWNsTGlzdCBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0
KFRyZWVCdWlsZGVyJik7CiAKICNpZiBFTkFCTEUoRVM2X0FSUk9XRlVOQ1RJT05fU1lOVEFYKQpA
QCAtODE3LDEwICs4MTcsMTAgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIHBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oVHJlZUJ1
aWxkZXImKTsKICNlbmRpZgogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZF
Ul9JTkxJTkUgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBjcmVhdGVCaW5kaW5nUGF0dGVybihU
cmVlQnVpbGRlciYsIERlY29uc3RydWN0aW9uS2luZCwgY29uc3QgSWRlbnRpZmllciYsIGludCBk
ZXB0aCwgSlNUb2tlbik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9J
TkxJTkUgVHJlZURlY29uc3RydWN0aW9uUGF0dGVybiBwYXJzZURlY29uc3RydWN0aW9uUGF0dGVy
bihUcmVlQnVpbGRlciYsIERlY29uc3RydWN0aW9uS2luZCwgaW50IGRlcHRoID0gMCk7Ci0gICAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlY29uc3RydWN0
aW9uUGF0dGVybiB0cnlQYXJzZURlY29uc3RydWN0aW9uUGF0dGVybkV4cHJlc3Npb24oVHJlZUJ1
aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBU
cmVlRXhwcmVzc2lvbiBwYXJzZURlZmF1bHRWYWx1ZUZvckRlY29uc3RydWN0aW9uUGF0dGVybihU
cmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5M
SU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nUGF0dGVybihUcmVlQnVp
bGRlciYsIERlc3RydWN0dXJpbmdLaW5kLCBjb25zdCBJZGVudGlmaWVyJiwgaW50IGRlcHRoLCBK
U1Rva2VuKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBU
cmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVp
bGRlciYsIERlc3RydWN0dXJpbmdLaW5kLCBpbnQgZGVwdGggPSAwKTsKKyAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4g
dHJ5UGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybkV4cHJlc3Npb24oVHJlZUJ1aWxkZXImKTsKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRXhwcmVzc2lv
biBwYXJzZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJik7
CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBh
cnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIEZ1bmN0
aW9uUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBDb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBQYXJzZXJGdW5jdGlv
bkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25QYXJzZVR5cGUpOwogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJldmlzaW9uIDE4
NjEwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03NiwxMiArNzYsMTIgQEAgcHVibGljOgogICAgICAgICBGdW5jdGlv
bkV4cHIsIENsYXNzRXhwciwgU3VwZXJFeHByLCBCcmFja2V0RXhwciwgRG90RXhwciwgQ2FsbEV4
cHIsCiAgICAgICAgIE5ld0V4cHIsIFByZUV4cHIsIFBvc3RFeHByLCBVbmFyeUV4cHIsIEJpbmFy
eUV4cHIsCiAgICAgICAgIENvbmRpdGlvbmFsRXhwciwgQXNzaWdubWVudEV4cHIsIFR5cGVvZkV4
cHIsCi0gICAgICAgIERlbGV0ZUV4cHIsIEFycmF5TGl0ZXJhbEV4cHIsIEJpbmRpbmdEZWNvbnN0
cnVjdGlvbiwKLSAgICAgICAgQXJyYXlEZWNvbnN0cnVjdGlvbiwgT2JqZWN0RGVjb25zdHJ1Y3Rp
b24sIFNvdXJjZUVsZW1lbnRzUmVzdWx0LAorICAgICAgICBEZWxldGVFeHByLCBBcnJheUxpdGVy
YWxFeHByLCBCaW5kaW5nRGVzdHJ1Y3R1cmluZywKKyAgICAgICAgQXJyYXlEZXN0cnVjdHVyaW5n
LCBPYmplY3REZXN0cnVjdHVyaW5nLCBTb3VyY2VFbGVtZW50c1Jlc3VsdCwKICAgICAgICAgRnVu
Y3Rpb25Cb2R5UmVzdWx0LCBTcHJlYWRFeHByLCBBcmd1bWVudHNSZXN1bHQsCiAgICAgICAgIFBy
b3BlcnR5TGlzdFJlc3VsdCwgQXJndW1lbnRzTGlzdFJlc3VsdCwgRWxlbWVudHNMaXN0UmVzdWx0
LAogICAgICAgICBTdGF0ZW1lbnRSZXN1bHQsIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQsIENs
YXVzZVJlc3VsdCwKLSAgICAgICAgQ2xhdXNlTGlzdFJlc3VsdCwgQ29tbWFFeHByLCBEZWNvbnN0
cnVjdGluZ0Fzc2lnbm1lbnQsCisgICAgICAgIENsYXVzZUxpc3RSZXN1bHQsIENvbW1hRXhwciwg
RGVzdHJ1Y3R1cmluZ0Fzc2lnbm1lbnQsCiAgICAgICAgIFRlbXBsYXRlU3RyaW5nUmVzdWx0LCBU
ZW1wbGF0ZVN0cmluZ0xpc3RSZXN1bHQsCiAgICAgICAgIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3RS
ZXN1bHQsIFRlbXBsYXRlRXhwciwKICAgICAgICAgVGFnZ2VkVGVtcGxhdGVFeHByCkBAIC0xMzAs
OSArMTMwLDkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IENsYXVzZTsKICAgICB0eXBlZGVm
IGludCBDb25zdERlY2xMaXN0OwogICAgIHR5cGVkZWYgaW50IEJpbmFyeU9wZXJhbmQ7Ci0gICAg
dHlwZWRlZiBpbnQgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuOwotICAgIHR5cGVkZWYgRGVjb25zdHJ1
Y3Rpb25QYXR0ZXJuIEFycmF5UGF0dGVybjsKLSAgICB0eXBlZGVmIERlY29uc3RydWN0aW9uUGF0
dGVybiBPYmplY3RQYXR0ZXJuOworICAgIHR5cGVkZWYgaW50IERlc3RydWN0dXJpbmdQYXR0ZXJu
OworICAgIHR5cGVkZWYgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gQXJyYXlQYXR0ZXJuOworICAgIHR5
cGVkZWYgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gT2JqZWN0UGF0dGVybjsKIAogICAgIHN0YXRpYyBj
b25zdCBib29sIENyZWF0ZXNBU1QgPSBmYWxzZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBOZWVk
c0ZyZWVWYXJpYWJsZUluZm8gPSBmYWxzZTsKQEAgLTIyMCw4ICsyMjAsOCBAQCBwdWJsaWM6CiAg
ICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0
eSwgaW50KSB7IHJldHVybiBQcm9wZXJ0eUxpc3RSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRWxl
bWVudExpc3QoaW50LCBpbnQpIHsgcmV0dXJuIEVsZW1lbnRzTGlzdFJlc3VsdDsgfQogICAgIGlu
dCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiBFbGVtZW50c0xpc3RS
ZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChEZWNvbnN0cnVjdGlv
blBhdHRlcm4pIHsgcmV0dXJuIEZvcm1hbFBhcmFtZXRlckxpc3RSZXN1bHQ7IH0KLSAgICBpbnQg
Y3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChpbnQsIERlY29uc3RydWN0aW9uUGF0dGVybikgeyBy
ZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGb3JtYWxQ
YXJhbWV0ZXJMaXN0KERlc3RydWN0dXJpbmdQYXR0ZXJuKSB7IHJldHVybiBGb3JtYWxQYXJhbWV0
ZXJMaXN0UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoaW50LCBE
ZXN0cnVjdHVyaW5nUGF0dGVybikgeyByZXR1cm4gRm9ybWFsUGFyYW1ldGVyTGlzdFJlc3VsdDsg
fQogICAgIGludCBjcmVhdGVDbGF1c2UoaW50LCBpbnQpIHsgcmV0dXJuIENsYXVzZVJlc3VsdDsg
fQogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCkgeyByZXR1cm4gQ2xhdXNlTGlzdFJlc3Vs
dDsgfQogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCwgaW50KSB7IHJldHVybiBDbGF1c2VM
aXN0UmVzdWx0OyB9CkBAIC0zMDAsMjIgKzMwMCwyMiBAQCBwdWJsaWM6CiAgICAgY29uc3QgSWRl
bnRpZmllciogZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJu
IHByb3BlcnR5Lm5hbWU7IH0KICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQ
cm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBi
b29sIGlzUmVzb2x2ZShFeHByZXNzaW9uVHlwZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09
IFJlc29sdmVFeHByIHx8IGV4cHIgPT0gUmVzb2x2ZUV2YWxFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlRGVjb25zdHJ1Y3RpbmdBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgRXhwcmVzc2lvblR5cGUpCisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRGVzdHJ1
Y3R1cmluZ0Fzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBFeHByZXNzaW9u
VHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBEZWNvbnN0cnVjdGluZ0Fzc2lnbm1lbnQ7Cisg
ICAgICAgIHJldHVybiBEZXN0cnVjdHVyaW5nQXNzaWdubWVudDsKICAgICB9CiAgICAgCiAgICAg
QXJyYXlQYXR0ZXJuIGNyZWF0ZUFycmF5UGF0dGVybihjb25zdCBKU1Rva2VuTG9jYXRpb24mKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEFycmF5RGVjb25zdHJ1Y3Rpb247CisgICAgICAgIHJldHVy
biBBcnJheURlc3RydWN0dXJpbmc7CiAgICAgfQogICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJu
U2tpcEVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJikKICAgICB7CiAg
ICAgfQotICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJuLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBEZWNvbnN0cnVjdGlvblBhdHRlcm4sIGludCkKKyAgICB2b2lk
IGFwcGVuZEFycmF5UGF0dGVybkVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4sIGludCkKICAgICB7CiAgICAgfQotICAgIHZvaWQg
YXBwZW5kQXJyYXlQYXR0ZXJuUmVzdEVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuKQorICAgIHZvaWQgYXBwZW5kQXJyYXlQYXR0
ZXJuUmVzdEVudHJ5KEFycmF5UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVzdHJ1
Y3R1cmluZ1BhdHRlcm4pCiAgICAgewogICAgIH0KICAgICB2b2lkIGZpbmlzaEFycmF5UGF0dGVy
bihBcnJheVBhdHRlcm4sIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mLCBjb25zdCBKU1RleHRQb3NpdGlvbiYpCkBAIC0zMjMsMTkgKzMyMywxOSBAQCBwdWJsaWM6
CiAgICAgfQogICAgIE9iamVjdFBhdHRlcm4gY3JlYXRlT2JqZWN0UGF0dGVybihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mKQogICAgIHsKLSAgICAgICAgcmV0dXJuIE9iamVjdERlY29uc3RydWN0aW9u
OworICAgICAgICByZXR1cm4gT2JqZWN0RGVzdHJ1Y3R1cmluZzsKICAgICB9Ci0gICAgdm9pZCBh
cHBlbmRPYmplY3RQYXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJuLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBib29sLCBjb25zdCBJZGVudGlmaWVyJiwgRGVjb25zdHJ1Y3Rpb25QYXR0ZXJuLCBpbnQp
CisgICAgdm9pZCBhcHBlbmRPYmplY3RQYXR0ZXJuRW50cnkoQXJyYXlQYXR0ZXJuLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBib29sLCBjb25zdCBJZGVudGlmaWVyJiwgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm4sIGludCkKICAgICB7CiAgICAgfQotICAgIERlY29uc3RydWN0aW9uUGF0dGVybiBjcmVh
dGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mKQorICAgIERl
c3RydWN0dXJpbmdQYXR0ZXJuIGNyZWF0ZUJpbmRpbmdMb2NhdGlvbihjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSlNUZXh0UG9zaXRpb24mLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYpCiAgICAgewotICAgICAgICByZXR1cm4gQmluZGluZ0RlY29uc3RydWN0
aW9uOworICAgICAgICByZXR1cm4gQmluZGluZ0Rlc3RydWN0dXJpbmc7CiAgICAgfQogCi0gICAg
Ym9vbCBpc0JpbmRpbmdOb2RlKERlY29uc3RydWN0aW9uUGF0dGVybiBwYXR0ZXJuKQorICAgIGJv
b2wgaXNCaW5kaW5nTm9kZShEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXR0ZXJuKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHBhdHRlcm4gPT0gQmluZGluZ0RlY29uc3RydWN0aW9uOworICAgICAgICBy
ZXR1cm4gcGF0dGVybiA9PSBCaW5kaW5nRGVzdHJ1Y3R1cmluZzsKICAgICB9CiAKICAgICB2b2lk
IHNldEVuZE9mZnNldChpbnQsIGludCkgeyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
dGVzdHMvc3RyZXNzL3Jlc2VydmVkLXdvcmQtd2l0aC1lc2NhcGUuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZXNlcnZlZC13b3JkLXdpdGgtZXNj
YXBlLmpzCShyZXZpc2lvbiAxODYxMDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMv
c3RyZXNzL3Jlc2VydmVkLXdvcmQtd2l0aC1lc2NhcGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDkgKzMyLDkgQEAgdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHZhciA9IDIwMAogdGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHZcdTAwNjFyID0gMjAwMDAwMDtgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2
YXJpYWJsZSBuYW1lLmApOwogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHZcdXswMDYx
fXIgPSAyMDAwMDAwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5
d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwogCi10ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2B2YXIge3Zhcn0gPSBvYmopYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQg
J3ZhcicuYCk7Ci10ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3ZcdTAwNjFyfSA9IG9i
amAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25z
dHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0
cmluZy5yYXdgdmFyIHt2XHV7MDA2MX1yfSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3Jk
ICd2YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgdmFyIHt2YXJ9ID0gb2JqKWAs
IFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1
cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2B2YXIge3ZcdTAwNjFyfSA9IG9iamAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3Zhcicu
YCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2B2YXIge3ZcdXswMDYxfXJ9ID0gb2JqYCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVy
aW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKIAogdGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgdmFyIHt2YXI6dmFyfSA9IG9iailgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50
YXhFcnJvcihTdHJpbmcucmF3YHZhciB7dmFyOnZcdTAwNjFyfSA9IG9iamAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlh
YmxlIG5hbWUuYCk7CkBAIC01Niw5ICs1Niw5IEBAIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3
YGZ1bmN0aW9uIGEodmEKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEodlx1
MDA2MXIpIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdv
cmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2BmdW5jdGlvbiBhKHZcdXswMDYxfXIpIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFt
ZS5gKTsKIAotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyfSkgeyB9
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0
cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Ci10ZXN0U3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2BmdW5jdGlvbiBhKHt2XHUwMDYxcn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJy
b3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3
b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dlx1
ezAwNjF9cn0pIHsgfWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2
aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5
bnRheEVycm9yKFN0cmluZy5yYXdgZnVuY3Rpb24gYSh7dmFyfSkgeyB9YCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBm
b3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9u
IGEoe3ZcdTAwNjFyfSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBh
YmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rl
c3RTeW50YXhFcnJvcihTdHJpbmcucmF3YGZ1bmN0aW9uIGEoe3ZcdXswMDYxfXJ9KSB7IH1gLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJp
bmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwogCiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2BmdW5jdGlvbiBhKHt2YXI6dmFyfSkgeyB9YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSB0aGUga2V5d29yZCAndmFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2BmdW5jdGlvbiBhKHt2YXI6dlx1MDA2MXJ9KSB7IH1gLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicg
YXMgYSB2YXJpYWJsZSBuYW1lLmApOwpAQCAtNzYsOSArNzYsOSBAQCB0ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh2CiB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVu
Y3Rpb24gYSh2XHUwMDYxcikgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CiB0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh2XHV7MDA2MX1yKSB7IH0pYCwgU3RyaW5n
LnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMg
YSB2YXJpYWJsZSBuYW1lLmApOwogCi10ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rp
b24gYSh7dmFyfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJi
cmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoe3ZcdTAwNjFyfSkgeyB9KWAsIFN0
cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rp
b24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5y
YXdgKGZ1bmN0aW9uIGEoe3ZcdXswMDYxfXJ9KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdv
cmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7dmFy
fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQg
ZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7dlx1MDA2MXJ9KSB7IH0pYCwgU3RyaW5nLnJhd2BT
eW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBm
b3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlv
biBhKHt2XHV7MDA2MX1yfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1
c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7
CiAKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHt2YXI6dmFyfSkgeyB9
KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3Zhcicg
YXMgYSB2YXJpYWJsZSBuYW1lLmApOwogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0
aW9uIGEoe3Zhcjp2XHUwMDYxcn0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5u
b3QgdXNlIHRoZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwpAQCAt
ODgsOSArODgsOSBAQCB0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShbCiB0
ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShbdlx1MDA2MXJdKSB7IH0pYCwg
U3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXIn
IGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5j
dGlvbiBhKFt2XHV7MDA2MX1yXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEgdmFyaWFibGUgbmFtZS5gKTsKIAot
dGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2YXJ9XSkgeyB9KWAsIFN0
cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVjb25zdHJ1Y3Rp
b24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5y
YXdgKGZ1bmN0aW9uIGEoW3t2XHUwMDYxcn1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdv
cmQgJ3ZhcicuYCk7Ci10ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShbe3Zc
dXswMDYxfXJ9XSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJi
cmV2aWF0ZWQgZGVjb25zdHJ1Y3Rpb24gc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVz
dFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2YXJ9XSkgeyB9KWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBz
eW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Ao
ZnVuY3Rpb24gYShbe3ZcdTAwNjFyfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBD
YW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2
YXInLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2XHV7MDA2
MX1yfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlh
dGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwogCiB0ZXN0U3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYShbe3Zhcjp2YXJ9XSkgeyB9KWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJp
YWJsZSBuYW1lLmApOwogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW3t2
YXI6dlx1MDA2MXJ9XSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2Ug
dGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CkBAIC0xMDAsOSAr
MTAwLDkgQEAgdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoWwogdGVzdFN5
bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoW1t2XHUwMDYxcl1dKSB7IH0pYCwgU3Ry
aW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSB0aGUga2V5d29yZCAndlx1MDA2MXInIGFz
IGEgdmFyaWFibGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlv
biBhKFtbdlx1ezAwNjF9cl1dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90
IHVzZSB0aGUga2V5d29yZCAndlx1ezAwNjF9cicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwogCi10
ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IGhlbGxvOiB7dmFyfX0pIHsg
fSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29u
c3RydWN0aW9uIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKLXRlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5n
LnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBz
eW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Ci10ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Ao
ZnVuY3Rpb24gYSh7IGhlbGxvOiB7dlx1ezAwNjF9cn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9y
IGtleXdvcmQgJ3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24g
YSh7IGhlbGxvOiB7dmFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3Qg
dXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmAp
OwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzoge3ZcdTAw
NjFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlh
dGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBrZXl3b3JkICd2YXInLmApOwordGVzdFN5bnRh
eEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzoge3ZcdXswMDYxfXJ9fSkgeyB9
KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1
Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7CiAKIHRlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVsbG86IHt2YXI6dmFyfX0pIHsgfSlgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3JkICd2YXInIGFzIGEgdmFyaWFi
bGUgbmFtZS5gKTsKIHRlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgaGVs
bG86IHt2YXI6dlx1MDA2MXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5v
dCB1c2UgdGhlIGtleXdvcmQgJ3ZcdTAwNjFyJyBhcyBhIHZhcmlhYmxlIG5hbWUuYCk7CkBAIC0x
MTIsOSArMTEyLDkgQEAgdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoewog
dGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzogW3ZcdTAwNjFy
XX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRoZSBrZXl3b3Jk
ICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwogdGVzdFN5bnRheEVycm9yKFN0cmlu
Zy5yYXdgKGZ1bmN0aW9uIGEoeyBoZWxsbzogW3ZcdXswMDYxfXJdfSkgeyB9KWAsIFN0cmluZy5y
YXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZcdXswMDYxfXInIGFzIGEg
dmFyaWFibGUgbmFtZS5gKTsKIAotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9u
IGEoeyAwOiB7dmFyfSB9KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVz
ZSBhYmJyZXZpYXRlZCBkZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7
Ci10ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2XHUwMDYxcn19
KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJyZXZpYXRlZCBk
ZWNvbnN0cnVjdGlvbiBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7Ci10ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2XHV7MDA2MX1yfX0pIHsgfSlgLCBTdHJp
bmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlY29uc3RydWN0aW9u
IHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3
YChmdW5jdGlvbiBhKHsgMDoge3Zhcn0gfSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQg
J3ZhcicuYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gYSh7IDA6IHt2
XHUwMDYxcn19KSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBhYmJy
ZXZpYXRlZCBkZXN0cnVjdHVyaW5nIHN5bnRheCBmb3Iga2V5d29yZCAndmFyJy5gKTsKK3Rlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3ZcdXswMDYxfXJ9fSkgeyB9
KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgYWJicmV2aWF0ZWQgZGVzdHJ1
Y3R1cmluZyBzeW50YXggZm9yIGtleXdvcmQgJ3ZhcicuYCk7CiAKIHRlc3RTeW50YXhFcnJvcihT
dHJpbmcucmF3YChmdW5jdGlvbiBhKHsgMDoge3Zhcjp2YXJ9fSkgeyB9KWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IENhbm5vdCB1c2UgdGhlIGtleXdvcmQgJ3ZhcicgYXMgYSB2YXJpYWJsZSBu
YW1lLmApOwogdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIGEoeyAwOiB7dmFy
OnZcdTAwNjFyfX0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIHRo
ZSBrZXl3b3JkICd2XHUwMDYxcicgYXMgYSB2YXJpYWJsZSBuYW1lLmApOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZXN0LWVsZW1lbnRzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVzdC1lbGVtZW50cy5qcwko
cmV2aXNpb24gMTg2MTA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9y
ZXN0LWVsZW1lbnRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC05NSwxOSArOTUsMTkgQEAgZnVuY3Rp
b24gdGVzdFN5bnRheEVycm9yKHNjcmlwdCwgbWVzc2FnZQogICAgIHNob3VsZEJlKEpTT04uc3Ry
aW5naWZ5KGMpLCBTdHJpbmcucmF3YFtdYCk7CiB9KCJDIikpOwogCi10ZXN0U3ludGF4RXJyb3Io
U3RyaW5nLnJhd2B2YXIgW2EsIC4uLmIsIGNdID0gMjBgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcg
YSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKLXRlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YHZhciBbYSwgLi4uYixdID0gMjBgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dpbmcg
YSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKLXRlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YHZhciBbYSwgLi4uYiwsXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5n
IGEgcmVzdCBlbGVtZW50IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci10ZXN0U3ludGF4RXJy
b3IoU3RyaW5nLnJhd2B2YXIgW2EsIC4uLmIgPSAyMF0gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxv
d2luZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuLmApOwotdGVzdFN5bnRh
eEVycm9yKFN0cmluZy5yYXdgdmFyIFthLCAuLi5bYiwgY11dID0gMjBgLCBTdHJpbmcucmF3YFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICddJy4gRXhwZWN0ZWQgaWRlbnRpZmllciBmb3Ig
YSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKLXRlc3RTeW50YXhFcnJv
cihTdHJpbmcucmF3YHZhciBbYSwgLi4ueyBiLCBjIH1dID0gMjBgLCBTdHJpbmcucmF3YFN5bnRh
eEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICddJy4gRXhwZWN0ZWQgaWRlbnRpZmllciBmb3IgYSBy
ZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKLQotdGVzdFN5bnRheEVycm9y
KFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4uYiwgY10pIHsgfSlgLCBTdHJpbmcucmF3YFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBm
b2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKLXRlc3RT
eW50YXhFcnJvcihTdHJpbmcucmF3YChmdW5jdGlvbiAoW2EsIC4uLmIsXSkgeyB9KWAsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3Np
bmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBwYXR0ZXJuLmAp
OwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4uYiwsXSkgeyB9
KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3Rl
ZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZWNvbnN0cnVjdGlvbiBw
YXR0ZXJuLmApOwotdGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4u
YiA9IDIwLCxdKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAnPScuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRl
Y29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci10ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVu
Y3Rpb24gKFthLCAuLi5bYiwgY11dKSB7IH0pYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBlbGVtZW50
IGRlY29uc3RydWN0aW9uIHBhdHRlcm4uYCk7Ci10ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Ao
ZnVuY3Rpb24gKFthLCAuLi57IGIsIGMgfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHRva2VuICddJy4gRXhwZWN0ZWQgaWRlbnRpZmllciBmb3IgYSByZXN0IGVs
ZW1lbnQgZGVjb25zdHJ1Y3Rpb24gcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YHZhciBbYSwgLi4uYiwgY10gPSAyMGAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3Qg
ZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5n
LnJhd2B2YXIgW2EsIC4uLmIsXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBl
bGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YHZhciBbYSwgLi4uYiwsXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBl
bGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcu
cmF3YHZhciBbYSwgLi4uYiA9IDIwXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnPScuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVz
dCBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJp
bmcucmF3YHZhciBbYSwgLi4uW2IsIGNdXSA9IDIwYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
VW5leHBlY3RlZCB0b2tlbiAnXScuIEV4cGVjdGVkIGlkZW50aWZpZXIgZm9yIGEgcmVzdCBlbGVt
ZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi5gKTsKK3Rlc3RTeW50YXhFcnJvcihTdHJpbmcucmF3
YHZhciBbYSwgLi4ueyBiLCBjIH1dID0gMjBgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4
cGVjdGVkIHRva2VuICddJy4gRXhwZWN0ZWQgaWRlbnRpZmllciBmb3IgYSByZXN0IGVsZW1lbnQg
ZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLmApOworCit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2Ao
ZnVuY3Rpb24gKFthLCAuLi5iLCBjXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10nIGZvbGxvd2luZyBhIHJl
c3QgZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AoZnVuY3Rpb24gKFthLCAuLi5iLF0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVy
cm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICddJyBmb2xsb3dp
bmcgYSByZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLmApOwordGVzdFN5bnRheEVy
cm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4uYiwsXSkgeyB9KWAsIFN0cmluZy5yYXdg
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ10n
IGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uYCk7Cit0ZXN0
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gKFthLCAuLi5iID0gMjAsLF0pIHsgfSlg
LCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICc9Jy4gRXhwZWN0ZWQg
YSBjbG9zaW5nICddJyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1cmluZyBwYXR0
ZXJuLmApOwordGVzdFN5bnRheEVycm9yKFN0cmluZy5yYXdgKGZ1bmN0aW9uIChbYSwgLi4uW2Is
IGNdXSkgeyB9KWAsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ10n
LiBFeHBlY3RlZCBpZGVudGlmaWVyIGZvciBhIHJlc3QgZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBh
dHRlcm4uYCk7Cit0ZXN0U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AoZnVuY3Rpb24gKFthLCAuLi57
IGIsIGMgfV0pIHsgfSlgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2Vu
ICddJy4gRXhwZWN0ZWQgaWRlbnRpZmllciBmb3IgYSByZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1cmlu
ZyBwYXR0ZXJuLmApOwogCiBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CiAgICAgW2EsIC4uLmIs
IGNdID0gMjA7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODYxOTkpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNyBAQAorMjAxNS0wNy0wMSAgU2FhbSBi
YXJhdGkgIDxzYWFtYmFyYXRpMUBnbWFpbC5jb20+CisKKyAgICAgICAgUmVuYW1lICJEZWNvbnN0
cnVjdGlvbiIgdG8gIkRlc3RydWN0dXJpbmciIHRocm91Z2hvdXQgSlNDCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYxMDAKKworICAgICAgICBSZXZp
ZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIGpzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRl
cnMtc2hvdWxkLWJlLWxvY2Fscy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICoganMv
ZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0bWw6IFJlbW92ZWQu
CisgICAgICAgICoganMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBqcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy1leHBl
Y3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91dFRlc3RzL2pzL2RlY29uc3RydWN0aW5nLXBhcmFt
ZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy1leHBlY3RlZC50eHQuCisgICAgICAgICoganMvZGVzdHJ1
Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbDogQ29waWVkIGZyb20gTGF5
b3V0VGVzdHMvanMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0
bWwuCisgICAgICAgICoganMvcmVncmVzcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLW92ZXJy
aWRkZW4tYnktZnVuY3Rpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGpzL3Jl
Z3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICoganMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRl
cnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQ6IENvcGllZCBmcm9tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL2Rlc3RydWN0dXJp
bmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0bWw6IENvcGllZCBmcm9tIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVu
LWJ5LWZ1bmN0aW9uLmh0bWwuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZGVj
b25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpzOiBSZW1vdmVk
LgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctcGFyYW1l
dGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLW92ZXJyaWRk
ZW4tYnktZnVuY3Rpb24uanMuCisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0
aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qczogUmVtb3ZlZC4KKyAgICAgICAgKiBq
cy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LmpzOgorICAgICAgICAodGVz
dERlc3RydWN0dXJlZEFyZ3MpOgorICAgICAgICAodGVzdERlc3RydWN0dXJlZEFyZ0xlbmd0aCk6
CisgICAgICAgICh0ZXN0RGVjb25zdHJ1Y3RBcmdzKTogRGVsZXRlZC4KKyAgICAgICAgKHRlc3RE
ZWNvbnN0cnVjdEFyZ0xlbmd0aCk6IERlbGV0ZWQuCisgICAgICAgICoganMvc2NyaXB0LXRlc3Rz
L2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzOiBDb3BpZWQgZnJv
bSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1z
aG91bGQtYmUtbG9jYWxzLmpzLgorICAgICAgICAoZGVzY3JpcHRpb24udmFsdWUuc3RyaW5nX2Fw
cGVhcmVkX2hlcmUucmVhZERlc3RydWN0dXJlZFBhcmFtZXRlcik6CisgICAgICAgIChvdmVyd3Jp
dGVEZXN0cnVjdHVyZWRQYXJhbWV0ZXIpOgorICAgICAgICAocmVhZENhcHR1cmVkRGVzdHJ1Y3R1
cmVkUGFyYW1ldGVyKToKKyAgICAgICAgKG92ZXJ3cml0ZUNhcHR1cmVkRGVzdHJ1Y3R1cmVkUGFy
YW1ldGVyKToKKyAgICAgICAgKGRlc2NyaXB0aW9uLnZhbHVlLnN0cmluZ19hcHBlYXJlZF9oZXJl
LnJlYWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKTogRGVsZXRlZC4KKyAgICAgICAgKG92ZXJ3cml0
ZURlY29uc3RydWN0ZWRQYXJhbWV0ZXIpOiBEZWxldGVkLgorICAgICAgICAocmVhZENhcHR1cmVk
RGVjb25zdHJ1Y3RlZFBhcmFtZXRlcik6IERlbGV0ZWQuCisgICAgICAgIChvdmVyd3JpdGVDYXB0
dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIpOiBEZWxldGVkLgorCiAyMDE1LTA3LTAxICBNYXR0
aGV3IERhaXRlciAgPG1kYWl0ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFR1cm4gb2ZmIG1lZGlh
c3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWwgdGVzdApJbmRleDogTGF5b3V0VGVzdHMvanMvZGVj
b25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3Vs
ZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxODYxMDQpCisrKyBMYXlvdXRUZXN0
cy9qcy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDE0ICswLDAgQEAKLVRoaXMgdGVzdHMgdG8gZW5zdXJl
IHRoYXQgZGRlY29uc3RydWN0aW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2UgcmVndWxhciBsb2Nh
bHMKLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgcmVhZERlY29uc3RydWN0
ZWRQYXJhbWV0ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCi1QQVNTIG92ZXJ3cml0ZURlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7IHZhbHVlOyBpcyAnb3V0ZXInCi1QQVNTIHJlYWRD
YXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCi1QQVNT
IG92ZXJ3cml0ZUNhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgaXMg
J2lubmVybW9zdCcKLVBBU1MgdmFsdWUgaXMgJ291dGVyJwotUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0KSW5kZXg6IExheW91dFRlc3RzL2pzL2RlY29u
c3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fs
cy5odG1sCShyZXZpc2lvbiAxODYxMDQpCisrKyBMYXlvdXRUZXN0cy9qcy9kZWNvbnN0cnVjdGlu
Zy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMv
ZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctYXNzaWdu
bWVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1
cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTg2MTA0KQorKysgTGF5b3V0
VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNzgsOSArNzgsOSBAQCBQQVNTIChmdW5jdGlvbiAoeydhJzphLCdiJzpifSkgeyBy
ZXR1cm4gCiBQQVNTICh7J2EnOmEsJ2InOmJ9PWFuT2JqZWN0KTsgdmFyIHI9YStiOyByIGlzICcx
MicKIFBBU1MgYStiIGlzICcxMTIyJwogUEFTUyBhK2IgaXMgJzIyMTEnCi1QQVNTIHRlc3REZWNv
bnN0cnVjdEFyZ3MoJzEnLCAnMicpIGlzICcxMicKLVBBU1MgdGVzdERlY29uc3RydWN0QXJnTGVu
Z3RoKCcxJywgJzInKSBpcyAyCi1QQVNTIHRlc3REZWNvbnN0cnVjdEFyZ3MoJzInKSBpcyAnMnVu
ZGVmaW5lZCcKK1BBU1MgdGVzdERlc3RydWN0dXJlZEFyZ3MoJzEnLCAnMicpIGlzICcxMicKK1BB
U1MgdGVzdERlc3RydWN0dXJlZEFyZ0xlbmd0aCgnMScsICcyJykgaXMgMgorUEFTUyB0ZXN0RGVz
dHJ1Y3R1cmVkQXJncygnMicpIGlzICcydW5kZWZpbmVkJwogUEFTUyBhIGlzIDEKIFBBU1MgYiBp
cyAyCiBQQVNTIGMgaXMgMwpJbmRleDogTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJh
bWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMTg2MTA0KQkoZnJvbSBMYXlvdXRUZXN0cy9qcy9kZWNvbnN0cnVj
dGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0OjE4NjEwNCkKKysr
IExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxz
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3Rz
IHRvIGVuc3VyZSB0aGF0IGRkZWNvbnN0cnVjdGluZyBwYXJhbWV0ZXJzIGJlaGF2ZSBsaWtlIHJl
Z3VsYXIgbG9jYWxzCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHJlYWRE
ZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkgaXMgJ2lubmVyJworUEFTUyBvdmVyd3Jp
dGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyB2YWx1ZTsgaXMgJ291dGVyJwor
UEFTUyByZWFkQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkgaXMgJ2lu
bmVyJworUEFTUyBvdmVyd3JpdGVDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWyd1bnVz
ZWQnXSk7IGlzICdpbm5lcm1vc3QnCitQQVNTIHZhbHVlIGlzICdvdXRlcicKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0
cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJz
LXNob3VsZC1iZS1sb2NhbHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRU
ZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzEsMTIgQEAKLVRoaXMgdGVzdHMgdG8gZW5z
dXJlIHRoYXQgZGRlY29uc3RydWN0aW5nIHBhcmFtZXRlcnMgYmVoYXZlIGxpa2UgcmVndWxhciBs
b2NhbHMKK1RoaXMgdGVzdHMgdG8gZW5zdXJlIHRoYXQgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXJz
IGJlaGF2ZSBsaWtlIHJlZ3VsYXIgbG9jYWxzCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
IAogCi1QQVNTIHJlYWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkgaXMgJ2lubmVy
JwotUEFTUyBvdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyB2YWx1
ZTsgaXMgJ291dGVyJwotUEFTUyByZWFkQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsn
aW5uZXInXSkgaXMgJ2lubmVyJwotUEFTUyBvdmVyd3JpdGVDYXB0dXJlZERlY29uc3RydWN0ZWRQ
YXJhbWV0ZXIoWyd1bnVzZWQnXSk7IGlzICdpbm5lcm1vc3QnCitQQVNTIHJlYWREZXN0cnVjdHVy
ZWRQYXJhbWV0ZXIoWydpbm5lciddKSBpcyAnaW5uZXInCitQQVNTIG92ZXJ3cml0ZURlc3RydWN0
dXJlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgdmFsdWU7IGlzICdvdXRlcicKK1BBU1MgcmVhZENh
cHR1cmVkRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFsnaW5uZXInXSkgaXMgJ2lubmVyJworUEFTUyBv
dmVyd3JpdGVDYXB0dXJlZERlc3RydWN0dXJlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsgaXMgJ2lu
bmVybW9zdCcKIFBBU1MgdmFsdWUgaXMgJ291dGVyJwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMt
c2hvdWxkLWJlLWxvY2Fscy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rlc3Ry
dWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmh0bWwJKHJldmlzaW9uIDE4NjEw
NCkJKGZyb20gTGF5b3V0VGVzdHMvanMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQt
YmUtbG9jYWxzLmh0bWw6MTg2MTA0KQorKysgTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1w
YXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZGVj
b25zdHJ1Y3RpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVy
cy1zaG91bGQtYmUtbG9jYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvZGVz
dHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuaHRtbAkod29ya2luZyBjb3B5
KQorKysgTGF5b3V0VGVzdHMvanMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1s
b2NhbHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08
c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxk
LWJlLWxvY2Fscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2Rlc3Ry
dWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFy
YW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJp
ZGRlbi1ieS1mdW5jdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4NjEwNCkKKysrIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5
LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMCwwIEBACi1K
U1JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9u
Ci0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIG5vIGV4Y2VwdGlvbiB0aHJv
d24KLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCklu
ZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3Zl
cnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Jl
Z3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0
bWwJKHJldmlzaW9uIDE4NjEwNCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1
Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJz
Y3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0
aW9uLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1w
b3N0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVzdHJ1
Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxODYxMDQpCShmcm9tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3Rp
bmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dDoxODYxMDQp
CisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVy
cmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEwIEBACitKU1JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5
LWZ1bmN0aW9uCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2Vw
dGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1l
dGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVu
LWJ5LWZ1bmN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQorKysgTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlv
bi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi1KU1JlZ3Jlc3Mv
ZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uCitKU1JlZ3Jl
c3MvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24KIAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rl
c3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMt
b3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCShyZXZpc2lvbiAxODYxMDQpCShmcm9tIExheW91
dFRlc3RzL2pzL3JlZ3Jlc3MvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5
LWZ1bmN0aW9uLmh0bWw6MTg2MTA0KQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVj
dHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
c2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5j
dGlvbi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3Mt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9u
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9kZXN0cnVjdHVyaW5n
LXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5jdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1vdmVycmlk
ZGVuLWJ5LWZ1bmN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsNyArNSw3IEBACiA8L2hl
YWQ+CiA8Ym9keT4KIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJh
bWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InNjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtb3ZlcnJpZGRlbi1ieS1mdW5j
dGlvbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3Mt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNz
L3NjcmlwdC10ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVu
Y3Rpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVz
dHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpzCShy
ZXZpc2lvbiAxODYxMDQpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9k
ZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24uanMJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTEgKzAsMCBAQAotZnVuY3Rpb24gZigpIHsgcmV0dXJuIDQwOyB9Ci1m
dW5jdGlvbiB0ZXN0KHthcmd9KSB7Ci0gICAgZnVuY3Rpb24gYXJnKCkgeyByZXR1cm4gNDE7IH0K
LSAgICByZXR1cm4gYXJnOwotfQotbm9JbmxpbmUodGVzdCk7Ci0KLWZvciAodmFyIGkgPSAwOyBp
IDwgMTAwMDsgaSsrKSB7Ci0gICAgaWYgKHRlc3Qoe2FyZzogZn0pKCkgIT09IDQxKQotICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoImJhZCB2YWx1ZSIpOwotfQpJbmRleDogTGF5b3V0VGVzdHMvanMv
cmVncmVzcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4t
YnktZnVuY3Rpb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3Jp
cHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLW92ZXJyaWRkZW4tYnktZnVuY3Rpb24u
anMJKHJldmlzaW9uIDE4NjEwNCkJKGZyb20gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpz
OjE4NjEwNCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2Rlc3RydWN0
dXJpbmctcGFyYW1ldGVycy1vdmVycmlkZGVuLWJ5LWZ1bmN0aW9uLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsMTEgQEAKK2Z1bmN0aW9uIGYoKSB7IHJldHVybiA0MDsgfQorZnVuY3Rpb24g
dGVzdCh7YXJnfSkgeworICAgIGZ1bmN0aW9uIGFyZygpIHsgcmV0dXJuIDQxOyB9CisgICAgcmV0
dXJuIGFyZzsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7
IGkrKykgeworICAgIGlmICh0ZXN0KHthcmc6IGZ9KSgpICE9PSA0MSkKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJiYWQgdmFsdWUiKTsKK30KSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10
ZXN0cy9kZWNvbnN0cnVjdGluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFt
ZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcwkocmV2aXNpb24gMTg2MTA0KQorKysgTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2RlY29uc3RydWN0aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxv
Y2Fscy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwzNSArMCwwIEBACi1kZXNjcmlwdGlvbigiVGhp
cyB0ZXN0cyB0byBlbnN1cmUgdGhhdCBkZGVjb25zdHJ1Y3RpbmcgcGFyYW1ldGVycyBiZWhhdmUg
bGlrZSByZWd1bGFyIGxvY2FscyIpCi0KLXZhciB2YWx1ZT0ib3V0ZXIiCi1mdW5jdGlvbiByZWFk
RGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7Ci0gICAgcmV0dXJuIHZhbHVlOwotfQot
Ci1mdW5jdGlvbiBvdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKLQl2
YWx1ZSA9ICJpbm5lciIKLX0KLQotZnVuY3Rpb24gcmVhZENhcHR1cmVkRGVjb25zdHJ1Y3RlZFBh
cmFtZXRlcihbdmFsdWVdKSB7Ci0JcmV0dXJuIChmdW5jdGlvbiAoKSB7Ci0JICAgIHJldHVybiB2
YWx1ZTsKLQl9KSgpCi19Ci0KLWZ1bmN0aW9uIG92ZXJ3cml0ZUNhcHR1cmVkRGVjb25zdHJ1Y3Rl
ZFBhcmFtZXRlcihbdmFsdWVdKSB7Ci0JKGZ1bmN0aW9uICgpIHsKLQkgICAgdmFsdWUgPSAiaW5u
ZXJtb3N0IjsKLQl9KSgpCi0JcmV0dXJuIHZhbHVlCi19Ci0KLXNob3VsZEJlKCJyZWFkRGVjb25z
dHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pIiwgIidpbm5lciciKQotb3ZlcndyaXRlRGVjb25z
dHJ1Y3RlZFBhcmFtZXRlcihbJ2lubmVyJ10pCi0KLXNob3VsZEJlKCJvdmVyd3JpdGVEZWNvbnN0
cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyB2YWx1ZTsiLCAiJ291dGVyJyIpCi0KLXNob3Vs
ZEJlKCJyZWFkQ2FwdHVyZWREZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkiLCAiJ2lu
bmVyJyIpCi1vdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkKLQotc2hv
dWxkQmUoIm92ZXJ3cml0ZUNhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCdd
KTsiLCAiJ2lubmVybW9zdCciKQotc2hvdWxkQmUoInZhbHVlIiwgIidvdXRlciciKQotCkluZGV4
OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1hc3NpZ25tZW50Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVyaW5n
LWFzc2lnbm1lbnQuanMJKHJldmlzaW9uIDE4NjEwNCkKKysrIExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9kZXN0cnVjdHVyaW5nLWFzc2lnbm1lbnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDIwICszNSwyMCBAQCB2YXIgW2EsYl0gPSBbJzExJywnMjInXQogc2hvdWxkQmUoImErYiIsICIn
MTEyMiciKQogdmFyIFtiLGFdID0gW2EsYl07CiBzaG91bGRCZSgiYStiIiwgIicyMjExJyIpCi1m
dW5jdGlvbiB0ZXN0RGVjb25zdHJ1Y3RBcmdzKCkgeworZnVuY3Rpb24gdGVzdERlc3RydWN0dXJl
ZEFyZ3MoKSB7CiAgICAgdmFyIFthLGJdID0gYXJndW1lbnRzOwogICAgIHJldHVybiBhK2I7CiB9
CiAKLWZ1bmN0aW9uIHRlc3REZWNvbnN0cnVjdEFyZ0xlbmd0aCgpIHsKK2Z1bmN0aW9uIHRlc3RE
ZXN0cnVjdHVyZWRBcmdMZW5ndGgoKSB7CiAgICAgdmFyIHtsZW5ndGh9ID0gYXJndW1lbnRzOwog
ICAgIHJldHVybiBsZW5ndGg7CiB9Ci1zaG91bGRCZSgidGVzdERlY29uc3RydWN0QXJncygnMScs
ICcyJykiLCAiJzEyJyIpOwotc2hvdWxkQmUoInRlc3REZWNvbnN0cnVjdEFyZ0xlbmd0aCgnMScs
ICcyJykiLCAiMiIpOworc2hvdWxkQmUoInRlc3REZXN0cnVjdHVyZWRBcmdzKCcxJywgJzInKSIs
ICInMTInIik7CitzaG91bGRCZSgidGVzdERlc3RydWN0dXJlZEFyZ0xlbmd0aCgnMScsICcyJyki
LCAiMiIpOwogdmFyIHRleHQgPSAnMyc7CiBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVy
X18oMSwgZnVuY3Rpb24oKXsgdmFyIHIgPSB0ZXh0OyB0ZXh0ID0gImZhaWwiOyByZXR1cm4gcjsg
fSkKLXNob3VsZEJlKCJ0ZXN0RGVjb25zdHJ1Y3RBcmdzKCcyJykiLCAiJzJ1bmRlZmluZWQnIik7
CitzaG91bGRCZSgidGVzdERlc3RydWN0dXJlZEFyZ3MoJzInKSIsICInMnVuZGVmaW5lZCciKTsK
IAogdmFyIFthLGJdID0gWzEsMl0sIFtjLGRdID0gWzMsNF0KIApJbmRleDogTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmctcGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9kZXN0cnVjdHVy
aW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcwkocmV2aXNpb24gMTg2MTA0KQkoZnJv
bSBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVjb25zdHJ1Y3RpbmctcGFyYW1ldGVycy1z
aG91bGQtYmUtbG9jYWxzLmpzOjE4NjEwNCkKKysrIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9kZXN0cnVjdHVyaW5nLXBhcmFtZXRlcnMtc2hvdWxkLWJlLWxvY2Fscy5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM1IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0byBlbnN1cmUg
dGhhdCBkZGVjb25zdHJ1Y3RpbmcgcGFyYW1ldGVycyBiZWhhdmUgbGlrZSByZWd1bGFyIGxvY2Fs
cyIpCisKK3ZhciB2YWx1ZT0ib3V0ZXIiCitmdW5jdGlvbiByZWFkRGVjb25zdHJ1Y3RlZFBhcmFt
ZXRlcihbdmFsdWVdKSB7CisgICAgcmV0dXJuIHZhbHVlOworfQorCitmdW5jdGlvbiBvdmVyd3Jp
dGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFt2YWx1ZV0pIHsKKwl2YWx1ZSA9ICJpbm5lciIKK30K
KworZnVuY3Rpb24gcmVhZENhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7
CisJcmV0dXJuIChmdW5jdGlvbiAoKSB7CisJICAgIHJldHVybiB2YWx1ZTsKKwl9KSgpCit9CisK
K2Z1bmN0aW9uIG92ZXJ3cml0ZUNhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVd
KSB7CisJKGZ1bmN0aW9uICgpIHsKKwkgICAgdmFsdWUgPSAiaW5uZXJtb3N0IjsKKwl9KSgpCisJ
cmV0dXJuIHZhbHVlCit9CisKK3Nob3VsZEJlKCJyZWFkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihb
J2lubmVyJ10pIiwgIidpbm5lciciKQorb3ZlcndyaXRlRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihb
J2lubmVyJ10pCisKK3Nob3VsZEJlKCJvdmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsn
dW51c2VkJ10pOyB2YWx1ZTsiLCAiJ291dGVyJyIpCisKK3Nob3VsZEJlKCJyZWFkQ2FwdHVyZWRE
ZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkiLCAiJ2lubmVyJyIpCitvdmVyd3JpdGVE
ZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkKKworc2hvdWxkQmUoIm92ZXJ3cml0ZUNh
cHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsiLCAiJ2lubmVybW9zdCci
KQorc2hvdWxkQmUoInZhbHVlIiwgIidvdXRlciciKQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1sb2NhbHMuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2Rlc3RydWN0dXJpbmct
cGFyYW1ldGVycy1zaG91bGQtYmUtbG9jYWxzLmpzCSh3b3JraW5nIGNvcHkpCisrKyBMYXlvdXRU
ZXN0cy9qcy9zY3JpcHQtdGVzdHMvZGVzdHJ1Y3R1cmluZy1wYXJhbWV0ZXJzLXNob3VsZC1iZS1s
b2NhbHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTEsMzUgKzEsMzUgQEAKLWRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRvIGVuc3VyZSB0aGF0IGRkZWNvbnN0cnVjdGluZyBwYXJhbWV0ZXJzIGJlaGF2
ZSBsaWtlIHJlZ3VsYXIgbG9jYWxzIikKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRvIGVuc3Vy
ZSB0aGF0IGRlc3RydWN0dXJpbmcgcGFyYW1ldGVycyBiZWhhdmUgbGlrZSByZWd1bGFyIGxvY2Fs
cyIpCiAKIHZhciB2YWx1ZT0ib3V0ZXIiCi1mdW5jdGlvbiByZWFkRGVjb25zdHJ1Y3RlZFBhcmFt
ZXRlcihbdmFsdWVdKSB7CitmdW5jdGlvbiByZWFkRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFt2YWx1
ZV0pIHsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLWZ1bmN0aW9uIG92ZXJ3cml0ZURlY29uc3Ry
dWN0ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgeworZnVuY3Rpb24gb3ZlcndyaXRlRGVzdHJ1Y3R1cmVk
UGFyYW1ldGVyKFt2YWx1ZV0pIHsKIAl2YWx1ZSA9ICJpbm5lciIKIH0KIAotZnVuY3Rpb24gcmVh
ZENhcHR1cmVkRGVjb25zdHJ1Y3RlZFBhcmFtZXRlcihbdmFsdWVdKSB7CitmdW5jdGlvbiByZWFk
Q2FwdHVyZWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgewogCXJldHVybiAoZnVuY3Rp
b24gKCkgewogCSAgICByZXR1cm4gdmFsdWU7CiAJfSkoKQogfQogCi1mdW5jdGlvbiBvdmVyd3Jp
dGVDYXB0dXJlZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgeworZnVuY3Rpb24gb3Zl
cndyaXRlQ2FwdHVyZWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIoW3ZhbHVlXSkgewogCShmdW5jdGlv
biAoKSB7CiAJICAgIHZhbHVlID0gImlubmVybW9zdCI7CiAJfSkoKQogCXJldHVybiB2YWx1ZQog
fQogCi1zaG91bGRCZSgicmVhZERlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKSIsICIn
aW5uZXInIikKLW92ZXJ3cml0ZURlY29uc3RydWN0ZWRQYXJhbWV0ZXIoWydpbm5lciddKQorc2hv
dWxkQmUoInJlYWREZXN0cnVjdHVyZWRQYXJhbWV0ZXIoWydpbm5lciddKSIsICInaW5uZXInIikK
K292ZXJ3cml0ZURlc3RydWN0dXJlZFBhcmFtZXRlcihbJ2lubmVyJ10pCiAKLXNob3VsZEJlKCJv
dmVyd3JpdGVEZWNvbnN0cnVjdGVkUGFyYW1ldGVyKFsndW51c2VkJ10pOyB2YWx1ZTsiLCAiJ291
dGVyJyIpCitzaG91bGRCZSgib3ZlcndyaXRlRGVzdHJ1Y3R1cmVkUGFyYW1ldGVyKFsndW51c2Vk
J10pOyB2YWx1ZTsiLCAiJ291dGVyJyIpCiAKLXNob3VsZEJlKCJyZWFkQ2FwdHVyZWREZWNvbnN0
cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkiLCAiJ2lubmVyJyIpCi1vdmVyd3JpdGVEZWNvbnN0
cnVjdGVkUGFyYW1ldGVyKFsnaW5uZXInXSkKK3Nob3VsZEJlKCJyZWFkQ2FwdHVyZWREZXN0cnVj
dHVyZWRQYXJhbWV0ZXIoWydpbm5lciddKSIsICInaW5uZXInIikKK292ZXJ3cml0ZURlc3RydWN0
dXJlZFBhcmFtZXRlcihbJ2lubmVyJ10pCiAKLXNob3VsZEJlKCJvdmVyd3JpdGVDYXB0dXJlZERl
Y29uc3RydWN0ZWRQYXJhbWV0ZXIoWyd1bnVzZWQnXSk7IiwgIidpbm5lcm1vc3QnIikKK3Nob3Vs
ZEJlKCJvdmVyd3JpdGVDYXB0dXJlZERlc3RydWN0dXJlZFBhcmFtZXRlcihbJ3VudXNlZCddKTsi
LCAiJ2lubmVybW9zdCciKQogc2hvdWxkQmUoInZhbHVlIiwgIidvdXRlciciKQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>