<?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>166789</bug_id>
          
          <creation_ts>2017-01-06 18:02:28 -0800</creation_ts>
          <short_desc>[Cocoa] Consolidate duplicate copies of WebArchiveDumpSupport in DRT and WKTR into WebCoreTestSupport</short_desc>
          <delta_ts>2017-01-06 22:22:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>joepeck</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1264592</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-01-06 18:02:28 -0800</bug_when>
    <thetext>[Cocoa] Consolidate duplicate copies of WebArchiveDumpSupport in DRT and WKTR into WebCoreTestSupport</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264597</commentid>
    <comment_count>1</comment_count>
      <attachid>298241</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-01-06 18:10:24 -0800</bug_when>
    <thetext>Created attachment 298241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264602</commentid>
    <comment_count>2</comment_count>
      <attachid>298243</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-01-06 18:23:00 -0800</bug_when>
    <thetext>Created attachment 298243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264604</commentid>
    <comment_count>3</comment_count>
      <attachid>298243</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-01-06 18:25:50 -0800</bug_when>
    <thetext>Comment on attachment 298243
Patch

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

&gt; Source/WebCore/PlatformMac.cmake:747
&gt; +    bindings/cocoa/WebArchiveDumpSupport.mm

bindings?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264607</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-01-06 18:36:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 298243 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=298243&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/PlatformMac.cmake:747
&gt; &gt; +    bindings/cocoa/WebArchiveDumpSupport.mm
&gt; 
&gt; bindings?

Oops! Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264618</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-01-06 19:10:33 -0800</bug_when>
    <thetext>Alex reviewed in person.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264619</commentid>
    <comment_count>6</comment_count>
      <attachid>298248</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-01-06 19:12:55 -0800</bug_when>
    <thetext>Created attachment 298248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264625</commentid>
    <comment_count>7</comment_count>
      <attachid>298248</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-06 19:50:03 -0800</bug_when>
    <thetext>Comment on attachment 298248
Patch

Clearing flags on attachment: 298248

Committed r210467: &lt;http://trac.webkit.org/changeset/210467&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264626</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-06 19:50:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264629</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-01-06 20:01:28 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=298243&amp;action=review

&gt; Source/WebCore/platform/spi/cf/CFNetworkSPI.h:186
&gt; +CFTypeID CFURLResponseGetTypeID();

No code actually uses this. Do we expect any code to use it?

&gt; Source/WebCore/platform/spi/cf/CFNetworkSPI.h:188
&gt; +void CFURLResponseSetExpectedContentLength(CFURLResponseRef, SInt64 length);

No code actually uses this. Do we expect any code to use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264653</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-01-06 22:09:52 -0800</bug_when>
    <thetext>Why not put the files in Tools/TestRunnerShared/ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1264656</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-01-06 22:22:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 298248 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 298248
&gt; 
&gt; Committed r210467: &lt;http://trac.webkit.org/changeset/210467&gt;

It broke the Apple Mac cmake build. https://build.webkit.org/builders/Apple%20El%20Capitan%20CMake%20Debug%20%28Build%29/builds/11115</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298241</attachid>
            <date>2017-01-06 18:10:24 -0800</date>
            <delta_ts>2017-01-06 18:22:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166789-20170106180854.patch</filename>
            <type>text/plain</type>
            <size>79960</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MyNzcxMjFjNTczMzQ5
ZWRhYjQxYzY3ODRhM2JkNjlhMTE1MDk4NS4uNzMxOTUyY2UxM2ZhNmZjMTE4YTg3Y2QwMzc5MDBl
N2ExMWJlZmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAxLTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENvbnNvbGlkYXRl
IGR1cGxpY2F0ZSBjb3BpZXMgb2YgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0IGluIERSVCBhbmQgV0tU
UiBpbnRvIFdlYkNvcmVUZXN0U3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY2Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUaGVyZSB3ZXJlIGR1cGxpY2F0ZSBpbXBsZW1lbnRh
dGlvbnMgb2YgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0IGluIER1bXBSZW5kZXJUcmVlIGFuZAorICAg
ICAgICBXZWJLaXRUZXN0UnVubmVyLiBUaGlzIGNoYW5nZSBjb25zb2xpZGF0ZXMgdGhlc2UgaW50
byBhIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBpbgorICAgICAgICBXZWJDb3JlVGVzdFN1cHBvcnQu
CisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQgV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0Lm1tIHRvIFdlYkNvcmVUZXN0U3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IERpdHRvLiBBbHNvIG1hZGUgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmggYSBQcml2YXRlIGhlYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmg6IE1vdmVkIENGTmV0d29yayBmb3J3YXJkIGRlY2xhcmF0aW9ucyBmcm9tCisgICAgICAg
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydCB0byBoZXJlLgorICAgICAgICAqIHRlc3RpbmcvY29jb2Ev
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvY29jb2Ev
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOiBNZXJnZWQgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNw
cCBhbmQKKyAgICAgICAgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0e0NvY29hLE1hY30ubW0gaW50byBh
IHNpbmdsZSBmaWxlLgorCiAyMDE3LTAxLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFRlYWNoIFNoYXJlZEJ1ZmZlciB0byByZXR1cm4gYW4gTlNB
cnJheSBvZiBkYXRhIHNlZ21lbnRzIHRvIGF2b2lkIGZsYXR0ZW5pbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKaW5kZXggOTQyNDQ2NGNjN2U2NzA2OTJlZDVjMTMwYjhmNTAzNDFiYjBhNjk0Ni4u
MzM5NjEwZTYyMWZiOTE4OTk1MjY4NWQ4YTI4OGYwNmJhMzI5NWJlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTc0NCw2ICs3NDQsOCBAQCBzZXQoQURESVRJT05BTF9CSU5ESU5HU19E
RVBFTkRFTkNJRVMKIHNldChXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSWV9UWVBFIFNIQVJFRCkK
IGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJJRVMgUFJJVkFURSBXZWJDb3Jl
KQogbGlzdChBUFBFTkQgV2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJDRVMKKyAgICBiaW5kaW5ncy9j
b2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKwogICAgIGJpbmRpbmdzL2pzL0pTTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKIAogICAgIHRlc3RpbmcvSW50ZXJuYWxzLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTAyYmM1NmQ1NGRhZWY5NTZjY2ZmNTk3OTEwY2Y2Mzk0NjI1ZTBlMC4uZWI5ZTM2ZjU5
MTI1M2Q3ZGU1NGRhY2JkMWZjMmY2ODgwOTcxN2Y4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzkyOCw2ICszOTI4LDkgQEAK
IAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJB
RjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMTVFMzFG
MzFFMENCMEIyMDA0QjM3MUMgLyogUXVpY2tMb29rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RTMxRjIxRTBDQjBBQTAwNEIzNzFDIC8qIFF1aWNr
TG9vay5tbSAqLzsgfTsKIAkJQTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RTMxRjEx
RTBDQjBBQTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUExNzYzRjNFMUUyMDUyMzQwMDFENThERSAvKiBXZWJB
cmNoaXZlRHVtcFN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTc2M0YzQzFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0Lm1tICovOyB9OworCQlBMTc2M0YzRjFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTc2M0YzRDFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTE3NjNGNDEx
RTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc2M0Y0MDFFMjA1ODZFMDAxRDU4REUg
LyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcCAqLzsgfTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVt
ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9
OwogCQlBMTgyRDVCNzFCRTcyMjY3MDA4N0E3Q0MgLyogU2V0dGluZ3NDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODJENUI2MUJFNzIyNjIw
MDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tICovOyB9OwpAQCAtMTE1OTgsNiArMTE2MDEsOSBA
QAogCQlBMTQ5Nzg3MDFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50RmlsdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29udGVudEZpbHRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVFMzFGMTFFMENCMEFBMDA0QjM3MUMg
LyogUXVpY2tMb29rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1aWNrTG9v
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVFMzFGMjFFMENCMEFBMDA0QjM3
MUMgLyogUXVpY2tMb29rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUXVpY2tMb29rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc2M0YzQzFF
MjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc2M0YzRDFFMjA1MjM0MDAxRDU4REUgLyogV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkFyY2hpdmVEdW1wU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc2
M0Y0MDFFMjA1ODZFMDAxRDU4REUgLyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCUExN0M4
MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxF
bGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxl
bWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1QjYxQkU3
MjI2MjAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTZXR0aW5nc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ5NjUsNiArMTQ5NzEsNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJQTE3NjNGNDExRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQlBQTVGM0I5MTE2Q0M1QkVCMDA0NTVFQjAgLyogQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNDEyMzA5MTMxMzhDNDJGRjAwQkND
RkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTQx
MjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLApAQCAtMTU0MzQsNiArMTU0NDEsNyBAQAogCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcg
LyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgKi8s
CiAJCQkJRkQyREJGMEUxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrICov
LAogCQkJCUZEMkRCRjBGMTJCMDQ4QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3Jr
ICovLAogCQkJCUFBNUYzQjkwMTZDQzVCRUIwMDQ1NUVCMCAvKiBDb3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsgKi8sCkBAIC0xNjU3MCw2ICsxNjU3OCw3IEBACiAJCTQxN0RBNENEMTM3MzQyMDQwMDdD
NTdGQiAvKiB0ZXN0aW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlBMTc2M0YzQjFFMjA1MUFCMDAxRDU4REUgLyogY29jb2EgKi8sCiAJCQkJNDE4MTVD
MUIxMzgzMTk2MzAwNTdBQUE0IC8qIGpzICovLAogCQkJCTUxNzE0RUE5MUNGNjU4OTkwMDQ3MjND
NCAvKiBHQ09ic2VydmF0aW9uLmNwcCAqLywKIAkJCQk1MTcxNEVBQTFDRjY1ODk5MDA0NzIzQzQg
LyogR0NPYnNlcnZhdGlvbi5oICovLApAQCAtMTk2NzUsNiArMTk2ODQsMTUgQEAKIAkJCXBhdGgg
PSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMTc2M0YzQjFFMjA1
MUFCMDAxRDU4REUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCUExNzYzRjNEMUUyMDUyMzQwMDFENThERSAvKiBXZWJBcmNoaXZlRHVtcFN1
cHBvcnQuaCAqLywKKwkJCQlBMTc2M0YzQzFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Lm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUE1MTZFOEIyMTM2RTA0QzAwMDc2QzNDMCAvKiBpb3MgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjQ4MTEsNiArMjQ4
MjksNyBAQAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2NrUGFnZU92ZXJsYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlDMyAvKiBNb2NrUGFn
ZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNUYzQjhEMTZDQzMzRDEwMDQ1
NUVCMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTE3NjNGM0YxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE4MTVDMUYxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0
U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0yODcwMCw2ICsyODcxOSw3IEBACiAJCQkJNTNFMjlFNUUx
NjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3MTRFQjAxQ0Y2NjVDRTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRl
cm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE3NjNGM0UxRTIwNTIzNDAwMUQ1OERFIC8q
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3NDBCNUE3MTRD
OTM1QUYwMEE3N0ZBNCAvKiBKU0ludGVybmFsU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQwQjU5NzE0QzkzNUFGMDBBNzdGQTQgLyogSlNN
YWxsb2NTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oCmluZGV4IDg5MTBmMGRmMWU4NmIxOGJmNDcxYjEw
YTEyYWRjZTdlNjg2YjgyM2YuLjUzMGZmZmIyNWI2MzU5ZGEzMDcyYzY2MzEyZTZkNzcyOTg1MjUw
Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgK
QEAgLTU1LDYgKzU1LDEzIEBAIHR5cGVkZWYgQ0ZfRU5VTShpbnQ2NF90LCBfVGltaW5nRGF0YU9w
dGlvbnMpCiAgICAgX1RpbWluZ0RhdGFPcHRpb25zRW5hYmxlVzNDTmF2aWdhdGlvblRpbWluZyA9
ICgxIDw8IDApCiB9OwogCitlbnVtIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5IHsKKyAgICBrQ0ZV
UkxDYWNoZVN0b3JhZ2VBbGxvd2VkID0gMCwKKyAgICBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2Vk
SW5NZW1vcnlPbmx5ID0gMSwKKyAgICBrQ0ZVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkID0gMgor
fTsKK3R5cGVkZWYgZW51bSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSBDRlVSTENhY2hlU3RvcmFn
ZVBvbGljeTsKKwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxDYWNoZSog
Q0ZVUkxDYWNoZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIENG
VVJMQ3JlZGVudGlhbFJlZjsKQEAgLTE1MSw4ICsxNTgsOCBAQCB2b2lkIF9DRkNhY2hlZFVSTFJl
c3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZgogdm9pZCBDRlVSTENvbm5lY3Rpb25JbnZhbGlkYXRlQ29ubmVjdGlvbkNhY2hlKCk7CiAK
IGV4dGVybiBDRlN0cmluZ1JlZiBjb25zdCBrQ0ZIVFRQQ29va2llTG9jYWxGaWxlRG9tYWluOwor
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkhUVFBWZXJzaW9uMV8xOwogZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDRlVSTFJlcXVlc3RBbGxvd0FsbFBPU1RDYWNoaW5nOwotCiBleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwog
CiBDRkhUVFBDb29raWVTdG9yYWdlUmVmIF9DRkhUVFBDb29raWVTdG9yYWdlR2V0RGVmYXVsdChD
RkFsbG9jYXRvclJlZik7CkBAIC0xNzQsNiArMTgxLDEyIEBAIENGVVJMUmVmIENGVVJMUmVzcG9u
c2VHZXRVUkwoQ0ZVUkxSZXNwb25zZVJlZik7CiB2b2lkIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlw
ZShDRlVSTFJlc3BvbnNlUmVmLCBDRlN0cmluZ1JlZik7CiBDRkhUVFBDb29raWVTdG9yYWdlUmVm
IF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2UoQ0ZBbGxvY2F0b3JSZWYsIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYpOwogQ0ZBcnJheVJlZiBfQ0ZIVFRQQ29va2llU3RvcmFnZUNv
cHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVm
IGluQ29va2llU3RvcmFnZSwgQ0ZVUkxSZWYgaW5VUkwsIENGVVJMUmVmIGluTWFpbkRvY3VtZW50
VVJMLCBCb29sZWFuIHNlbmRTZWN1cmVDb29raWVzKTsKK0NGU3RyaW5nUmVmIENGVVJMUmVzcG9u
c2VHZXRUZXh0RW5jb2RpbmdOYW1lKENGVVJMUmVzcG9uc2VSZWYpOworU0ludDY0IENGVVJMUmVz
cG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoQ0ZVUkxSZXNwb25zZVJlZik7CitDRlR5cGVJ
RCBDRlVSTFJlc3BvbnNlR2V0VHlwZUlEKCk7CitDRlVSTFJlc3BvbnNlUmVmIENGVVJMUmVzcG9u
c2VDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVmLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwg
U0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFt
ZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kpOwordm9pZCBDRlVSTFJlc3BvbnNlU2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYsIFNJbnQ2NCBsZW5ndGgpOworCiAjZW5k
aWYgLy8gIVBMQVRGT1JNKFdJTikKIAogV1RGX0VYVEVSTl9DX0VORApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTUxYzhhYjhmNDAwNzNmZjMyNzU0NTc1ZWM5NDQxZjVlMmU3YWUyNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
b3JlRm91bmRhdGlvbi5oPgorCituYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0IHsKKworQ0ZT
dHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJB
cmNoaXZlRGF0YSkgVEVTVF9TVVBQT1JUX0VYUE9SVDsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZVRlc3RTdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dl
YkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjYTJhMzUxOTEyYjkyY2I4YjkyZjZh
OTBkMmI3MzIxOTYzMDQxZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQpAQCAtMCwwICsxLDIzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNy0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJBcmNoaXZlRHVt
cFN1cHBvcnQuaCIKKworI2ltcG9ydCAiQ0ZOZXR3b3JrU1BJLmgiCisjaW1wb3J0ICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZIVFRQTWVzc2FnZS5oPgorI2ltcG9y
dCA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydCB7
CisKK3N0YXRpYyBDRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9u
c2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhdGEpCit7CisgICAgUmV0YWluUHRyPE5TS2V5ZWRV
bmFyY2hpdmVyPiB1bmFyY2hpdmVyID0gYWRvcHROUyhbW05TS2V5ZWRVbmFyY2hpdmVyIGFsbG9j
XSBpbml0Rm9yUmVhZGluZ1dpdGhEYXRhOihOU0RhdGEgKilyZXNwb25zZURhdGFdKTsKKyAgICBO
U1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFt1bmFyY2hpdmVyIGRlY29kZU9iamVjdEZvcktleTpA
IldlYlJlc291cmNlUmVzcG9uc2UiXTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJS
ZXNvdXJjZS5tCisgICAgW3VuYXJjaGl2ZXIgZmluaXNoRGVjb2RpbmddOworCisgICAgaWYgKCFb
cmVzcG9uc2UgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkKKyAgICAg
ICAgcmV0dXJuIENGVVJMUmVzcG9uc2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENGVVJM
UmVmKXJlc3BvbnNlLlVSTCwgKENGU3RyaW5nUmVmKXJlc3BvbnNlLk1JTUVUeXBlLCByZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgsIChDRlN0cmluZ1JlZilyZXNwb25zZS50ZXh0RW5jb2Rp
bmdOYW1lLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKKworICAgIE5TSFRUUFVSTFJlc3Bv
bnNlICpodHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKKworICAg
IC8vIE5TVVJMUmVzcG9uc2UgaXMgbm90IHRvbGwtZnJlZSBicmlkZ2VkIHRvIENGVVJMUmVzcG9u
c2UuCisgICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGh0dHBNZXNzYWdlID0gYWRvcHRD
RihDRkhUVFBNZXNzYWdlQ3JlYXRlUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgaHR0cFJl
c3BvbnNlLnN0YXR1c0NvZGUsIG51bGxwdHIsIGtDRkhUVFBWZXJzaW9uMV8xKSk7CisKKyAgICBO
U0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IGh0dHBSZXNwb25zZS5hbGxIZWFkZXJGaWVsZHM7
CisgICAgZm9yIChOU1N0cmluZyAqaGVhZGVyRmllbGQgaW4gW2hlYWRlckZpZWxkcyBrZXlFbnVt
ZXJhdG9yXSkKKyAgICAgICAgQ0ZIVFRQTWVzc2FnZVNldEhlYWRlckZpZWxkVmFsdWUoaHR0cE1l
c3NhZ2UuZ2V0KCksIChDRlN0cmluZ1JlZiloZWFkZXJGaWVsZCwgKENGU3RyaW5nUmVmKVtoZWFk
ZXJGaWVsZHMgb2JqZWN0Rm9yS2V5OmhlYWRlckZpZWxkXSk7CisKKyAgICByZXR1cm4gQ0ZVUkxS
ZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENGVVJM
UmVmKXJlc3BvbnNlLlVSTCwgaHR0cE1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFs
bG93ZWQpOworfQorCitzdGF0aWMgQ0ZBcnJheVJlZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cygpCit7CisgICAgYXV0byBhcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOworICAgIGZvciAoYXV0byYgbWltZVR5cGUgOiBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRT
dXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpKQorICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Om1p
bWVUeXBlXTsKKyAgICByZXR1cm4gKENGQXJyYXlSZWYpYXJyYXkuYXV0b3JlbGVhc2UoKTsKK30K
Kworc3RhdGljIHZvaWQgY29udmVydE1JTUVUeXBlKENGTXV0YWJsZVN0cmluZ1JlZiBtaW1lVHlw
ZSkKK3sKKyAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjIzNDMxOD4gd2l0
aCBEYXNoY29kZSAyLjAKKyAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1pbWVUeXBlLCBDRlNUUigi
YXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiksIGtDRkNvbXBhcmVBbmNob3JlZCB8IGtDRkNvbXBh
cmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQorICAgICAgICBDRlN0cmlu
Z1JlcGxhY2VBbGwobWltZVR5cGUsIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSk7Cit9CisKK3N0
YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhDRk11dGFibGVEaWN0aW9u
YXJ5UmVmIHJlc291cmNlKQoreworICAgIENGTXV0YWJsZVN0cmluZ1JlZiBtaW1lVHlwZSA9IChD
Rk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJX
ZWJSZXNvdXJjZU1JTUVUeXBlIikpOworICAgIENGU3RyaW5nTG93ZXJjYXNlKG1pbWVUeXBlLCBD
RkxvY2FsZUdldFN5c3RlbSgpKTsKKyAgICBjb252ZXJ0TUlNRVR5cGUobWltZVR5cGUpOworCisg
ICAgQ0ZBcnJheVJlZiBzdXBwb3J0ZWRNSU1FVHlwZXMgPSBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlcygpOworICAgIGlmIChDRlN0cmluZ0hhc1ByZWZpeChtaW1lVHlwZSwgQ0ZTVFIoInRleHQv
IikpIHx8IENGQXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZE1JTUVUeXBlcywgQ0ZSYW5nZU1h
a2UoMCwgQ0ZBcnJheUdldENvdW50KHN1cHBvcnRlZE1JTUVUeXBlcykpLCBtaW1lVHlwZSkpIHsK
KyAgICAgICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNl
VGV4dEVuY29kaW5nTmFtZSIpKSk7CisgICAgICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5j
b2Rpbmc7CisgICAgICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lICYmIENGU3RyaW5nR2V0TGVuZ3Ro
KHRleHRFbmNvZGluZ05hbWUpKQorICAgICAgICAgICAgc3RyaW5nRW5jb2RpbmcgPSBDRlN0cmlu
Z0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBzdHJpbmdFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5n
VVRGODsKKworICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSkp
OworICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRhdGFBc1N0cmluZyA9IGFkb3B0Q0Yo
Q0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBkYXRhLCBzdHJpbmdFbmNvZGluZykpOworICAgICAgICBpZiAoZGF0YUFzU3RyaW5nKQor
ICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNv
dXJjZURhdGEiKSwgZGF0YUFzU3RyaW5nLmdldCgpKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk
IG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxkcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVm
IGZpZWxkcykKK3sKKyAgICAvLyBOb3JtYWxpemUgaGVhZGVycworICAgIGlmIChDRkRpY3Rpb25h
cnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJEYXRlIikpKQorICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJEYXRlIiksIENGU1RSKCJTdW4sIDE2IE5vdiAyMDA4
IDE3OjAwOjAwIEdNVCIpKTsKKyAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRz
LCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
ZmllbGRzLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpLCBDRlNUUigiU3VuLCAxNiBOb3YgMjAwOCAx
Njo1NTowMCBHTVQiKSk7CisgICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywg
Q0ZTVFIoIkV0YWciKSkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZT
VFIoIkV0YWciKSwgQ0ZTVFIoIlwiMzAxOTI1LTIxLTQ1YzdkNzJkM2U3ODBcIiIpKTsKKyAgICBp
ZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiU2VydmVyIikpKQorICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJTZXJ2ZXIiKSwgQ0ZTVFIo
IkFwYWNoZS8yLjIuOSAoVW5peCkgbW9kX3NzbC8yLjIuOSBPcGVuU1NMLzAuOS43bCBQSFAvNS4y
LjYiKSk7CisKKyAgICAvLyBSZW1vdmUgaGVhZGVycworICAgIENGRGljdGlvbmFyeVJlbW92ZVZh
bHVlKGZpZWxkcywgQ0ZTVFIoIkNvbm5lY3Rpb24iKSk7CisgICAgQ0ZEaWN0aW9uYXJ5UmVtb3Zl
VmFsdWUoZmllbGRzLCBDRlNUUigiS2VlcC1BbGl2ZSIpKTsKK30KKworc3RhdGljIHZvaWQgbm9y
bWFsaXplV2ViUmVzb3VyY2VVUkwoQ0ZNdXRhYmxlU3RyaW5nUmVmIHdlYlJlc291cmNlVVJMKQor
eworICAgIHN0YXRpYyBDRkluZGV4IGZpbGVVcmxMZW5ndGggPSBDRlN0cmluZ0dldExlbmd0aChD
RlNUUigiZmlsZTovLyIpKTsKKyAgICBDRlJhbmdlIGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhS
YW5nZSA9IENGU3RyaW5nRmluZCh3ZWJSZXNvdXJjZVVSTCwgQ0ZTVFIoIi9MYXlvdXRUZXN0cy8i
KSwga0NGQ29tcGFyZUJhY2t3YXJkcyk7CisgICAgaWYgKGxheW91dFRlc3RzV2ViQXJjaGl2ZVBh
dGhSYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIENG
UmFuZ2UgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlSYW5nZSA9IENGUmFuZ2VNYWtlKGZpbGVVcmxM
ZW5ndGgsIGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhSYW5nZS5sb2NhdGlvbiAtIGZpbGVVcmxM
ZW5ndGgpOworICAgIENGU3RyaW5nUmVwbGFjZSh3ZWJSZXNvdXJjZVVSTCwgY3VycmVudFdvcmtp
bmdEaXJlY3RvcnlSYW5nZSwgQ0ZTVFIoIiIpKTsKK30KKworc3RhdGljIHZvaWQgY29udmVydFdl
YlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9w
ZXJ0eUxpc3QpCit7CisgICAgQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSA9IHN0YXRpY19jYXN0PENG
RGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydHlMaXN0LCBDRlNUUigiV2ViUmVz
b3VyY2VSZXNwb25zZSIpKSk7IC8vIFdlYlJlc291cmNlUmVzcG9uc2VLZXkgaW4gV2ViUmVzb3Vy
Y2UubQorICAgIGlmIChDRkdldFR5cGVJRChyZXNwb25zZURhdGEpICE9IENGRGF0YUdldFR5cGVJ
RCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4g
cmVzcG9uc2UgPSBhZG9wdENGKGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJl
c3BvbnNlRGF0YSkpOworICAgIGlmICghcmVzcG9uc2UpCisgICAgICAgIHJldHVybjsKKworICAg
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNwb25zZURpY3Rpb25hcnkgPSBh
ZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
JmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNh
bGxCYWNrcykpOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gdXJsU3RyaW5n
ID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsIENGVVJMR2V0U3RyaW5nKENGVVJMUmVzcG9uc2VHZXRVUkwocmVzcG9uc2UuZ2V0KCkpKSkp
OworICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKHVybFN0cmluZy5nZXQoKSk7CisgICAgQ0ZE
aWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiVVJMIiks
IHVybFN0cmluZy5nZXQoKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBt
aW1lVHlwZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9uc2UuZ2V0KCkp
KSk7CisgICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlU3RyaW5nLmdldCgpKTsKKyAgICBDRkRp
Y3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJNSU1FVHlw
ZSIpLCBtaW1lVHlwZVN0cmluZy5nZXQoKSk7CisKKyAgICBDRlN0cmluZ1JlZiB0ZXh0RW5jb2Rp
bmdOYW1lID0gQ0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05hbWUocmVzcG9uc2UuZ2V0KCkp
OworICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ0ZXh0RW5jb2RpbmdOYW1lIiksIHRl
eHRFbmNvZGluZ05hbWUpOworCisgICAgU0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCA9IENG
VVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgocmVzcG9uc2UuZ2V0KCkpOworICAg
IFJldGFpblB0cjxDRk51bWJlclJlZj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyID0gYWRv
cHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRU
eXBlLCAmZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSk7CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiks
IGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlci5nZXQoKSk7CisKKyAgICBpZiAoQ0ZIVFRQTWVz
c2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVzcG9u
c2UuZ2V0KCkpKSB7CisgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGFsbEhlYWRl
cnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKGh0dHBNZXNzYWdl
KSk7CisgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJG
aWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsKKyAgICAgICAgbm9ybWFsaXplSFRUUFJl
c3BvbnNlSGVhZGVyRmllbGRzKGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7CisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImFsbEhlYWRl
ckZpZWxkcyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOworCisgICAgICAgIENGSW5kZXggc3Rh
dHVzQ29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2Up
OworICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN0YXR1c0NvZGVOdW1iZXIgPSBhZG9w
dENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhU
eXBlLCAmc3RhdHVzQ29kZSkpOworICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25z
ZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJzdGF0dXNDb2RlIiksIHN0YXR1c0NvZGVOdW1iZXIu
Z2V0KCkpOworICAgIH0KKworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdCwg
Q0ZTVFIoIldlYlJlc291cmNlUmVzcG9uc2UiKSwgcmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpKTsK
K30KKworc3RhdGljIENGQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlUmVzb3VyY2VVUkxzKGNvbnN0
IHZvaWQgKnZhbDEsIGNvbnN0IHZvaWQgKnZhbDIsIHZvaWQgKikKK3sKKyAgICBDRlN0cmluZ1Jl
ZiB1cmwxID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4odmFsMSksIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIp
KSk7CisgICAgQ0ZTdHJpbmdSZWYgdXJsMiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHZhbDIpLCBDRlNU
UigiV2ViUmVzb3VyY2VVUkwiKSkpOworCisgICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZSh1cmwx
LCB1cmwyLCBrQ0ZDb21wYXJlQW5jaG9yZWQpOworfQorCitDRlN0cmluZ1JlZiBjcmVhdGVYTUxT
dHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQoreworICAg
IENGRXJyb3JSZWYgZXJyb3IgPSAwOworICAgIENGUHJvcGVydHlMaXN0Rm9ybWF0IGZvcm1hdCA9
IGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wOworICAgIFJldGFpblB0cjxDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0eUxpc3QgPSBhZG9wdENGKChDRk11dGFibGVEaWN0aW9u
YXJ5UmVmKUNGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
d2ViQXJjaGl2ZURhdGEsIGtDRlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzQW5kTGVhdmVz
LCAmZm9ybWF0LCAmZXJyb3IpKTsKKworICAgIGlmICghcHJvcGVydHlMaXN0KSB7CisgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29weURlc2NyaXB0aW9uKGVy
cm9yKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihD
RlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJvcGVy
dHkgbGlzdC4iKSkpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
cmVzb3VyY2VzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7CisgICAgQ0ZBcnJheUFwcGVuZFZhbHVl
KHJlc291cmNlcy5nZXQoKSwgcHJvcGVydHlMaXN0LmdldCgpKTsKKworICAgIHdoaWxlIChDRkFy
cmF5R2V0Q291bnQocmVzb3VyY2VzLmdldCgpKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGljdGlvbmFyeVJlZj4gcmVzb3VyY2VQcm9wZXJ0eUxpc3QgPSAoQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc291cmNlcy5nZXQoKSwgMCk7CisgICAg
ICAgIENGQXJyYXlSZW1vdmVWYWx1ZUF0SW5kZXgocmVzb3VyY2VzLmdldCgpLCAwKTsKKworICAg
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZSA9IChDRk11dGFibGVEaWN0
aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgp
LCBDRlNUUigiV2ViTWFpblJlc291cmNlIikpOworICAgICAgICBub3JtYWxpemVXZWJSZXNvdXJj
ZVVSTCgoQ0ZNdXRhYmxlU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKG1haW5SZXNvdXJj
ZSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKKyAgICAgICAgY29udmVydFdlYlJlc291cmNl
RGF0YVRvU3RyaW5nKG1haW5SZXNvdXJjZSk7CisKKyAgICAgICAgLy8gQWRkIHN1YmZyYW1lQXJj
aGl2ZXMgdG8gbGlzdCBmb3IgcHJvY2Vzc2luZworICAgICAgICBDRk11dGFibGVBcnJheVJlZiBz
dWJmcmFtZUFyY2hpdmVzID0gKENGTXV0YWJsZUFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgpLCBDRlNUUigiV2ViU3ViZnJhbWVBcmNoaXZlcyIp
KTsgLy8gV2ViU3ViZnJhbWVBcmNoaXZlc0tleSBpbiBXZWJBcmNoaXZlLm0KKyAgICAgICAgaWYg
KHN1YmZyYW1lQXJjaGl2ZXMpCisgICAgICAgICAgICBDRkFycmF5QXBwZW5kQXJyYXkocmVzb3Vy
Y2VzLmdldCgpLCBzdWJmcmFtZUFyY2hpdmVzLCBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0Q291
bnQoc3ViZnJhbWVBcmNoaXZlcykpKTsKKworICAgICAgICBDRk11dGFibGVBcnJheVJlZiBzdWJy
ZXNvdXJjZXMgPSAoQ0ZNdXRhYmxlQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3Vy
Y2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJTdWJyZXNvdXJjZXMiKSk7IC8vIFdlYlN1
YnJlc291cmNlc0tleSBpbiBXZWJBcmNoaXZlLm0KKyAgICAgICAgaWYgKCFzdWJyZXNvdXJjZXMp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBDRkluZGV4IHN1YnJlc291cmNlc0Nv
dW50ID0gQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNlcyk7CisgICAgICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IHN1YnJlc291cmNlc0NvdW50OyArK2kpIHsKKyAgICAgICAgICAgIENGTXV0
YWJsZURpY3Rpb25hcnlSZWYgc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QgPSAoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1YnJlc291cmNlcywgaSk7CisgICAg
ICAgICAgICBub3JtYWxpemVXZWJSZXNvdXJjZVVSTCgoQ0ZNdXRhYmxlU3RyaW5nUmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHN1YnJlc291cmNlUHJvcGVydHlMaXN0LCBDRlNUUigiV2ViUmVzb3Vy
Y2VVUkwiKSkpOworICAgICAgICAgICAgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rp
b25hcnkoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QpOworICAgICAgICAgICAgY29udmVydFdlYlJl
c291cmNlRGF0YVRvU3RyaW5nKHN1YnJlc291cmNlUHJvcGVydHlMaXN0KTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFNvcnQgdGhlIHN1YnJlc291cmNlcyBzbyB0aGV5J3JlIGFsd2F5cyBpbiBh
IHByZWRpY3RhYmxlIG9yZGVyIGZvciB0aGUgZHVtcAorICAgICAgICBDRkFycmF5U29ydFZhbHVl
cyhzdWJyZXNvdXJjZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3VudChzdWJyZXNvdXJj
ZXMpKSwgY29tcGFyZVJlc291cmNlVVJMcywgMCk7CisgICAgfQorCisgICAgZXJyb3IgPSAwOwor
CisgICAgUmV0YWluUHRyPENGRGF0YVJlZj4geG1sRGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxp
c3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3BlcnR5TGlzdC5nZXQoKSwga0NG
UHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAsIDAsICZlcnJvcikpOworCisgICAgaWYgKCF4bWxE
YXRhKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29w
eURlc2NyaXB0aW9uKGVycm9yKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5n
IHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKSkpOworICAgIH0KKworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4geG1sU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJl
cHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIHhtbERhdGEuZ2V0KCksIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCkpOworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHN0cmlu
ZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCB4bWxTdHJpbmcuZ2V0KCkpKTsKKworICAgIC8vIFJlcGxhY2UgIkFwcGxlIENvbXB1dGVy
IiB3aXRoICJBcHBsZSIgaW4gdGhlIERURCBkZWNsYXJhdGlvbi4KKyAgICBDRlN0cmluZ0ZpbmRB
bmRSZXBsYWNlKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIi0vL0FwcGxlIENvbXB1dGVyLy8iKSwgQ0ZT
VFIoIi0vL0FwcGxlLy8iKSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5n
LmdldCgpKSksIDApOworICAgIAorICAgIHJldHVybiBzdHJpbmcubGVha1JlZigpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYWVjYWUxYzg5MTQwYzQxZjZlYTExM2JhN2Rl
NTBmZWE3MDU0ZjNlLi5iMDg5NTlkNjQxZDEwNzE2MmViM2MyMjgyMWVjNzA1YmY3MmM0ZDhjIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjkgQEAKKzIwMTctMDEtMDYgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisg
ICAgICAgIFtDb2NvYV0gQ29uc29saWRhdGUgZHVwbGljYXRlIGNvcGllcyBvZiBXZWJBcmNoaXZl
RHVtcFN1cHBvcnQgaW4gRFJUIGFuZCBXS1RSIGludG8gV2ViQ29yZVRlc3RTdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY3ODkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIENhbGxlZCBX
ZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgpIGlu
c3RlYWQgb2YKKyAgICAgICAgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKCkuCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbTog
UmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3VyYXRpb25zL0Jhc2Uu
eGNjb25maWc6CisgICAgICAgIEFkZGVkICQoQlVJTFRfUFJPRFVDVFNfRElSKS9XZWJDb3JlVGVz
dFN1cHBvcnQgdG8gSEVBREVSX1NFQVJDSF9QQVRIUy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6
OkluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZSk6CisgICAgICAgIENhbGxl
ZCBXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgp
IGluc3RlYWQgb2YKKyAgICAgICAgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKCku
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9XZWJBcmNo
aXZlRHVtcFN1cHBvcnRDb2NvYS5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvV2ViS2l0
VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg6IFJlbW92ZWQuCisKIDIwMTctMDEt
MDQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gVGVh
Y2ggU2hhcmVkQnVmZmVyIHRvIHJldHVybiBhbiBOU0FycmF5IG9mIGRhdGEgc2VnbWVudHMgdG8g
YXZvaWQgZmxhdHRlbmluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWMzN2Y0ZDUz
Yjg2ODgyNTBmM2YwMjcwNTQwOTc5NDY1MTU3MWUwMi4uZDY4ZGQzNTQwOGZkN2U2NTE4NGI4ZjU4
NjExOTNjZWNmZTUzOTc3MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MCw4ICs4
MCw2IEBACiAJCTJENDAzRjFCMTUwODcyMDkwMDUzNThEMiAvKiBMYXlvdXRUZXN0SGVscGVyLm0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDQwM0VBMjE1
MDg3MTQyMDA1MzU4RDIgLyogTGF5b3V0VGVzdEhlbHBlci5tICovOyB9OwogCQkyREEyRTNBNTFF
MUJBNTQxMDBBM0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyRTNBNDFFMUJBNTQxMDBB
M0JCRDAgLyogRHVtcFJlbmRlclRyZWVTcGVsbENoZWNrZXIubW0gKi87IH07CiAJCTMxMTE3QjNE
MTVEOUE1NkEwMDE2M0JDOCAvKiBNb2NrV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTExN0IzQjE1RDlBNTZB
MDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLm1tICovOyB9OwotCQk0NDA1
OTA3MTEyNjg0NTM4MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQwNTkwNzAxMjY4NDUz
ODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSAqLzsgfTsKLQkJNDQzNzcz
MEUxMjVDQkMzNjAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEE5OTc4MzBGQ0RFODY0MDA1
ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLzsgfTsKIAkJNDQ2NENBQkUxQzIw
QTA4QjAwRTVCQjU1IC8qIER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0NjRDQUJEMUMyMEEwNzAwMEU1QkI1NSAv
KiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi87IH07CiAJCTRBRDZBMTE0MTNDODEyNDAwMEVB
OTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEFENkExMTMxM0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgKi87
IH07CiAJCTUxMDY4MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDY4MDNEMTVDQzdCMTAw
MDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCAqLzsgfTsKQEAgLTMwNywxMCArMzA1LDcgQEAKIAkJ
Mzc1RjA5NzgwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXI4MDAudHRmICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFt
ZSA9IFdlYktpdFdlaWdodFdhdGNoZXI4MDAudHRmOyBwYXRoID0gZm9udHMvV2ViS2l0V2VpZ2h0
V2F0Y2hlcjgwMC50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3NUYwOTc5MERB
QzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyOTAwLnR0ZiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRX
ZWlnaHRXYXRjaGVyOTAwLnR0ZjsgcGF0aCA9IGZvbnRzL1dlYktpdFdlaWdodFdhdGNoZXI5MDAu
dHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTdEQUExQzEzN0IzRTI0MDA3QzU3
RkIgLyogV2ViQ29yZVRlc3RTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFdlYkNvcmVUZXN0U3VwcG9ydC5oOyBwYXRoID0gV2ViQ29yZVRlc3RTdXBwb3J0L1dlYkNv
cmVUZXN0U3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk0
NDA1OTA3MDEyNjg0NTM4MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0TWFjLm1tOyBwYXRoID0gbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQ2NENBQkQxQzIwQTA3MDAwRTVCQjU1IC8qIER1bXBS
ZW5kZXJUcmVlQXBwTWFpbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IER1bXBSZW5kZXJUcmVlQXBwTWFpbi5tbTsgcGF0aCA9IGlvcy9EdW1wUmVuZGVyVHJlZUFw
cE1haW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0QTk5NzgyMEZDREU4NjQw
MDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHBhdGggPSBjZi9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDRBOTk3ODMwRkNE
RTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBwYXRoID0g
Y2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEFENkExMTMxM0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTA2ODAzRDE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTbG93TlBQTmV3LmNwcDsgcGF0
aCA9IFRlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9TbG93TlBQTmV3LmNwcDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OwogCQk1MTEzNEM5ODE2MDE0RkRCMDAxQUE1MTMgLyogSW52b2tlRGVz
dHJveXNQbHVnaW5XaXRoaW5OUFBfTmV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEludm9rZURlc3Ryb3lzUGx1Z2luV2l0aGluTlBQX05ldy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTksOSArNDk0LDYgQEAKIAkJCQlBOEQ3OUNFODBGQzI4
QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UuaCAqLywKIAkJ
CQlBOEQ3OUNFOTBGQzI4QjJDMDA0QUM4RkUgLyogRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdT
b3VyY2UubSAqLywKIAkJCQkyQ0U4OEZBMTE3MTI0Q0VFMDA3MzRGQzAgLyogSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHAgKi8sCi0JCQkJNDRBOTk3ODIwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hp
dmVEdW1wU3VwcG9ydC5oICovLAotCQkJCTQ0QTk5NzgzMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJB
cmNoaXZlRHVtcFN1cHBvcnQuY3BwICovLAotCQkJCTQ0MDU5MDcwMTI2ODQ1MzgwMENGRDQ4RCAv
KiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gKi8sCiAJCQkJQkM5RDkwMjEwQzk3NDcyRDAw
OTlBNEEzIC8qIFdvcmtRdWV1ZS5jcHAgKi8sCiAJCQkJQkM5RDkwMjIwQzk3NDcyRTAwOTlBNEEz
IC8qIFdvcmtRdWV1ZS5oICovLAogCQkJCUJDOUQ5MDIzMEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3Jr
UXVldWVJdGVtLmggKi8sCkBAIC0xMTUyLDggKzExNDQsNiBAQAogCQkJCTBGMThFNzBEMUQ2QkFD
OEMwMDI3RTU0NyAvKiBVSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0JCQzMyMzFEREZDRjlBMDA3ODZCOUQgLyogVGVzdE9wdGlvbnMubW0gaW4gU291cmNlcyAq
LywKIAkJCQkwRjE4RTcwRjFENkJBQ0I2MDAyN0U1NDcgLyogVUlTY3JpcHRDb250cm9sbGVyTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJNDQzNzczMEUxMjVDQkMzNjAwQUFFMDJDIC8qIFdlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk0NDA1OTA3MTEyNjg0NTM4
MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM5RDkwMjQwQzk3NDcyRTAwOTlBNEEzIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCQ0ExOEIyNjBDOUIwMTVDMDAxMTQzNjkgLyogV29ya1F1ZXVlSXRlbU1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Bs
YXRmb3JtTWFjLmNtYWtlIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UK
aW5kZXggZGJhZmYwZTA2MGQxYTM5YzA2ZDE4MmY5MzBiMDY5NzQ1YTdlYTc3ZS4uZDViY2ViNDhh
ZjRjNGNlOTljNDRiNDM0MWQzNDZhYjVjMzQ2YTUyZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvUGxh
dGZvcm1NYWMuY21ha2UKQEAgLTgxLDggKzgxLDYgQEAgbGlzdChBUFBFTkQgRHVtcFJlbmRlclRy
ZWVfT2JqQ19TT1VSQ0VTCiApCiAKIGxpc3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX0NwcF9TT1VS
Q0VTCi0gICAgY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcAotCiAgICAgY2cvUGl4ZWxEdW1w
U3VwcG9ydENHLmNwcAogKQogCkBAIC0xMTIsNyArMTEwLDYgQEAgbGlzdChBUFBFTkQgRHVtcFJl
bmRlclRyZWVfT2JqQ3BwX1NPVVJDRVMKICAgICBtYWMvVGVzdFJ1bm5lck1hYy5tbQogICAgIG1h
Yy9VSURlbGVnYXRlLm1tCiAgICAgbWFjL1VJU2NyaXB0Q29udHJvbGxlck1hYy5tbQotICAgIG1h
Yy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0KICAgICBtYWMvV29ya1F1ZXVlSXRlbU1hYy5t
bQogKQogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZi9XZWJBcmNoaXZlRHVt
cFN1cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM5MzZkNjVkNGEwZTY4YmM0
MjgyMzQ4MjNjMjc4OTNkY2FjMTY2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZi9XZWJBcmNoaXZlRHVtcFN1cHBv
cnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkFyY2hpdmVEdW1wU3Vw
cG9ydC5oIgotCi0jaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgotI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotCi1leHRlcm4gIkMiIHsKLQotQ0ZVUkxSZWYgQ0ZVUkxSZXNwb25zZUdldFVSTChDRlVSTFJl
c3BvbnNlUmVmKTsKLUNGU3RyaW5nUmVmIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShDRlVSTFJl
c3BvbnNlUmVmKTsKLUNGU3RyaW5nUmVmIENGVVJMUmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1l
KENGVVJMUmVzcG9uc2VSZWYpOwotU0ludDY0IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRl
bnRMZW5ndGgoQ0ZVUkxSZXNwb25zZVJlZik7Ci1DRkhUVFBNZXNzYWdlUmVmIENGVVJMUmVzcG9u
c2VHZXRIVFRQUmVzcG9uc2UoQ0ZVUkxSZXNwb25zZVJlZik7Ci0KLUNGVHlwZUlEIENGVVJMUmVz
cG9uc2VHZXRUeXBlSUQodm9pZCk7Ci0KLX0KLQotc3RhdGljIHZvaWQgY29udmVydE1JTUVUeXBl
KENGTXV0YWJsZVN0cmluZ1JlZiBtaW1lVHlwZSkKLXsKLSAgICAvLyBXb3JrYXJvdW5kIGZvciA8
cmRhcjovL3Byb2JsZW0vNjIzNDMxOD4gd2l0aCBEYXNoY29kZSAyLjAKLSAgICBpZiAoQ0ZTdHJp
bmdDb21wYXJlKG1pbWVUeXBlLCBDRlNUUigiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiksIGtD
RkNvbXBhcmVBbmNob3JlZCB8IGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBh
cmVFcXVhbFRvKQotICAgICAgICBDRlN0cmluZ1JlcGxhY2VBbGwobWltZVR5cGUsIENGU1RSKCJ0
ZXh0L2phdmFzY3JpcHQiKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZURh
dGFUb1N0cmluZyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHJlc291cmNlKQotewotICAgIENGTXV0
YWJsZVN0cmluZ1JlZiBtaW1lVHlwZSA9IChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZU1JTUVUeXBlIikpOwotICAgIENG
U3RyaW5nTG93ZXJjYXNlKG1pbWVUeXBlLCBDRkxvY2FsZUdldFN5c3RlbSgpKTsKLSAgICBjb252
ZXJ0TUlNRVR5cGUobWltZVR5cGUpOwotCi0gICAgQ0ZBcnJheVJlZiBzdXBwb3J0ZWRNSU1FVHlw
ZXMgPSBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpOwotICAgIGlmIChDRlN0cmluZ0hhc1By
ZWZpeChtaW1lVHlwZSwgQ0ZTVFIoInRleHQvIikpIHx8IENGQXJyYXlDb250YWluc1ZhbHVlKHN1
cHBvcnRlZE1JTUVUeXBlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KHN1cHBvcnRl
ZE1JTUVUeXBlcykpLCBtaW1lVHlwZSkpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29k
aW5nTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShy
ZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlVGV4dEVuY29kaW5nTmFtZSIpKSk7Ci0gICAgICAg
IENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5nRW5jb2Rpbmc7Ci0gICAgICAgIGlmICh0ZXh0RW5jb2Rp
bmdOYW1lICYmIENGU3RyaW5nR2V0TGVuZ3RoKHRleHRFbmNvZGluZ05hbWUpKQotICAgICAgICAg
ICAgc3RyaW5nRW5jb2RpbmcgPSBDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29k
aW5nKHRleHRFbmNvZGluZ05hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJpbmdF
bmNvZGluZyA9IGtDRlN0cmluZ0VuY29kaW5nVVRGODsKLQotICAgICAgICBDRkRhdGFSZWYgZGF0
YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2Us
IENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGRhdGFBc1N0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXBy
ZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBkYXRhLCBzdHJpbmdFbmNvZGluZykpOwot
ICAgICAgICBpZiAoZGF0YUFzU3RyaW5nKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZURhdGEiKSwgZGF0YUFzU3RyaW5nLmdldCgp
KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZp
ZWxkcyhDRk11dGFibGVEaWN0aW9uYXJ5UmVmIGZpZWxkcykKLXsKLSAgICAvLyBOb3JtYWxpemUg
aGVhZGVycwotICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJE
YXRlIikpKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJEYXRl
IiksIENGU1RSKCJTdW4sIDE2IE5vdiAyMDA4IDE3OjAwOjAwIEdNVCIpKTsKLSAgICBpZiAoQ0ZE
aWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpKSkKLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIp
LCBDRlNUUigiU3VuLCAxNiBOb3YgMjAwOCAxNjo1NTowMCBHTVQiKSk7Ci0gICAgaWYgKENGRGlj
dGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIkV0YWciKSkpCi0gICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIkV0YWciKSwgQ0ZTVFIoIlwiMzAxOTI1LTIx
LTQ1YzdkNzJkM2U3ODBcIiIpKTsKLSAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmll
bGRzLCBDRlNUUigiU2VydmVyIikpKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVs
ZHMsIENGU1RSKCJTZXJ2ZXIiKSwgQ0ZTVFIoIkFwYWNoZS8yLjIuOSAoVW5peCkgbW9kX3NzbC8y
LjIuOSBPcGVuU1NMLzAuOS43bCBQSFAvNS4yLjYiKSk7Ci0KLSAgICAvLyBSZW1vdmUgaGVhZGVy
cwotICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVlKGZpZWxkcywgQ0ZTVFIoIkNvbm5lY3Rpb24i
KSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUoZmllbGRzLCBDRlNUUigiS2VlcC1BbGl2
ZSIpKTsKLX0KLQotc3RhdGljIHZvaWQgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoQ0ZNdXRhYmxl
U3RyaW5nUmVmIHdlYlJlc291cmNlVVJMKQotewotICAgIHN0YXRpYyBDRkluZGV4IGZpbGVVcmxM
ZW5ndGggPSBDRlN0cmluZ0dldExlbmd0aChDRlNUUigiZmlsZTovLyIpKTsKLSAgICBDRlJhbmdl
IGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhSYW5nZSA9IENGU3RyaW5nRmluZCh3ZWJSZXNvdXJj
ZVVSTCwgQ0ZTVFIoIi9MYXlvdXRUZXN0cy8iKSwga0NGQ29tcGFyZUJhY2t3YXJkcyk7Ci0gICAg
aWYgKGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhSYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIENGUmFuZ2UgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlS
YW5nZSA9IENGUmFuZ2VNYWtlKGZpbGVVcmxMZW5ndGgsIGxheW91dFRlc3RzV2ViQXJjaGl2ZVBh
dGhSYW5nZS5sb2NhdGlvbiAtIGZpbGVVcmxMZW5ndGgpOwotICAgIENGU3RyaW5nUmVwbGFjZSh3
ZWJSZXNvdXJjZVVSTCwgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlSYW5nZSwgQ0ZTVFIoIiIpKTsK
LX0KLQotc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnko
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9wZXJ0eUxpc3QpCi17Ci0gICAgQ0ZEYXRhUmVmIHJl
c3BvbnNlRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
cHJvcGVydHlMaXN0LCBDRlNUUigiV2ViUmVzb3VyY2VSZXNwb25zZSIpKSk7IC8vIFdlYlJlc291
cmNlUmVzcG9uc2VLZXkgaW4gV2ViUmVzb3VyY2UubQotICAgIGlmIChDRkdldFR5cGVJRChyZXNw
b25zZURhdGEpICE9IENGRGF0YUdldFR5cGVJRCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJlZj4gcmVzcG9uc2UgPSBhZG9wdENGKGNyZWF0ZUNGVVJM
UmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJlc3BvbnNlRGF0YSkpOwotICAgIGlmICghcmVzcG9u
c2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiByZXNwb25zZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwotCi0gICAgUmV0YWluUHRyPENG
TXV0YWJsZVN0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFi
bGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMR2V0U3RyaW5nKENGVVJMUmVzcG9u
c2VHZXRVUkwocmVzcG9uc2UuZ2V0KCkpKSkpOwotICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJM
KHVybFN0cmluZy5nZXQoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0
aW9uYXJ5LmdldCgpLCBDRlNUUigiVVJMIiksIHVybFN0cmluZy5nZXQoKSk7Ci0KLSAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBtaW1lVHlwZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNl
R2V0TUlNRVR5cGUocmVzcG9uc2UuZ2V0KCkpKSk7Ci0gICAgY29udmVydE1JTUVUeXBlKG1pbWVU
eXBlU3RyaW5nLmdldCgpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rp
b25hcnkuZ2V0KCksIENGU1RSKCJNSU1FVHlwZSIpLCBtaW1lVHlwZVN0cmluZy5nZXQoKSk7Ci0K
LSAgICBDRlN0cmluZ1JlZiB0ZXh0RW5jb2RpbmdOYW1lID0gQ0ZVUkxSZXNwb25zZUdldFRleHRF
bmNvZGluZ05hbWUocmVzcG9uc2UuZ2V0KCkpOwotICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQot
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENG
U1RSKCJ0ZXh0RW5jb2RpbmdOYW1lIiksIHRleHRFbmNvZGluZ05hbWUpOwotCi0gICAgU0ludDY0
IGV4cGVjdGVkQ29udGVudExlbmd0aCA9IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRM
ZW5ndGgocmVzcG9uc2UuZ2V0KCkpOwotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gZXhwZWN0
ZWRDb250ZW50TGVuZ3RoTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNU
UigiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiksIGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlci5n
ZXQoKSk7Ci0KLSAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVz
cG9uc2VHZXRIVFRQUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpKSB7Ci0gICAgICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IGFsbEhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5
QWxsSGVhZGVyRmllbGRzKGh0dHBNZXNzYWdlKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNy
ZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkp
KTsKLSAgICAgICAgbm9ybWFsaXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKGFsbEhlYWRlckZp
ZWxkcy5nZXQoKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlv
bmFyeS5nZXQoKSwgQ0ZTVFIoImFsbEhlYWRlckZpZWxkcyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0
KCkpOwotCi0gICAgICAgIENGSW5kZXggc3RhdHVzQ29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNw
b25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJS
ZWY+IHN0YXR1c0NvZGVOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBlLCAmc3RhdHVzQ29kZSkpOwotICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJzdGF0
dXNDb2RlIiksIHN0YXR1c0NvZGVOdW1iZXIuZ2V0KCkpOwotICAgIH0KLQotICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJlc291cmNlUmVzcG9uc2UiKSwg
cmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpKTsKLX0KLQotc3RhdGljIENGQ29tcGFyaXNvblJlc3Vs
dCBjb21wYXJlUmVzb3VyY2VVUkxzKGNvbnN0IHZvaWQgKnZhbDEsIGNvbnN0IHZvaWQgKnZhbDIs
IHZvaWQgKmNvbnRleHQpCi17Ci0gICAgQ0ZTdHJpbmdSZWYgdXJsMSA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlS
ZWY+KHZhbDEpLCBDRlNUUigiV2ViUmVzb3VyY2VVUkwiKSkpOwotICAgIENGU3RyaW5nUmVmIHVy
bDIgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGlj
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPih2YWwyKSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsK
LQotICAgIHJldHVybiBDRlN0cmluZ0NvbXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFuY2hv
cmVkKTsKLX0KLQotQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRh
KENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSkKLXsKLSAgICBDRkVycm9yUmVmIGVycm9yID0gMDsK
LSAgICBDRlByb3BlcnR5TGlzdEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlG
b3JtYXRfdjFfMDsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVy
dHlMaXN0ID0gYWRvcHRDRigoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENy
ZWF0ZVdpdGhEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9w
ZXJ0eUxpc3RNdXRhYmxlQ29udGFpbmVyc0FuZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7Ci0K
LSAgICBpZiAoIXByb3BlcnR5TGlzdCkgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAg
ICByZXR1cm4gQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcik7Ci0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Ig
b2NjdXJyZWQgY29udmVydGluZyBkYXRhIHRvIHByb3BlcnR5IGxpc3QuIikpKTsKLSAgICB9Ci0K
LSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZB
cnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNh
bGxCYWNrcykpOwotICAgIENGQXJyYXlBcHBlbmRWYWx1ZShyZXNvdXJjZXMuZ2V0KCksIHByb3Bl
cnR5TGlzdC5nZXQoKSk7Ci0KLSAgICB3aGlsZSAoQ0ZBcnJheUdldENvdW50KHJlc291cmNlcy5n
ZXQoKSkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHJlc291
cmNlUHJvcGVydHlMaXN0ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChyZXNvdXJjZXMuZ2V0KCksIDApOwotICAgICAgICBDRkFycmF5UmVtb3ZlVmFsdWVB
dEluZGV4KHJlc291cmNlcy5nZXQoKSwgMCk7Ci0KLSAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZiBtYWluUmVzb3VyY2UgPSAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYk1haW5SZXNvdXJj
ZSIpKTsKLSAgICAgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoKENGTXV0YWJsZVN0cmluZ1Jl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShtYWluUmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZVVS
TCIpKSk7Ci0gICAgICAgIGNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhtYWluUmVzb3Vy
Y2UpOwotCi0gICAgICAgIC8vIEFkZCBzdWJmcmFtZUFyY2hpdmVzIHRvIGxpc3QgZm9yIHByb2Nl
c3NpbmcKLSAgICAgICAgQ0ZNdXRhYmxlQXJyYXlSZWYgc3ViZnJhbWVBcmNoaXZlcyA9IChDRk11
dGFibGVBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5n
ZXQoKSwgQ0ZTVFIoIldlYlN1YmZyYW1lQXJjaGl2ZXMiKSk7IC8vIFdlYlN1YmZyYW1lQXJjaGl2
ZXNLZXkgaW4gV2ViQXJjaGl2ZS5tCi0gICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmVzKQotICAg
ICAgICAgICAgQ0ZBcnJheUFwcGVuZEFycmF5KHJlc291cmNlcy5nZXQoKSwgc3ViZnJhbWVBcmNo
aXZlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KHN1YmZyYW1lQXJjaGl2ZXMpKSk7
Ci0KLSAgICAgICAgQ0ZNdXRhYmxlQXJyYXlSZWYgc3VicmVzb3VyY2VzID0gKENGTXV0YWJsZUFy
cmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgpLCBD
RlNUUigiV2ViU3VicmVzb3VyY2VzIikpOyAvLyBXZWJTdWJyZXNvdXJjZXNLZXkgaW4gV2ViQXJj
aGl2ZS5tCi0gICAgICAgIGlmICghc3VicmVzb3VyY2VzKQotICAgICAgICAgICAgY29udGludWU7
Ci0KLSAgICAgICAgQ0ZJbmRleCBzdWJyZXNvdXJjZXNDb3VudCA9IENGQXJyYXlHZXRDb3VudChz
dWJyZXNvdXJjZXMpOwotICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzdWJyZXNvdXJj
ZXNDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHN1YnJl
c291cmNlUHJvcGVydHlMaXN0ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChzdWJyZXNvdXJjZXMsIGkpOwotICAgICAgICAgICAgbm9ybWFsaXplV2ViUmVz
b3VyY2VVUkwoKENGTXV0YWJsZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdWJyZXNv
dXJjZVByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKLSAgICAgICAgICAg
IGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KHN1YnJlc291cmNlUHJvcGVy
dHlMaXN0KTsKLSAgICAgICAgICAgIGNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhzdWJy
ZXNvdXJjZVByb3BlcnR5TGlzdCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTb3J0IHRoZSBz
dWJyZXNvdXJjZXMgc28gdGhleSdyZSBhbHdheXMgaW4gYSBwcmVkaWN0YWJsZSBvcmRlciBmb3Ig
dGhlIGR1bXAKLSAgICAgICAgQ0ZBcnJheVNvcnRWYWx1ZXMoc3VicmVzb3VyY2VzLCBDRlJhbmdl
TWFrZSgwLCBDRkFycmF5R2V0Q291bnQoc3VicmVzb3VyY2VzKSksIGNvbXBhcmVSZXNvdXJjZVVS
THMsIDApOwotICAgIH0KLQotICAgIGVycm9yID0gMDsKLSAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVm
PiB4bWxEYXRhID0gYWRvcHRDRihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgcHJvcGVydHlMaXN0LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFf
MCwgMCwgJmVycm9yKSk7Ci0KLSAgICBpZiAoIXhtbERhdGEpIHsKLSAgICAgICAgaWYgKGVycm9y
KQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1
bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlzdCB0byBkYXRhLiIp
KSk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB4bWxTdHJpbmcgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlRnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9y
RGVmYXVsdCwgeG1sRGF0YS5nZXQoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7Ci0gICAgUmV0
YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0
ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIHhtbFN0cmluZy5nZXQoKSkpOwot
Ci0gICAgLy8gUmVwbGFjZSAiQXBwbGUgQ29tcHV0ZXIiIHdpdGggIkFwcGxlIiBpbiB0aGUgRFRE
IGRlY2xhcmF0aW9uLgotICAgIENGU3RyaW5nRmluZEFuZFJlcGxhY2Uoc3RyaW5nLmdldCgpLCBD
RlNUUigiLS8vQXBwbGUgQ29tcHV0ZXIvLyIpLCBDRlNUUigiLS8vQXBwbGUvLyIpLCBDRlJhbmdl
TWFrZSgwLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcuZ2V0KCkpKSwgMCk7Ci0KLSAgICByZXR1
cm4gc3RyaW5nLmxlYWtSZWYoKTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYzU4
MTg0ZTBmZDJjMWRmZjYxNDgyYWQzOTQ0NmNmNzJlNmJkZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0X2gKLSNkZWZp
bmUgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0X2gKLQotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0Nv
cmVGb3VuZGF0aW9uLmg+Ci0KLXR5cGVkZWYgc3RydWN0IF9DRlVSTFJlc3BvbnNlKiBDRlVSTFJl
c3BvbnNlUmVmOwotCi1DRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURh
dGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKTsKLQotLy8gTUFSSzogLQotLy8gTUFSSzogUGxh
dGZvcm0tc3BlY2lmaWMgbWV0aG9kcwotCi1DRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJMUmVz
cG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhdGEpOwotQ0ZBcnJheVJl
ZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlcygpOwotCi0jZW5kaWYgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0X2ggKi8KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bQppbmRleCA5MjBjMTVjY2M3ZGJlODg3N2E0YzUzN2Y5MDY3YzA3OGU2OGYzMzg5Li43MTgxMzc3
MGI4NzczNDM5Y2M2MGYzODcyZjg1NWI0MmZmMmMzNmYwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCkBAIC0xNzQzLDExICsxNzQzLDExIEBAIHZvaWQgZHVt
cCgpCiAgICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24vcGRmIjsKICAg
ICAgICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcERPTUFzV2ViQXJjaGl2ZSgpKSB7CiAg
ICAgICAgICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUgRE9NRG9jdW1l
bnRdIHdlYkFyY2hpdmVdOwotICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1Jl
bGVhc2UoY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKChDRkRhdGFSZWYpW3dlYkFy
Y2hpdmUgZGF0YV0pKTsKKyAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxl
YXNlKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRh
KChDRkRhdGFSZWYpW3dlYkFyY2hpdmUgZGF0YV0pKTsKICAgICAgICAgICAgIHJlc3VsdE1pbWVU
eXBlID0gQCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiOwogICAgICAgICB9IGVsc2UgaWYgKGdU
ZXN0UnVubmVyLT5kdW1wU291cmNlQXNXZWJBcmNoaXZlKCkpIHsKICAgICAgICAgICAgIFdlYkFy
Y2hpdmUgKndlYkFyY2hpdmUgPSBbW21haW5GcmFtZSBkYXRhU291cmNlXSB3ZWJBcmNoaXZlXTsK
LSAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVhNTFN0
cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7Cisg
ICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShXZWJDb3JlVGVzdFN1
cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoQ0ZEYXRhUmVmKVt3ZWJB
cmNoaXZlIGRhdGFdKSk7CiAgICAgICAgICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRp
b24veC13ZWJhcmNoaXZlIjsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXN1bHRTdHJp
bmcgPSBbbWFpbkZyYW1lIHJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb25Gb3JQcmlu
dGluZzpnVGVzdFJ1bm5lci0+aXNQcmludGluZygpXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlMDZlNzk3NTBlMzIwOTliMDJhYmJkOGMwMzE5NDczNjhiZTkxZGU3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0KKysrIC9kZXYvbnVsbApA
QCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmgiCi0KLSNpbXBvcnQgPENGTmV0d29yay9DRkhUVFBNZXNzYWdl
Lmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KLSNpbXBvcnQgPFdlYktpdC9X
ZWJIVE1MUmVwcmVzZW50YXRpb24uaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KLQotZXh0
ZXJuICJDIiB7Ci0KLWVudW0gQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgewotICBrQ0ZVUkxDYWNo
ZVN0b3JhZ2VBbGxvd2VkID0gMCwKLSAga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZEluTWVtb3J5
T25seSA9IDEsCi0gIGtDRlVSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWQgPSAyCi19OwotdHlwZWRl
ZiBlbnVtIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5IENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5Owot
Ci1leHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGSFRUUFZlcnNpb24xXzE7Ci0KLUNGVVJMUmVz
cG9uc2VSZWYgQ0ZVUkxSZXNwb25zZUNyZWF0ZShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZVUkxS
ZWYgVVJMLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwgU0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0
aCwgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kg
cmVjb21tZW5kZWRQb2xpY3kpOwotQ0ZVUkxSZXNwb25zZVJlZiBDRlVSTFJlc3BvbnNlQ3JlYXRl
V2l0aEhUVFBSZXNwb25zZShDRkFsbG9jYXRvclJlZiBhbGxvYywgQ0ZVUkxSZWYgVVJMLCBDRkhU
VFBNZXNzYWdlUmVmIGh0dHBSZXNwb25zZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgcmVjb21t
ZW5kZWRQb2xpY3kpOwotdm9pZCBDRlVSTFJlc3BvbnNlU2V0RXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIFNJbnQ2NCBsZW5ndGgpOwotdm9pZCBDRlVSTFJl
c3BvbnNlU2V0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgQ0ZTdHJpbmdSZWYg
bWltZVR5cGUpOwotCi19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZy
b21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKLXsKLSAgICAvLyBEZWNvZGUg
TlNVUkxSZXNwb25zZQotICAgIFJldGFpblB0cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZl
ciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRo
RGF0YTooTlNEYXRhICopcmVzcG9uc2VEYXRhXSk7Ci0gICAgTlNVUkxSZXNwb25zZSAqcmVzcG9u
c2UgPSBbdW5hcmNoaXZlci5nZXQoKSBkZWNvZGVPYmplY3RGb3JLZXk6QCJXZWJSZXNvdXJjZVJl
c3BvbnNlIl07IC8vIFdlYlJlc291cmNlUmVzcG9uc2VLZXkgaW4gV2ViUmVzb3VyY2UubQotICAg
IFt1bmFyY2hpdmVyLmdldCgpIGZpbmlzaERlY29kaW5nXTsKLQotICAgIGlmICghW3Jlc3BvbnNl
IGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pCi0gICAgICAgIHJldHVy
biBDRlVSTFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDRlVSTFJlZilbcmVz
cG9uc2UgVVJMXSwgKENGU3RyaW5nUmVmKVtyZXNwb25zZSBNSU1FVHlwZV0sIFtyZXNwb25zZSBl
eHBlY3RlZENvbnRlbnRMZW5ndGhdLCAoQ0ZTdHJpbmdSZWYpW3Jlc3BvbnNlIHRleHRFbmNvZGlu
Z05hbWVdLCBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKLQotICAgIE5TSFRUUFVSTFJlc3Bv
bnNlICpodHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKilyZXNwb25zZTsKLQotICAg
IC8vIE5TVVJMUmVzcG9uc2UgaXMgbm90IHRvbGwtZnJlZSBicmlkZ2VkIHRvIENGVVJMUmVzcG9u
c2UuCi0gICAgUmV0YWluUHRyPENGSFRUUE1lc3NhZ2VSZWY+IGh0dHBNZXNzYWdlID0gYWRvcHRD
RihDRkhUVFBNZXNzYWdlQ3JlYXRlUmVzcG9uc2Uoa0NGQWxsb2NhdG9yRGVmYXVsdCwgW2h0dHBS
ZXNwb25zZSBzdGF0dXNDb2RlXSwgMCwga0NGSFRUUFZlcnNpb24xXzEpKTsKLQotICAgIE5TRGlj
dGlvbmFyeSAqaGVhZGVyRmllbGRzID0gW2h0dHBSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdOwot
ICAgIGZvciAoTlNTdHJpbmcgKmhlYWRlckZpZWxkIGluIFtoZWFkZXJGaWVsZHMga2V5RW51bWVy
YXRvcl0pCi0gICAgICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVlKGh0dHBNZXNz
YWdlLmdldCgpLCAoQ0ZTdHJpbmdSZWYpaGVhZGVyRmllbGQsIChDRlN0cmluZ1JlZilbaGVhZGVy
RmllbGRzIG9iamVjdEZvcktleTpoZWFkZXJGaWVsZF0pOwotCi0gICAgcmV0dXJuIENGVVJMUmVz
cG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChDRlVSTFJl
ZilbcmVzcG9uc2UgVVJMXSwgaHR0cE1lc3NhZ2UuZ2V0KCksIGtDRlVSTENhY2hlU3RvcmFnZUFs
bG93ZWQpOwotfQotCi1DRkFycmF5UmVmIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkKLXsK
LSAgICByZXR1cm4gKENGQXJyYXlSZWYpW1dlYkhUTUxSZXByZXNlbnRhdGlvbiBzdXBwb3J0ZWRO
b25JbWFnZU1JTUVUeXBlc107Ci19CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKaW5kZXggZjNhYmY5YzEyNTQ0M2ZlOTk0N2ZjZjRi
MWY1ZjMzNDVmZTFhNjU1MS4uMmVhMDk1YWVkYWUyMWYxOTAzY2JiZWQxNGQ1Zjg3ZmNlMTQ4NGJl
YSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJhdGlvbnMvQmFz
ZS54Y2NvbmZpZwpAQCAtMzMsNyArMzMsNyBAQCBDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsK
IENMQU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9OUyA9IE5POwogQ0xBTkdfV0FSTl9JTkZJTklURV9S
RUNVUlNJT04gPSBZRVM7CiBDTEFOR19XQVJOX1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKLUhFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUg
JChXRUJDT1JFX1BSSVZBVEVfSEVBREVSU19ESVIpL0ZvcndhcmRpbmdIZWFkZXJzICQoU1JDUk9P
VCkvLi4vLi4vU291cmNlL0phdmFTY3JpcHRDb3JlL2ljdSAkKE5FWFRfUk9PVCkvdXNyL2xvY2Fs
L2luY2x1ZGUvV2ViQ29yZVRlc3RTdXBwb3J0OworSEVBREVSX1NFQVJDSF9QQVRIUyA9ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS91c3IvbG9jYWwvaW5jbHVkZSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
V2ViQ29yZVRlc3RTdXBwb3J0ICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Gb3J3YXJk
aW5nSGVhZGVycyAkKFNSQ1JPT1QpLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UgJChO
RVhUX1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYkNvcmVUZXN0U3VwcG9ydDsKIEdDQ19QUkVQ
Uk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpIEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVDsKIERFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmLXdpdGgtZHN5bTsKIFBS
RUJJTkRJTkcgPSBOTwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGQxYjZjYjExOWI0ZTUx
M2Y5OWU3NjQ0MjZhNjUwYTY5YzI0MWQxNzIuLjg2YTlmMTlkNDEwYTQ0OTRjZjBkZjk4YmY2MjI2
NmZhM2ZlNzk1M2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTg0Niw3ICs4NDYsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZHVtcERPTUFzV2ViQXJjaGl2ZShXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBTdHJpbmdCdWlsZAogI2lmIFVTRShDRikKICAgICBXS1JldGFpblB0cjxX
S0RhdGFSZWY+IHdrRGF0YSA9IGFkb3B0V0soV0tCdW5kbGVGcmFtZUNvcHlXZWJBcmNoaXZlKGZy
YW1lKSk7CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gY2ZEYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGUoMCwgV0tEYXRhR2V0Qnl0ZXMod2tEYXRhLmdldCgpKSwgV0tEYXRhR2V0U2l6ZSh3a0Rh
dGEuZ2V0KCkpKSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZlN0cmluZyA9IGFkb3B0
Q0YoY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5nZXQoKSkpOworICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJpbmcgPSBhZG9wdENGKFdlYkNvcmVUZXN0U3Vw
cG9ydDo6Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKGNmRGF0YS5nZXQoKSkpOwog
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGNmU3RyaW5nLmdldCgpKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9XZWJB
cmNoaXZlRHVtcFN1cHBvcnRDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDMwZTg1YTViMTllMWE0M2RkNzA2NWQ5YzExYjBjZDdiMzM0MjE4
ZjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBv
cnRDb2NvYS5tbQorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgotCi0j
aW1wb3J0IDxDRk5ldHdvcmsvQ0ZIVFRQTWVzc2FnZS5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9G
b3VuZGF0aW9uLmg+Ci0jaW1wb3J0IDxXZWJLaXQvV2ViSFRNTFJlcHJlc2VudGF0aW9uLmg+Ci0j
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0KLWV4dGVybiAiQyIgewotCi1lbnVtIENGVVJMQ2Fj
aGVTdG9yYWdlUG9saWN5IHsKLSAgICBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkID0gMCwKLSAg
ICBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2VkSW5NZW1vcnlPbmx5ID0gMSwKLSAgICBrQ0ZVUkxD
YWNoZVN0b3JhZ2VOb3RBbGxvd2VkID0gMgotfTsKLXR5cGVkZWYgZW51bSBDRlVSTENhY2hlU3Rv
cmFnZVBvbGljeSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeTsKLQotZXh0ZXJuIGNvbnN0IENGU3Ry
aW5nUmVmIGtDRkhUVFBWZXJzaW9uMV8xOwotCi1DRlVSTFJlc3BvbnNlUmVmIENGVVJMUmVzcG9u
c2VDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVmLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwg
U0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFt
ZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgcmVjb21tZW5kZWRQb2xpY3kpOwotQ0ZVUkxSZXNw
b25zZVJlZiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShDRkFsbG9jYXRvclJl
ZiwgQ0ZVUkxSZWYsIENGSFRUUE1lc3NhZ2VSZWYgaHR0cFJlc3BvbnNlLCBDRlVSTENhY2hlU3Rv
cmFnZVBvbGljeSByZWNvbW1lbmRlZFBvbGljeSk7Ci12b2lkIENGVVJMUmVzcG9uc2VTZXRFeHBl
Y3RlZENvbnRlbnRMZW5ndGgoQ0ZVUkxSZXNwb25zZVJlZiwgU0ludDY0IGxlbmd0aCk7Ci12b2lk
IENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmLCBDRlN0cmluZ1JlZiBt
aW1lVHlwZSk7Ci0KLX0KLQotQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJv
bVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQotewotICAgIFJldGFpblB0cjxO
U0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNoaXZl
ciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopcmVzcG9uc2VEYXRhXSk7
Ci0gICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmplY3RG
b3JLZXk6QCJXZWJSZXNvdXJjZVJlc3BvbnNlIl07IC8vIFdlYlJlc291cmNlUmVzcG9uc2VLZXkg
aW4gV2ViUmVzb3VyY2UubQotICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKLQotICAg
IGlmICghW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0p
Ci0gICAgICAgIHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChDRlVSTFJlZilyZXNwb25zZS5VUkwsIChDRlN0cmluZ1JlZilyZXNwb25zZS5NSU1FVHlwZSwg
cmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAoQ0ZTdHJpbmdSZWYpcmVzcG9uc2UudGV4
dEVuY29kaW5nTmFtZSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCk7Ci0KLSAgICBOU0hUVFBV
UkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9uc2U7
Ci0KLSAgICAvLyBOU1VSTFJlc3BvbnNlIGlzIG5vdCB0b2xsLWZyZWUgYnJpZGdlZCB0byBDRlVS
TFJlc3BvbnNlLgotICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBodHRwTWVzc2FnZSA9
IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGh0dHBSZXNwb25zZS5zdGF0dXNDb2RlLCBudWxscHRyLCBrQ0ZIVFRQVmVyc2lvbjFfMSkpOwot
Ci0gICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBodHRwUmVzcG9uc2UuYWxsSGVhZGVy
RmllbGRzOwotICAgIGZvciAoTlNTdHJpbmcgKmhlYWRlckZpZWxkIGluIFtoZWFkZXJGaWVsZHMg
a2V5RW51bWVyYXRvcl0pCi0gICAgICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZhbHVl
KGh0dHBNZXNzYWdlLmdldCgpLCAoQ0ZTdHJpbmdSZWYpaGVhZGVyRmllbGQsIChDRlN0cmluZ1Jl
ZilbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpoZWFkZXJGaWVsZF0pOwotCi0gICAgcmV0dXJu
IENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNoZVN0
b3JhZ2VBbGxvd2VkKTsKLX0KLQotQ0ZBcnJheVJlZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBl
cygpCi17Ci0gICAgcmV0dXJuIChDRkFycmF5UmVmKVtXZWJIVE1MUmVwcmVzZW50YXRpb24gc3Vw
cG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZv
cm1NYWMuY21ha2UKaW5kZXggODZjYWM2ODlmZTY4NTc3Y2VjODBjMzI5MjY4M2VkNjViNjNmNzFm
MS4uNzcwMGE2NTIyOTRhMTZkYmEyMDEyZDNhYWM1ZDI0NDMxNmVhYTljYyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zMywxMSArMzMsOSBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKIAogbGlzdChBUFBFTkQg
V2ViS2l0VGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX1NPVVJDRVMKICAgICAke1dFQktJVF9URVNU
UlVOTkVSX0RJUn0vY29jb2EvQ3Jhc2hSZXBvcnRlckluZm8ubW0KLSAgICAke1dFQktJVF9URVNU
UlVOTkVSX0RJUn0vY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcAogCiAgICAgJHtXRUJLSVRf
VEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L2NvY29hL0FjdGl2YXRlRm9udHNDb2NvYS5t
bQogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9jb2NvYS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VDb2NvYS5tbQotICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURC
VU5ETEVfRElSfS9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnRDb2NvYS5tbQogCiAgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L21hYy9BY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlck1hYy5tbQogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElS
fS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIubW0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjkxYTI3NDA3YzgzZjEwOTg4YTAyZDc1MDE4N2Y4MzQz
NmJmNzIzNC4uMmVjMGY1NmIyZThjMDE5N2Q2MzhiMGUzZjkxOTU1ZTI4MmE4YzJlNiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVubmVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9XZWJLaXRUZXN0UnVu
bmVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc4LDggKzc4LDYgQEAKIAkJNTY0MUUy
RDAxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjQxRTJDRTE0MzM1RTk1MDA4
MzA3RTUgLyogSlNUZXh0SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTY2NEE0OUExNDMy
NjM4NDAwODg4MUJFIC8qIFRleHRJbnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY2NEE0OTgxNDMyNjM4NDAwODg4MUJFIC8q
IFRleHRJbnB1dENvbnRyb2xsZXIuY3BwICovOyB9OwogCQk1NjcwQjgyODEzODZGQ0E1MDAyRUIz
NTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU2NzBCODI3MTM4NkZDQTUwMDJFQjM1NSAvKiBFdmVudFNlbmRlclBy
b3h5Lm1tICovOyB9OwotCQk1QzQ1QzMwRjE3Mzk4RTI5MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Q29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzQ1QzMwRTE3Mzk4RTI5MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
Q29jb2EubW0gKi87IH07Ci0JCTVDNDVDMzEzMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZl
RHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM0NUMzMTExNzM5OEU0ODAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5j
cHAgKi87IH07CiAJCTY1MTBBNzgyMTFFQzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc3MTFF
QzY0MzgwMDQxMDg2NyAvKiBBSEVNX19fXy5UVEYgKi87IH07CiAJCTY1MTBBNzg0MTFFQzY0Mzgw
MDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUxMEE3NzkxMUVDNjQzODAwNDEwODY3IC8q
IFdlYktpdFdlaWdodFdhdGNoZXIxMDAudHRmICovOyB9OwogCQk2NTEwQTc4NTExRUM2NDM4MDA0
MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzdBMTFFQzY0MzgwMDQxMDg2NyAvKiBX
ZWJLaXRXZWlnaHRXYXRjaGVyMjAwLnR0ZiAqLzsgfTsKQEAgLTI3Miw5ICsyNzAsNiBAQAogCQk1
NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUgLyogRXZlbnRTZW5kZXJQcm94eS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50U2VuZGVyUHJveHkubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU4MzkxM0QwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU0Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1ODM5MTNEMTE0MzM1RTk1MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDNDVDMzBFMTcz
OThFMjkwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydENvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1QzQ1QzMxMTE3Mzk4RTQ4MDA3OTcx
NEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHBhdGggPSBjZi9XZWJBcmNo
aXZlRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07Ci0JCTVDNDVD
MzEyMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHBhdGggPSBj
Zi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9Owog
CQk2NTEwQTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgbmFtZSA9ICJBSEVNX19f
Xy5UVEYiOyBwYXRoID0gImZvbnRzL0FIRU1fX19fLlRURiI7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1MTBBNzc5MTFFQzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVy
MTAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZjsgcGF0aCA9IGZvbnRzL1dl
YktpdFdlaWdodFdhdGNoZXIxMDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2
NTEwQTc3QTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1l
ID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRX
YXRjaGVyMjAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUwNiw3ICs1MDEs
NiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNjVFQjg1OUYxMUVDNjdDQzAwMzREMzAwIC8qIEFj
dGl2YXRlRm9udHNDb2NvYS5tbSAqLywKIAkJCQkwRkVCOTA5RTE5MDVBNzc2MDAwRkRCRjMgLyog
SW5qZWN0ZWRCdW5kbGVQYWdlQ29jb2EubW0gKi8sCi0JCQkJNUM0NUMzMEUxNzM5OEUyOTAwNzk3
MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydENvY29hLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01OTgsMTUgKzU5Miw2IEBA
CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJNUM0
NUMzMTAxNzM5OEUzNzAwNzk3MTRFIC8qIGNmICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQk1QzQ1QzMxMTE3Mzk4RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0LmNwcCAqLywKLQkJCQk1QzQ1QzMxMjE3Mzk4RTQ4MDA3OTcxNEUgLyogV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmggKi8sCi0JCQkpOwotCQkJbmFtZSA9IGNmOwotCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJNjVFQjg1OUUxMUVDNjdDQzAwMzREMzAwIC8qIG1h
YyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC02NDAsNyAr
NjI1LDYgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5NTJD
MEExMUYzQjkzOTAwMzM5OEI0IC8qIEJpbmRpbmdzICovLAotCQkJCTVDNDVDMzEwMTczOThFMzcw
MDc5NzE0RSAvKiBjZiAqLywKIAkJCQkwRkVCOTA5RDE5MDVBNzVEMDAwRkRCRjMgLyogY29jb2Eg
Ki8sCiAJCQkJQkMxNEU0RTAxMjBFMDJGOTAwODI2QzBDIC8qIENvbnRyb2xsZXJzICovLAogCQkJ
CUJDOTUyRDNBMTFGM0JGMUYwMDMzOThCNCAvKiBEZXJpdmVkIFNvdXJjZXMgKi8sCkBAIC0xMDM2
LDggKzEwMjAsNiBAQAogCQkJCTJFNjNFREE2MTg5MUJEQzAwMDJBN0FGQyAvKiBUZXN0UnVubmVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMwQ0U3MjBCMTI0N0M5MzMwMEJDMEVDNCAvKiBUZXN0
UnVubmVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTY2NEE0OUExNDMyNjM4NDAwODg4MUJF
IC8qIFRleHRJbnB1dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUM0NUMzMTMx
NzM5OEU0ODAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQk1QzQ1QzMwRjE3Mzk4RTI5MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
Y2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzQyY2I4NjlmYjkyMDEwMzM1YzA0ZGM5MDliNWM0Mjg3NzdkMGE2ZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmgiCi0KLSNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZO
ZXR3b3JrLmg+Ci0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KLSNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0KLWV4dGVybiAiQyIgewotCi1DRlVSTFJlZiBDRlVS
TFJlc3BvbnNlR2V0VVJMKENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZTdHJpbmdSZWYgQ0ZVUkxSZXNw
b25zZUdldE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZTdHJpbmdSZWYgQ0ZVUkxSZXNw
b25zZUdldFRleHRFbmNvZGluZ05hbWUoQ0ZVUkxSZXNwb25zZVJlZik7Ci1TSW50NjQgQ0ZVUkxS
ZXNwb25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChDRlVSTFJlc3BvbnNlUmVmKTsKLUNGSFRU
UE1lc3NhZ2VSZWYgQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShDRlVSTFJlc3BvbnNlUmVm
KTsKLQotQ0ZUeXBlSUQgQ0ZVUkxSZXNwb25zZUdldFR5cGVJRCh2b2lkKTsKLQotfQotCi1zdGF0
aWMgdm9pZCBjb252ZXJ0TUlNRVR5cGUoQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBlKQotewot
ICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS82MjM0MzE4PiB3aXRoIERhc2hj
b2RlIDIuMAotICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobWltZVR5cGUsIENGU1RSKCJhcHBsaWNh
dGlvbi94LWphdmFzY3JpcHQiKSwga0NGQ29tcGFyZUFuY2hvcmVkIHwga0NGQ29tcGFyZUNhc2VJ
bnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgIENGU3RyaW5nUmVwbGFj
ZUFsbChtaW1lVHlwZSwgQ0ZTVFIoInRleHQvamF2YXNjcmlwdCIpKTsKLX0KLQotc3RhdGljIHZv
aWQgY29udmVydFdlYlJlc291cmNlRGF0YVRvU3RyaW5nKENGTXV0YWJsZURpY3Rpb25hcnlSZWYg
cmVzb3VyY2UpCi17Ci0gICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIG1pbWVUeXBlID0gKENGTXV0YWJs
ZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291
cmNlTUlNRVR5cGUiKSk7Ci0gICAgQ0ZTdHJpbmdMb3dlcmNhc2UobWltZVR5cGUsIENGTG9jYWxl
R2V0U3lzdGVtKCkpOwotICAgIGNvbnZlcnRNSU1FVHlwZShtaW1lVHlwZSk7Ci0KLSAgICBDRkFy
cmF5UmVmIHN1cHBvcnRlZE1JTUVUeXBlcyA9IHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCk7
Ci0gICAgaWYgKENGU3RyaW5nSGFzUHJlZml4KG1pbWVUeXBlLCBDRlNUUigidGV4dC8iKSkgfHwg
Q0ZBcnJheUNvbnRhaW5zVmFsdWUoc3VwcG9ydGVkTUlNRVR5cGVzLCBDRlJhbmdlTWFrZSgwLCBD
RkFycmF5R2V0Q291bnQoc3VwcG9ydGVkTUlNRVR5cGVzKSksIG1pbWVUeXBlKSkgewotICAgICAg
ICBDRlN0cmluZ1JlZiB0ZXh0RW5jb2RpbmdOYW1lID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VUZXh0RW5j
b2RpbmdOYW1lIikpKTsKLSAgICAgICAgQ0ZTdHJpbmdFbmNvZGluZyBzdHJpbmdFbmNvZGluZzsK
LSAgICAgICAgaWYgKHRleHRFbmNvZGluZ05hbWUgJiYgQ0ZTdHJpbmdHZXRMZW5ndGgodGV4dEVu
Y29kaW5nTmFtZSkpCi0gICAgICAgICAgICBzdHJpbmdFbmNvZGluZyA9IENGU3RyaW5nQ29udmVy
dElBTkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcodGV4dEVuY29kaW5nTmFtZSk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHN0cmluZ0VuY29kaW5nID0ga0NGU3RyaW5nRW5jb2RpbmdVVEY4Owot
Ci0gICAgICAgIENGRGF0YVJlZiBkYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlRGF0YSIpKSk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGF0YUFzU3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIGRh
dGEsIHN0cmluZ0VuY29kaW5nKSk7Ci0gICAgICAgIGlmIChkYXRhQXNTdHJpbmcpCi0gICAgICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlRGF0
YSIpLCBkYXRhQXNTdHJpbmcuZ2V0KCkpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgbm9ybWFs
aXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKENGTXV0YWJsZURpY3Rpb25hcnlSZWYgZmllbGRz
KQotewotICAgIC8vIE5vcm1hbGl6ZSBoZWFkZXJzCi0gICAgaWYgKENGRGljdGlvbmFyeUNvbnRh
aW5zS2V5KGZpZWxkcywgQ0ZTVFIoIkRhdGUiKSkpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKGZpZWxkcywgQ0ZTVFIoIkRhdGUiKSwgQ0ZTVFIoIlN1biwgMTYgTm92IDIwMDggMTc6MDA6
MDAgR01UIikpOwotICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RS
KCJMYXN0LU1vZGlmaWVkIikpKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMs
IENGU1RSKCJMYXN0LU1vZGlmaWVkIiksIENGU1RSKCJTdW4sIDE2IE5vdiAyMDA4IDE2OjU1OjAw
IEdNVCIpKTsKLSAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigi
RXRhZyIpKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiRXRh
ZyIpLCBDRlNUUigiXCIzMDE5MjUtMjEtNDVjN2Q3MmQzZTc4MFwiIikpOwotICAgIGlmIChDRkRp
Y3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJTZXJ2ZXIiKSkpCi0gICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIlNlcnZlciIpLCBDRlNUUigiQXBhY2hl
LzIuMi45IChVbml4KSBtb2Rfc3NsLzIuMi45IE9wZW5TU0wvMC45LjdsIFBIUC81LjIuNiIpKTsK
LQotICAgIC8vIFJlbW92ZSBoZWFkZXJzCi0gICAgQ0ZEaWN0aW9uYXJ5UmVtb3ZlVmFsdWUoZmll
bGRzLCBDRlNUUigiQ29ubmVjdGlvbiIpKTsKLSAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZShm
aWVsZHMsIENGU1RSKCJLZWVwLUFsaXZlIikpOwotfQotCi1zdGF0aWMgdm9pZCBub3JtYWxpemVX
ZWJSZXNvdXJjZVVSTChDRk11dGFibGVTdHJpbmdSZWYgd2ViUmVzb3VyY2VVUkwpCi17Ci0gICAg
c3RhdGljIENGSW5kZXggZmlsZVVybExlbmd0aCA9IENGU3RyaW5nR2V0TGVuZ3RoKENGU1RSKCJm
aWxlOi8vIikpOwotICAgIENGUmFuZ2UgbGF5b3V0VGVzdHNXZWJBcmNoaXZlUGF0aFJhbmdlID0g
Q0ZTdHJpbmdGaW5kKHdlYlJlc291cmNlVVJMLCBDRlNUUigiL0xheW91dFRlc3RzLyIpLCBrQ0ZD
b21wYXJlQmFja3dhcmRzKTsKLSAgICBpZiAobGF5b3V0VGVzdHNXZWJBcmNoaXZlUGF0aFJhbmdl
LmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0gICAgQ0ZSYW5nZSBj
dXJyZW50V29ya2luZ0RpcmVjdG9yeVJhbmdlID0gQ0ZSYW5nZU1ha2UoZmlsZVVybExlbmd0aCwg
bGF5b3V0VGVzdHNXZWJBcmNoaXZlUGF0aFJhbmdlLmxvY2F0aW9uIC0gZmlsZVVybExlbmd0aCk7
Ci0gICAgQ0ZTdHJpbmdSZXBsYWNlKHdlYlJlc291cmNlVVJMLCBjdXJyZW50V29ya2luZ0RpcmVj
dG9yeVJhbmdlLCBDRlNUUigiIikpOwotfQotCi1zdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVzb3Vy
Y2VSZXNwb25zZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb3BlcnR5TGlz
dCkKLXsKLSAgICBDRkRhdGFSZWYgcmVzcG9uc2VEYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJl
c3BvbnNlIikpKTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCi0g
ICAgaWYgKENGR2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFJldGFpblB0cjxDRlVSTFJlc3BvbnNlUmVmPiByZXNwb25z
ZSA9IGFkb3B0Q0YoY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEocmVzcG9uc2VE
YXRhKSk7Ci0gICAgaWYgKCFyZXNwb25zZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmV0YWlu
UHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHJlc3BvbnNlRGljdGlvbmFyeSA9IGFkb3B0Q0Yo
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZV
UkxHZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNwb25zZS5nZXQoKSkpKSk7Ci0gICAg
bm9ybWFsaXplV2ViUmVzb3VyY2VVUkwodXJsU3RyaW5nLmdldCgpKTsKLSAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJVUkwiKSwgdXJsU3Ry
aW5nLmdldCgpKTsKLQotICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IG1pbWVUeXBl
U3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShyZXNwb25zZS5nZXQoKSkpKTsKLSAg
ICBjb252ZXJ0TUlNRVR5cGUobWltZVR5cGVTdHJpbmcuZ2V0KCkpOwotICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIk1JTUVUeXBlIiksIG1p
bWVUeXBlU3RyaW5nLmdldCgpKTsKLQotICAgIENGU3RyaW5nUmVmIHRleHRFbmNvZGluZ05hbWUg
PSBDRlVSTFJlc3BvbnNlR2V0VGV4dEVuY29kaW5nTmFtZShyZXNwb25zZS5nZXQoKSk7Ci0gICAg
aWYgKHRleHRFbmNvZGluZ05hbWUpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3Bv
bnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInRleHRFbmNvZGluZ05hbWUiKSwgdGV4dEVuY29k
aW5nTmFtZSk7Ci0KLSAgICBTSW50NjQgZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gQ0ZVUkxSZXNw
b25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChyZXNwb25zZS5nZXQoKSk7Ci0gICAgUmV0YWlu
UHRyPENGTnVtYmVyUmVmPiBleHBlY3RlZENvbnRlbnRMZW5ndGhOdW1iZXIgPSBhZG9wdENGKENG
TnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZl
eHBlY3RlZENvbnRlbnRMZW5ndGgpKTsKLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25z
ZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBlY3RlZENvbnRlbnRMZW5ndGgiKSwgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoTnVtYmVyLmdldCgpKTsKLQotICAgIGlmIChDRkhUVFBNZXNzYWdlUmVm
IGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShyZXNwb25zZS5nZXQo
KSkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVycyA9IGFk
b3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMoaHR0cE1lc3NhZ2UpKTsKLSAg
ICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGFsbEhlYWRlckZpZWxkcyA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgYWxsSGVhZGVycy5nZXQoKSkpOwotICAgICAgICBub3JtYWxpemVIVFRQUmVzcG9uc2VI
ZWFkZXJGaWVsZHMoYWxsSGVhZGVyRmllbGRzLmdldCgpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiYWxsSGVhZGVyRmllbGRz
IiksIGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7Ci0KLSAgICAgICAgQ0ZJbmRleCBzdGF0dXNDb2Rl
ID0gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29kZShodHRwTWVzc2FnZSk7Ci0gICAg
ICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gc3RhdHVzQ29kZU51bWJlciA9IGFkb3B0Q0YoQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyQ0ZJbmRleFR5cGUsICZz
dGF0dXNDb2RlKSk7Ci0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlv
bmFyeS5nZXQoKSwgQ0ZTVFIoInN0YXR1c0NvZGUiKSwgc3RhdHVzQ29kZU51bWJlci5nZXQoKSk7
Ci0gICAgfQotCi0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocHJvcGVydHlMaXN0LCBDRlNUUigi
V2ViUmVzb3VyY2VSZXNwb25zZSIpLCByZXNwb25zZURpY3Rpb25hcnkuZ2V0KCkpOwotfQotCi1z
dGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVSZXNvdXJjZVVSTHMoY29uc3Qgdm9pZCAq
dmFsMSwgY29uc3Qgdm9pZCAqdmFsMiwgdm9pZCAqY29udGV4dCkKLXsKLSAgICBDRlN0cmluZ1Jl
ZiB1cmwxID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN0
YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4odmFsMSksIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIp
KSk7Ci0gICAgQ0ZTdHJpbmdSZWYgdXJsMiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHZhbDIpLCBDRlNU
UigiV2ViUmVzb3VyY2VVUkwiKSkpOwotCi0gICAgcmV0dXJuIENGU3RyaW5nQ29tcGFyZSh1cmwx
LCB1cmwyLCBrQ0ZDb21wYXJlQW5jaG9yZWQpOwotfQotCi1DRlN0cmluZ1JlZiBjcmVhdGVYTUxT
dHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoQ0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKQotewotICAg
IENGRXJyb3JSZWYgZXJyb3IgPSAwOwotICAgIENGUHJvcGVydHlMaXN0Rm9ybWF0IGZvcm1hdCA9
IGtDRlByb3BlcnR5TGlzdEJpbmFyeUZvcm1hdF92MV8wOwotICAgIFJldGFpblB0cjxDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0eUxpc3QgPSBhZG9wdENGKChDRk11dGFibGVEaWN0aW9u
YXJ5UmVmKUNGUHJvcGVydHlMaXN0Q3JlYXRlV2l0aERhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
d2ViQXJjaGl2ZURhdGEsIGtDRlByb3BlcnR5TGlzdE11dGFibGVDb250YWluZXJzQW5kTGVhdmVz
LCAmZm9ybWF0LCAmZXJyb3IpKTsKLQotICAgIGlmICghcHJvcGVydHlMaXN0KSB7Ci0gICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29weURlc2NyaXB0aW9uKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihD
RlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIGRhdGEgdG8gcHJvcGVy
dHkgbGlzdC4iKSkpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4g
cmVzb3VyY2VzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7Ci0gICAgQ0ZBcnJheUFwcGVuZFZhbHVl
KHJlc291cmNlcy5nZXQoKSwgcHJvcGVydHlMaXN0LmdldCgpKTsKLQotICAgIHdoaWxlIChDRkFy
cmF5R2V0Q291bnQocmVzb3VyY2VzLmdldCgpKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGljdGlvbmFyeVJlZj4gcmVzb3VyY2VQcm9wZXJ0eUxpc3QgPSAoQ0ZNdXRhYmxlRGljdGlv
bmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHJlc291cmNlcy5nZXQoKSwgMCk7Ci0gICAg
ICAgIENGQXJyYXlSZW1vdmVWYWx1ZUF0SW5kZXgocmVzb3VyY2VzLmdldCgpLCAwKTsKLQotICAg
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1haW5SZXNvdXJjZSA9IChDRk11dGFibGVEaWN0
aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgp
LCBDRlNUUigiV2ViTWFpblJlc291cmNlIikpOwotICAgICAgICBub3JtYWxpemVXZWJSZXNvdXJj
ZVVSTCgoQ0ZNdXRhYmxlU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKG1haW5SZXNvdXJj
ZSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKLSAgICAgICAgY29udmVydFdlYlJlc291cmNl
RGF0YVRvU3RyaW5nKG1haW5SZXNvdXJjZSk7Ci0KLSAgICAgICAgLy8gQWRkIHN1YmZyYW1lQXJj
aGl2ZXMgdG8gbGlzdCBmb3IgcHJvY2Vzc2luZwotICAgICAgICBDRk11dGFibGVBcnJheVJlZiBz
dWJmcmFtZUFyY2hpdmVzID0gKENGTXV0YWJsZUFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVl
KHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgpLCBDRlNUUigiV2ViU3ViZnJhbWVBcmNoaXZlcyIp
KTsgLy8gV2ViU3ViZnJhbWVBcmNoaXZlc0tleSBpbiBXZWJBcmNoaXZlLm0KLSAgICAgICAgaWYg
KHN1YmZyYW1lQXJjaGl2ZXMpCi0gICAgICAgICAgICBDRkFycmF5QXBwZW5kQXJyYXkocmVzb3Vy
Y2VzLmdldCgpLCBzdWJmcmFtZUFyY2hpdmVzLCBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0Q291
bnQoc3ViZnJhbWVBcmNoaXZlcykpKTsKLQotICAgICAgICBDRk11dGFibGVBcnJheVJlZiBzdWJy
ZXNvdXJjZXMgPSAoQ0ZNdXRhYmxlQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3Vy
Y2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJTdWJyZXNvdXJjZXMiKSk7IC8vIFdlYlN1
YnJlc291cmNlc0tleSBpbiBXZWJBcmNoaXZlLm0KLSAgICAgICAgaWYgKCFzdWJyZXNvdXJjZXMp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBDRkluZGV4IHN1YnJlc291cmNlc0Nv
dW50ID0gQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNlcyk7Ci0gICAgICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IHN1YnJlc291cmNlc0NvdW50OyArK2kpIHsKLSAgICAgICAgICAgIENGTXV0
YWJsZURpY3Rpb25hcnlSZWYgc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QgPSAoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KHN1YnJlc291cmNlcywgaSk7Ci0gICAg
ICAgICAgICBub3JtYWxpemVXZWJSZXNvdXJjZVVSTCgoQ0ZNdXRhYmxlU3RyaW5nUmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKHN1YnJlc291cmNlUHJvcGVydHlMaXN0LCBDRlNUUigiV2ViUmVzb3Vy
Y2VVUkwiKSkpOwotICAgICAgICAgICAgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rp
b25hcnkoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QpOwotICAgICAgICAgICAgY29udmVydFdlYlJl
c291cmNlRGF0YVRvU3RyaW5nKHN1YnJlc291cmNlUHJvcGVydHlMaXN0KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFNvcnQgdGhlIHN1YnJlc291cmNlcyBzbyB0aGV5J3JlIGFsd2F5cyBpbiBh
IHByZWRpY3RhYmxlIG9yZGVyIGZvciB0aGUgZHVtcAotICAgICAgICBDRkFycmF5U29ydFZhbHVl
cyhzdWJyZXNvdXJjZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3VudChzdWJyZXNvdXJj
ZXMpKSwgY29tcGFyZVJlc291cmNlVVJMcywgMCk7Ci0gICAgfQotCi0gICAgZXJyb3IgPSAwOwot
Ci0gICAgUmV0YWluUHRyPENGRGF0YVJlZj4geG1sRGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxp
c3RDcmVhdGVEYXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3BlcnR5TGlzdC5nZXQoKSwga0NG
UHJvcGVydHlMaXN0WE1MRm9ybWF0X3YxXzAsIDAsICZlcnJvcikpOwotCi0gICAgaWYgKCF4bWxE
YXRhKSB7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29w
eURlc2NyaXB0aW9uKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRlJldGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5n
IHByb3BlcnR5IGxpc3QgdG8gZGF0YS4iKSkpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4geG1sU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJl
cHJlc2VudGF0aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIHhtbERhdGEuZ2V0KCksIGtDRlN0cmlu
Z0VuY29kaW5nVVRGOCkpOwotICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHN0cmlu
ZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwLCB4bWxTdHJpbmcuZ2V0KCkpKTsKLQotICAgIC8vIFJlcGxhY2UgIkFwcGxlIENvbXB1dGVy
IiB3aXRoICJBcHBsZSIgaW4gdGhlIERURCBkZWNsYXJhdGlvbi4KLSAgICBDRlN0cmluZ0ZpbmRB
bmRSZXBsYWNlKHN0cmluZy5nZXQoKSwgQ0ZTVFIoIi0vL0FwcGxlIENvbXB1dGVyLy8iKSwgQ0ZT
VFIoIi0vL0FwcGxlLy8iKSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5n
LmdldCgpKSksIDApOwotCi0gICAgcmV0dXJuIHN0cmluZy5sZWFrUmVmKCk7Ci19CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDBjNTgxODRlMGZkMmMxZGZmNjE0ODJhZDM5NDQ2Y2Y3
MmU2YmRlNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9oCi0jZGVmaW5lIFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9o
Ci0KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotCi10eXBlZGVm
IHN0cnVjdCBfQ0ZVUkxSZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKLQotQ0ZTdHJpbmdSZWYg
Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0
YSk7Ci0KLS8vIE1BUks6IC0KLS8vIE1BUks6IFBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZHMKLQot
Q0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRh
dGFSZWYgcmVzcG9uc2VEYXRhKTsKLUNGQXJyYXlSZWYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlw
ZXMoKTsKLQotI2VuZGlmIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9oICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298243</attachid>
            <date>2017-01-06 18:23:00 -0800</date>
            <delta_ts>2017-01-06 19:12:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166789-20170106182129.patch</filename>
            <type>text/plain</type>
            <size>80084</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MyNzcxMjFjNTczMzQ5
ZWRhYjQxYzY3ODRhM2JkNjlhMTE1MDk4NS4uNzMxOTUyY2UxM2ZhNmZjMTE4YTg3Y2QwMzc5MDBl
N2ExMWJlZmM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAxLTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENvbnNvbGlkYXRl
IGR1cGxpY2F0ZSBjb3BpZXMgb2YgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0IGluIERSVCBhbmQgV0tU
UiBpbnRvIFdlYkNvcmVUZXN0U3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY2Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUaGVyZSB3ZXJlIGR1cGxpY2F0ZSBpbXBsZW1lbnRh
dGlvbnMgb2YgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0IGluIER1bXBSZW5kZXJUcmVlIGFuZAorICAg
ICAgICBXZWJLaXRUZXN0UnVubmVyLiBUaGlzIGNoYW5nZSBjb25zb2xpZGF0ZXMgdGhlc2UgaW50
byBhIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBpbgorICAgICAgICBXZWJDb3JlVGVzdFN1cHBvcnQu
CisKKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQgV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0Lm1tIHRvIFdlYkNvcmVUZXN0U3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6IERpdHRvLiBBbHNvIG1hZGUgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmggYSBQcml2YXRlIGhlYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3Jr
U1BJLmg6IE1vdmVkIENGTmV0d29yayBmb3J3YXJkIGRlY2xhcmF0aW9ucyBmcm9tCisgICAgICAg
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydCB0byBoZXJlLgorICAgICAgICAqIHRlc3RpbmcvY29jb2Ev
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvY29jb2Ev
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOiBNZXJnZWQgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNw
cCBhbmQKKyAgICAgICAgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0e0NvY29hLE1hY30ubW0gaW50byBh
IHNpbmdsZSBmaWxlLgorCiAyMDE3LTAxLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFRlYWNoIFNoYXJlZEJ1ZmZlciB0byByZXR1cm4gYW4gTlNB
cnJheSBvZiBkYXRhIHNlZ21lbnRzIHRvIGF2b2lkIGZsYXR0ZW5pbmcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1N
YWMuY21ha2UKaW5kZXggOTQyNDQ2NGNjN2U2NzA2OTJlZDVjMTMwYjhmNTAzNDFiYjBhNjk0Ni4u
MzM5NjEwZTYyMWZiOTE4OTk1MjY4NWQ4YTI4OGYwNmJhMzI5NWJlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1NYWMuY21ha2UKQEAgLTc0NCw2ICs3NDQsOCBAQCBzZXQoQURESVRJT05BTF9CSU5ESU5HU19E
RVBFTkRFTkNJRVMKIHNldChXZWJDb3JlVGVzdFN1cHBvcnRfTElCUkFSWV9UWVBFIFNIQVJFRCkK
IGxpc3QoQVBQRU5EIFdlYkNvcmVUZXN0U3VwcG9ydF9MSUJSQVJJRVMgUFJJVkFURSBXZWJDb3Jl
KQogbGlzdChBUFBFTkQgV2ViQ29yZVRlc3RTdXBwb3J0X1NPVVJDRVMKKyAgICBiaW5kaW5ncy9j
b2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKwogICAgIGJpbmRpbmdzL2pzL0pTTW9ja0Nv
bnRlbnRGaWx0ZXJTZXR0aW5nc0N1c3RvbS5jcHAKIAogICAgIHRlc3RpbmcvSW50ZXJuYWxzLm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMTAyYmM1NmQ1NGRhZWY5NTZjY2ZmNTk3OTEwY2Y2Mzk0NjI1ZTBlMC4uZWI5ZTM2ZjU5
MTI1M2Q3ZGU1NGRhY2JkMWZjMmY2ODgwOTcxN2Y4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzkyOCw2ICszOTI4LDkgQEAK
IAkJQTE0OTc4NzExQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE0OTc4NzAxQUJB
RjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRlci5oICovOyB9OwogCQlBMTVFMzFG
MzFFMENCMEIyMDA0QjM3MUMgLyogUXVpY2tMb29rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RTMxRjIxRTBDQjBBQTAwNEIzNzFDIC8qIFF1aWNr
TG9vay5tbSAqLzsgfTsKIAkJQTE1RTMxRjQxRTBDQjBCNTAwNEIzNzFDIC8qIFF1aWNrTG9vay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RTMxRjEx
RTBDQjBBQTAwNEIzNzFDIC8qIFF1aWNrTG9vay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUExNzYzRjNFMUUyMDUyMzQwMDFENThERSAvKiBXZWJB
cmNoaXZlRHVtcFN1cHBvcnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTc2M0YzQzFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0Lm1tICovOyB9OworCQlBMTc2M0YzRjFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBMTc2M0YzRDFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTE3NjNGNDEx
RTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc2M0Y0MDFFMjA1ODZFMDAxRDU4REUg
LyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLzsgfTsKIAkJQTE3QzgxMjIwRjJBNUNGNzAwNURBQUVC
IC8qIEhUTUxFbGVtZW50RmFjdG9yeS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRG
YWN0b3J5LmNwcCAqLzsgfTsKIAkJQTE3QzgxMjMwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVt
ZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVtZW50RmFjdG9yeS5oICovOyB9
OwogCQlBMTgyRDVCNzFCRTcyMjY3MDA4N0E3Q0MgLyogU2V0dGluZ3NDb2NvYS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODJENUI2MUJFNzIyNjIw
MDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tICovOyB9OwpAQCAtMTE1OTgsNiArMTE2MDEsOSBA
QAogCQlBMTQ5Nzg3MDFBQkFGM0E1MDBDRUY3RTQgLyogUGxhdGZvcm1Db250ZW50RmlsdGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtQ29udGVudEZpbHRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVFMzFGMTFFMENCMEFBMDA0QjM3MUMg
LyogUXVpY2tMb29rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1aWNrTG9v
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTVFMzFGMjFFMENCMEFBMDA0QjM3
MUMgLyogUXVpY2tMb29rLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gUXVpY2tMb29rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc2M0YzQzFF
MjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc2M0YzRDFFMjA1MjM0MDAxRDU4REUgLyogV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkFyY2hpdmVEdW1wU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc2
M0Y0MDFFMjA1ODZFMDAxRDU4REUgLyogQ0ZOZXR3b3JrLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gQ0ZOZXR3b3JrLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvQ0ZOZXR3b3JrLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCUExN0M4
MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTEVsZW1lbnRGYWN0b3J5LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3QzgxMjEwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxF
bGVtZW50RmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MRWxl
bWVudEZhY3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1QjYxQkU3
MjI2MjAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTZXR0aW5nc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTQ5NjUsNiArMTQ5NzEsNyBAQAogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJQTE3NjNGNDExRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKIAkJCQlBQTVGM0I5MTE2Q0M1QkVCMDA0NTVFQjAgLyogQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCiAJCQkJNDEyMzA5MTMxMzhDNDJGRjAwQkND
RkNBIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTQx
MjMwODFCMTM4QzQyOTcwMEJDQ0ZDQSAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtz
ICovLApAQCAtMTU0MzQsNiArMTU0NDEsNyBAQAogCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcg
LyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CisJCQkJQTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgKi8s
CiAJCQkJRkQyREJGMEUxMkIwNDhBMzAwRUQ5OEM2IC8qIEFjY2VsZXJhdGUuZnJhbWV3b3JrICov
LAogCQkJCUZEMkRCRjBGMTJCMDQ4QTMwMEVEOThDNiAvKiBBdWRpb1Rvb2xib3guZnJhbWV3b3Jr
ICovLAogCQkJCUFBNUYzQjkwMTZDQzVCRUIwMDQ1NUVCMCAvKiBDb3JlRm91bmRhdGlvbi5mcmFt
ZXdvcmsgKi8sCkBAIC0xNjU3MCw2ICsxNjU3OCw3IEBACiAJCTQxN0RBNENEMTM3MzQyMDQwMDdD
NTdGQiAvKiB0ZXN0aW5nICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQlBMTc2M0YzQjFFMjA1MUFCMDAxRDU4REUgLyogY29jb2EgKi8sCiAJCQkJNDE4MTVD
MUIxMzgzMTk2MzAwNTdBQUE0IC8qIGpzICovLAogCQkJCTUxNzE0RUE5MUNGNjU4OTkwMDQ3MjND
NCAvKiBHQ09ic2VydmF0aW9uLmNwcCAqLywKIAkJCQk1MTcxNEVBQTFDRjY1ODk5MDA0NzIzQzQg
LyogR0NPYnNlcnZhdGlvbi5oICovLApAQCAtMTk2NzUsNiArMTk2ODQsMTUgQEAKIAkJCXBhdGgg
PSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlBMTc2M0YzQjFFMjA1
MUFCMDAxRDU4REUgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCUExNzYzRjNEMUUyMDUyMzQwMDFENThERSAvKiBXZWJBcmNoaXZlRHVtcFN1
cHBvcnQuaCAqLywKKwkJCQlBMTc2M0YzQzFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0Lm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CisJCX07CiAJCUE1MTZFOEIyMTM2RTA0QzAwMDc2QzNDMCAvKiBpb3MgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjQ4MTEsNiArMjQ4
MjksNyBAQAogCQkJCTJENkYzRTkxMUMxRUNCMkYwMDYxREJENCAvKiBNb2NrUGFnZU92ZXJsYXku
aCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTdGMDQ4MTlERDQxNDAwMDFFRTlDMyAvKiBNb2NrUGFn
ZU92ZXJsYXlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUFBNUYzQjhEMTZDQzMzRDEwMDQ1
NUVCMCAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9jay5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTE3NjNGM0YxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDE4MTVDMUYxMzgzMTk4MzAwNTdBQUE0IC8qIFdlYkNvcmVUZXN0
U3VwcG9ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0yODcwMCw2ICsyODcxOSw3IEBACiAJCQkJNTNFMjlFNUUx
NjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNTE3MTRFQjAxQ0Y2NjVDRTAwNDcyM0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk0MTdEQTcxRDEzNzM1REZBMDA3QzU3RkIgLyogSlNJbnRl
cm5hbHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTE3NjNGM0UxRTIwNTIzNDAwMUQ1OERFIC8q
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE3NDBCNUE3MTRD
OTM1QUYwMEE3N0ZBNCAvKiBKU0ludGVybmFsU2V0dGluZ3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTNFRDNGREUxNjdBODhFNzAwNjc2MkU2IC8qIEpTSW50ZXJuYWxTZXR0aW5nc0dlbmVyYXRl
ZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzQwQjU5NzE0QzkzNUFGMDBBNzdGQTQgLyogSlNN
YWxsb2NTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQSS5oCmluZGV4IDg5MTBmMGRmMWU4NmIxOGJmNDcxYjEw
YTEyYWRjZTdlNjg2YjgyM2YuLmViOGFkNjI0ZDM3ZGExNGVjNTI4ZDVlNGZhMmY5ZjFkNzQwZDM5
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtT
UEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgK
QEAgLTU1LDYgKzU1LDEzIEBAIHR5cGVkZWYgQ0ZfRU5VTShpbnQ2NF90LCBfVGltaW5nRGF0YU9w
dGlvbnMpCiAgICAgX1RpbWluZ0RhdGFPcHRpb25zRW5hYmxlVzNDTmF2aWdhdGlvblRpbWluZyA9
ICgxIDw8IDApCiB9OwogCitlbnVtIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5IHsKKyAgICBrQ0ZV
UkxDYWNoZVN0b3JhZ2VBbGxvd2VkID0gMCwKKyAgICBrQ0ZVUkxDYWNoZVN0b3JhZ2VBbGxvd2Vk
SW5NZW1vcnlPbmx5ID0gMSwKKyAgICBrQ0ZVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkID0gMgor
fTsKK3R5cGVkZWYgZW51bSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSBDRlVSTENhY2hlU3RvcmFn
ZVBvbGljeTsKKwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGQ2FjaGVkVVJMUmVzcG9uc2UqIENG
Q2FjaGVkVVJMUmVzcG9uc2VSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxDYWNoZSog
Q0ZVUkxDYWNoZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRlVSTENyZWRlbnRpYWwqIENG
VVJMQ3JlZGVudGlhbFJlZjsKQEAgLTE1MSw4ICsxNTgsOCBAQCB2b2lkIF9DRkNhY2hlZFVSTFJl
c3BvbnNlU2V0QmVjYW1lRmlsZUJhY2tlZENhbGxCYWNrQmxvY2soQ0ZDYWNoZWRVUkxSZXNwb25z
ZVJlZgogdm9pZCBDRlVSTENvbm5lY3Rpb25JbnZhbGlkYXRlQ29ubmVjdGlvbkNhY2hlKCk7CiAK
IGV4dGVybiBDRlN0cmluZ1JlZiBjb25zdCBrQ0ZIVFRQQ29va2llTG9jYWxGaWxlRG9tYWluOwor
ZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkhUVFBWZXJzaW9uMV8xOwogZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIGtDRlVSTFJlcXVlc3RBbGxvd0FsbFBPU1RDYWNoaW5nOwotCiBleHRlcm4g
Y29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENvbm5lY3Rpb25Qcm9wZXJ0eVNob3VsZFNuaWZmOwog
CiBDRkhUVFBDb29raWVTdG9yYWdlUmVmIF9DRkhUVFBDb29raWVTdG9yYWdlR2V0RGVmYXVsdChD
RkFsbG9jYXRvclJlZik7CkBAIC0xNzQsNiArMTgxLDEzIEBAIENGVVJMUmVmIENGVVJMUmVzcG9u
c2VHZXRVUkwoQ0ZVUkxSZXNwb25zZVJlZik7CiB2b2lkIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlw
ZShDRlVSTFJlc3BvbnNlUmVmLCBDRlN0cmluZ1JlZik7CiBDRkhUVFBDb29raWVTdG9yYWdlUmVm
IF9DRlVSTFN0b3JhZ2VTZXNzaW9uQ29weUNvb2tpZVN0b3JhZ2UoQ0ZBbGxvY2F0b3JSZWYsIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYpOwogQ0ZBcnJheVJlZiBfQ0ZIVFRQQ29va2llU3RvcmFnZUNv
cHlDb29raWVzRm9yVVJMV2l0aE1haW5Eb2N1bWVudFVSTChDRkhUVFBDb29raWVTdG9yYWdlUmVm
IGluQ29va2llU3RvcmFnZSwgQ0ZVUkxSZWYgaW5VUkwsIENGVVJMUmVmIGluTWFpbkRvY3VtZW50
VVJMLCBCb29sZWFuIHNlbmRTZWN1cmVDb29raWVzKTsKK0NGU3RyaW5nUmVmIENGVVJMUmVzcG9u
c2VHZXRUZXh0RW5jb2RpbmdOYW1lKENGVVJMUmVzcG9uc2VSZWYpOworU0ludDY0IENGVVJMUmVz
cG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoQ0ZVUkxSZXNwb25zZVJlZik7CitDRlR5cGVJ
RCBDRlVSTFJlc3BvbnNlR2V0VHlwZUlEKCk7CitDRlVSTFJlc3BvbnNlUmVmIENGVVJMUmVzcG9u
c2VDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVmLCBDRlN0cmluZ1JlZiBtaW1lVHlwZSwg
U0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCwgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFt
ZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kpOwordm9pZCBDRlVSTFJlc3BvbnNlU2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYsIFNJbnQ2NCBsZW5ndGgpOworQ0ZVUkxS
ZXNwb25zZVJlZiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShDRkFsbG9jYXRv
clJlZiwgQ0ZVUkxSZWYsIENGSFRUUE1lc3NhZ2VSZWYsIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5
KTsKKwogI2VuZGlmIC8vICFQTEFURk9STShXSU4pCiAKIFdURl9FWFRFUk5fQ19FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjU1MWM4YWI4ZjQwMDczZmYzMjc1NDU3NWVjOTQ0MWY1ZTJlN2FlMjYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVE
dW1wU3VwcG9ydC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiV2ViQ29yZVRlc3RTdXBwb3J0LmgiCisjaW5jbHVkZSA8Q29yZUZv
dW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9y
dCB7CisKK0NGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRh
dGFSZWYgd2ViQXJjaGl2ZURhdGEpIFRFU1RfU1VQUE9SVF9FWFBPUlQ7CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmVUZXN0U3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Y2EyYTM1MTkxMmI5
MmNiOGI5MmY2YTkwZDJiNzMyMTk2MzA0MWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTAsMCArMSwy
MzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmgiCisKKyNpbXBvcnQgIkNGTmV0d29ya1NQSS5oIgorI2ltcG9y
dCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGSFRUUE1lc3NhZ2Uu
aD4KKyNpbXBvcnQgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJDb3JlVGVz
dFN1cHBvcnQgeworCitzdGF0aWMgQ0ZVUkxSZXNwb25zZVJlZiBjcmVhdGVDRlVSTFJlc3BvbnNl
RnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKQoreworICAgIFJldGFpblB0
cjxOU0tleWVkVW5hcmNoaXZlcj4gdW5hcmNoaXZlciA9IGFkb3B0TlMoW1tOU0tleWVkVW5hcmNo
aXZlciBhbGxvY10gaW5pdEZvclJlYWRpbmdXaXRoRGF0YTooTlNEYXRhICopcmVzcG9uc2VEYXRh
XSk7CisgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBbdW5hcmNoaXZlciBkZWNvZGVPYmpl
Y3RGb3JLZXk6QCJXZWJSZXNvdXJjZVJlc3BvbnNlIl07IC8vIFdlYlJlc291cmNlUmVzcG9uc2VL
ZXkgaW4gV2ViUmVzb3VyY2UubQorICAgIFt1bmFyY2hpdmVyIGZpbmlzaERlY29kaW5nXTsKKwor
ICAgIGlmICghW3Jlc3BvbnNlIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNz
XV0pCisgICAgICAgIHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIChDRlVSTFJlZilyZXNwb25zZS5VUkwsIChDRlN0cmluZ1JlZilyZXNwb25zZS5NSU1FVHlw
ZSwgcmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoLCAoQ0ZTdHJpbmdSZWYpcmVzcG9uc2Uu
dGV4dEVuY29kaW5nTmFtZSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCk7CisKKyAgICBOU0hU
VFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9u
c2U7CisKKyAgICAvLyBOU1VSTFJlc3BvbnNlIGlzIG5vdCB0b2xsLWZyZWUgYnJpZGdlZCB0byBD
RlVSTFJlc3BvbnNlLgorICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBodHRwTWVzc2Fn
ZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGh0dHBSZXNwb25zZS5zdGF0dXNDb2RlLCBudWxscHRyLCBrQ0ZIVFRQVmVyc2lvbjFfMSkp
OworCisgICAgTlNEaWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBodHRwUmVzcG9uc2UuYWxsSGVh
ZGVyRmllbGRzOworICAgIGZvciAoTlNTdHJpbmcgKmhlYWRlckZpZWxkIGluIFtoZWFkZXJGaWVs
ZHMga2V5RW51bWVyYXRvcl0pCisgICAgICAgIENGSFRUUE1lc3NhZ2VTZXRIZWFkZXJGaWVsZFZh
bHVlKGh0dHBNZXNzYWdlLmdldCgpLCAoQ0ZTdHJpbmdSZWYpaGVhZGVyRmllbGQsIChDRlN0cmlu
Z1JlZilbaGVhZGVyRmllbGRzIG9iamVjdEZvcktleTpoZWFkZXJGaWVsZF0pOworCisgICAgcmV0
dXJuIENGVVJMUmVzcG9uc2VDcmVhdGVXaXRoSFRUUFJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIChDRlVSTFJlZilyZXNwb25zZS5VUkwsIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNo
ZVN0b3JhZ2VBbGxvd2VkKTsKK30KKworc3RhdGljIENGQXJyYXlSZWYgc3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMoKQoreworICAgIGF1dG8gYXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRdKTsKKyAgICBmb3IgKGF1dG8mIG1pbWVUeXBlIDogTUlNRVR5cGVSZWdp
c3RyeTo6Z2V0U3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKSkKKyAgICAgICAgW2FycmF5IGFk
ZE9iamVjdDptaW1lVHlwZV07CisgICAgcmV0dXJuIChDRkFycmF5UmVmKWFycmF5LmF1dG9yZWxl
YXNlKCk7Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnRNSU1FVHlwZShDRk11dGFibGVTdHJpbmdS
ZWYgbWltZVR5cGUpCit7CisgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYy
MzQzMTg+IHdpdGggRGFzaGNvZGUgMi4wCisgICAgaWYgKENGU3RyaW5nQ29tcGFyZShtaW1lVHlw
ZSwgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIpLCBrQ0ZDb21wYXJlQW5jaG9yZWQg
fCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKKyAgICAg
ICAgQ0ZTdHJpbmdSZXBsYWNlQWxsKG1pbWVUeXBlLCBDRlNUUigidGV4dC9qYXZhc2NyaXB0Iikp
OworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcoQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiByZXNvdXJjZSkKK3sKKyAgICBDRk11dGFibGVTdHJpbmdSZWYgbWlt
ZVR5cGUgPSAoQ0ZNdXRhYmxlU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNl
LCBDRlNUUigiV2ViUmVzb3VyY2VNSU1FVHlwZSIpKTsKKyAgICBDRlN0cmluZ0xvd2VyY2FzZSht
aW1lVHlwZSwgQ0ZMb2NhbGVHZXRTeXN0ZW0oKSk7CisgICAgY29udmVydE1JTUVUeXBlKG1pbWVU
eXBlKTsKKworICAgIENGQXJyYXlSZWYgc3VwcG9ydGVkTUlNRVR5cGVzID0gc3VwcG9ydGVkTm9u
SW1hZ2VNSU1FVHlwZXMoKTsKKyAgICBpZiAoQ0ZTdHJpbmdIYXNQcmVmaXgobWltZVR5cGUsIENG
U1RSKCJ0ZXh0LyIpKSB8fCBDRkFycmF5Q29udGFpbnNWYWx1ZShzdXBwb3J0ZWRNSU1FVHlwZXMs
IENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3VudChzdXBwb3J0ZWRNSU1FVHlwZXMpKSwgbWlt
ZVR5cGUpKSB7CisgICAgICAgIENGU3RyaW5nUmVmIHRleHRFbmNvZGluZ05hbWUgPSBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJX
ZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWUiKSkpOworICAgICAgICBDRlN0cmluZ0VuY29kaW5n
IHN0cmluZ0VuY29kaW5nOworICAgICAgICBpZiAodGV4dEVuY29kaW5nTmFtZSAmJiBDRlN0cmlu
Z0dldExlbmd0aCh0ZXh0RW5jb2RpbmdOYW1lKSkKKyAgICAgICAgICAgIHN0cmluZ0VuY29kaW5n
ID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXROYW1lVG9FbmNvZGluZyh0ZXh0RW5jb2RpbmdO
YW1lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc3RyaW5nRW5jb2RpbmcgPSBrQ0ZTdHJp
bmdFbmNvZGluZ1VURjg7CisKKyAgICAgICAgQ0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxD
RkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3Vy
Y2VEYXRhIikpKTsKKyAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBkYXRhQXNTdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlRnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxs
b2NhdG9yRGVmYXVsdCwgZGF0YSwgc3RyaW5nRW5jb2RpbmcpKTsKKyAgICAgICAgaWYgKGRhdGFB
c1N0cmluZykKKyAgICAgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc291cmNlLCBDRlNU
UigiV2ViUmVzb3VyY2VEYXRhIiksIGRhdGFBc1N0cmluZy5nZXQoKSk7CisgICAgfQorfQorCitz
dGF0aWMgdm9pZCBub3JtYWxpemVIVFRQUmVzcG9uc2VIZWFkZXJGaWVsZHMoQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBmaWVsZHMpCit7CisgICAgLy8gTm9ybWFsaXplIGhlYWRlcnMKKyAgICBpZiAo
Q0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiRGF0ZSIpKSkKKyAgICAgICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiRGF0ZSIpLCBDRlNUUigiU3VuLCAx
NiBOb3YgMjAwOCAxNzowMDowMCBHTVQiKSk7CisgICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5z
S2V5KGZpZWxkcywgQ0ZTVFIoIkxhc3QtTW9kaWZpZWQiKSkpCisgICAgICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIkxhc3QtTW9kaWZpZWQiKSwgQ0ZTVFIoIlN1biwgMTYg
Tm92IDIwMDggMTY6NTU6MDAgR01UIikpOworICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tl
eShmaWVsZHMsIENGU1RSKCJFdGFnIikpKQorICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShm
aWVsZHMsIENGU1RSKCJFdGFnIiksIENGU1RSKCJcIjMwMTkyNS0yMS00NWM3ZDcyZDNlNzgwXCIi
KSk7CisgICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIlNlcnZl
ciIpKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiU2VydmVy
IiksIENGU1RSKCJBcGFjaGUvMi4yLjkgKFVuaXgpIG1vZF9zc2wvMi4yLjkgT3BlblNTTC8wLjku
N2wgUEhQLzUuMi42IikpOworCisgICAgLy8gUmVtb3ZlIGhlYWRlcnMKKyAgICBDRkRpY3Rpb25h
cnlSZW1vdmVWYWx1ZShmaWVsZHMsIENGU1RSKCJDb25uZWN0aW9uIikpOworICAgIENGRGljdGlv
bmFyeVJlbW92ZVZhbHVlKGZpZWxkcywgQ0ZTVFIoIktlZXAtQWxpdmUiKSk7Cit9CisKK3N0YXRp
YyB2b2lkIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKENGTXV0YWJsZVN0cmluZ1JlZiB3ZWJSZXNv
dXJjZVVSTCkKK3sKKyAgICBzdGF0aWMgQ0ZJbmRleCBmaWxlVXJsTGVuZ3RoID0gQ0ZTdHJpbmdH
ZXRMZW5ndGgoQ0ZTVFIoImZpbGU6Ly8iKSk7CisgICAgQ0ZSYW5nZSBsYXlvdXRUZXN0c1dlYkFy
Y2hpdmVQYXRoUmFuZ2UgPSBDRlN0cmluZ0ZpbmQod2ViUmVzb3VyY2VVUkwsIENGU1RSKCIvTGF5
b3V0VGVzdHMvIiksIGtDRkNvbXBhcmVCYWNrd2FyZHMpOworICAgIGlmIChsYXlvdXRUZXN0c1dl
YkFyY2hpdmVQYXRoUmFuZ2UubG9jYXRpb24gPT0ga0NGTm90Rm91bmQpCisgICAgICAgIHJldHVy
bjsKKyAgICBDRlJhbmdlIGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UmFuZ2UgPSBDRlJhbmdlTWFr
ZShmaWxlVXJsTGVuZ3RoLCBsYXlvdXRUZXN0c1dlYkFyY2hpdmVQYXRoUmFuZ2UubG9jYXRpb24g
LSBmaWxlVXJsTGVuZ3RoKTsKKyAgICBDRlN0cmluZ1JlcGxhY2Uod2ViUmVzb3VyY2VVUkwsIGN1
cnJlbnRXb3JraW5nRGlyZWN0b3J5UmFuZ2UsIENGU1RSKCIiKSk7Cit9CisKK3N0YXRpYyB2b2lk
IGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25h
cnlSZWYgcHJvcGVydHlMaXN0KQoreworICAgIENGRGF0YVJlZiByZXNwb25zZURhdGEgPSBzdGF0
aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZT
VFIoIldlYlJlc291cmNlUmVzcG9uc2UiKSkpOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGlu
IFdlYlJlc291cmNlLm0KKyAgICBpZiAoQ0ZHZXRUeXBlSUQocmVzcG9uc2VEYXRhKSAhPSBDRkRh
dGFHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWluUHRyPENGVVJMUmVz
cG9uc2VSZWY+IHJlc3BvbnNlID0gYWRvcHRDRihjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3Bv
bnNlRGF0YShyZXNwb25zZURhdGEpKTsKKyAgICBpZiAoIXJlc3BvbnNlKQorICAgICAgICByZXR1
cm47CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcmVzcG9uc2VEaWN0
aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+
IHVybFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0cmluZyhDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNl
LmdldCgpKSkpKTsKKyAgICBub3JtYWxpemVXZWJSZXNvdXJjZVVSTCh1cmxTdHJpbmcuZ2V0KCkp
OworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZT
VFIoIlVSTCIpLCB1cmxTdHJpbmcuZ2V0KCkpOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZVN0
cmluZ1JlZj4gbWltZVR5cGVTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3Bv
bnNlLmdldCgpKSkpOworICAgIGNvbnZlcnRNSU1FVHlwZShtaW1lVHlwZVN0cmluZy5nZXQoKSk7
CisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNU
UigiTUlNRVR5cGUiKSwgbWltZVR5cGVTdHJpbmcuZ2V0KCkpOworCisgICAgQ0ZTdHJpbmdSZWYg
dGV4dEVuY29kaW5nTmFtZSA9IENGVVJMUmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKHJlc3Bv
bnNlLmdldCgpKTsKKyAgICBpZiAodGV4dEVuY29kaW5nTmFtZSkKKyAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigidGV4dEVuY29kaW5n
TmFtZSIpLCB0ZXh0RW5jb2RpbmdOYW1lKTsKKworICAgIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRM
ZW5ndGggPSBDRlVSTFJlc3BvbnNlR2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKHJlc3BvbnNlLmdl
dCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGV4cGVjdGVkQ29udGVudExlbmd0aE51
bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVt
YmVyU0ludDY0VHlwZSwgJmV4cGVjdGVkQ29udGVudExlbmd0aCkpOworICAgIENGRGljdGlvbmFy
eVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVu
dExlbmd0aCIpLCBleHBlY3RlZENvbnRlbnRMZW5ndGhOdW1iZXIuZ2V0KCkpOworCisgICAgaWYg
KENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3Bv
bnNlKHJlc3BvbnNlLmdldCgpKSkgeworICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVm
PiBhbGxIZWFkZXJzID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyho
dHRwTWVzc2FnZSkpOworICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4g
YWxsSGVhZGVyRmllbGRzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhbGxIZWFkZXJzLmdldCgpKSk7CisgICAgICAgIG5vcm1h
bGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxkcyhhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOworICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RS
KCJhbGxIZWFkZXJGaWVsZHMiKSwgYWxsSGVhZGVyRmllbGRzLmdldCgpKTsKKworICAgICAgICBD
RkluZGV4IHN0YXR1c0NvZGUgPSBDRkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0
dHBNZXNzYWdlKTsKKyAgICAgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBzdGF0dXNDb2RlTnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJDRkluZGV4VHlwZSwgJnN0YXR1c0NvZGUpKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigic3RhdHVzQ29kZSIpLCBzdGF0dXND
b2RlTnVtYmVyLmdldCgpKTsKKyAgICB9CisKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9w
ZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJlc3BvbnNlIiksIHJlc3BvbnNlRGljdGlvbmFy
eS5nZXQoKSk7Cit9CisKK3N0YXRpYyBDRkNvbXBhcmlzb25SZXN1bHQgY29tcGFyZVJlc291cmNl
VVJMcyhjb25zdCB2b2lkICp2YWwxLCBjb25zdCB2b2lkICp2YWwyLCB2b2lkICopCit7CisgICAg
Q0ZTdHJpbmdSZWYgdXJsMSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHZhbDEpLCBDRlNUUigiV2ViUmVz
b3VyY2VVUkwiKSkpOworICAgIENGU3RyaW5nUmVmIHVybDIgPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPih2
YWwyKSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKKworICAgIHJldHVybiBDRlN0cmluZ0Nv
bXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKK30KKworQ0ZTdHJpbmdSZWYg
Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0
YSkKK3sKKyAgICBDRkVycm9yUmVmIGVycm9yID0gMDsKKyAgICBDRlByb3BlcnR5TGlzdEZvcm1h
dCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMDsKKyAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydHlMaXN0ID0gYWRvcHRDRigoQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9wZXJ0eUxpc3RNdXRhYmxlQ29udGFpbmVy
c0FuZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7CisKKyAgICBpZiAoIXByb3BlcnR5TGlzdCkg
eworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gQ0ZFcnJvckNvcHlEZXNj
cmlwdGlvbihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBkYXRh
IHRvIHByb3BlcnR5IGxpc3QuIikpKTsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
QXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOworICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShyZXNvdXJjZXMuZ2V0KCksIHByb3BlcnR5TGlzdC5nZXQoKSk7CisKKyAgICB3
aGlsZSAoQ0ZBcnJheUdldENvdW50KHJlc291cmNlcy5nZXQoKSkpIHsKKyAgICAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHJlc291cmNlUHJvcGVydHlMaXN0ID0gKENGTXV0
YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvdXJjZXMuZ2V0KCks
IDApOworICAgICAgICBDRkFycmF5UmVtb3ZlVmFsdWVBdEluZGV4KHJlc291cmNlcy5nZXQoKSwg
MCk7CisKKyAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2UgPSAoQ0ZN
dXRhYmxlRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5
TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYk1haW5SZXNvdXJjZSIpKTsKKyAgICAgICAgbm9ybWFsaXpl
V2ViUmVzb3VyY2VVUkwoKENGTXV0YWJsZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZSht
YWluUmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7CisgICAgICAgIGNvbnZlcnRX
ZWJSZXNvdXJjZURhdGFUb1N0cmluZyhtYWluUmVzb3VyY2UpOworCisgICAgICAgIC8vIEFkZCBz
dWJmcmFtZUFyY2hpdmVzIHRvIGxpc3QgZm9yIHByb2Nlc3NpbmcKKyAgICAgICAgQ0ZNdXRhYmxl
QXJyYXlSZWYgc3ViZnJhbWVBcmNoaXZlcyA9IChDRk11dGFibGVBcnJheVJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYlN1YmZyYW1l
QXJjaGl2ZXMiKSk7IC8vIFdlYlN1YmZyYW1lQXJjaGl2ZXNLZXkgaW4gV2ViQXJjaGl2ZS5tCisg
ICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmVzKQorICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZEFy
cmF5KHJlc291cmNlcy5nZXQoKSwgc3ViZnJhbWVBcmNoaXZlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZB
cnJheUdldENvdW50KHN1YmZyYW1lQXJjaGl2ZXMpKSk7CisKKyAgICAgICAgQ0ZNdXRhYmxlQXJy
YXlSZWYgc3VicmVzb3VyY2VzID0gKENGTXV0YWJsZUFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgpLCBDRlNUUigiV2ViU3VicmVzb3VyY2VzIikp
OyAvLyBXZWJTdWJyZXNvdXJjZXNLZXkgaW4gV2ViQXJjaGl2ZS5tCisgICAgICAgIGlmICghc3Vi
cmVzb3VyY2VzKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgQ0ZJbmRleCBzdWJy
ZXNvdXJjZXNDb3VudCA9IENGQXJyYXlHZXRDb3VudChzdWJyZXNvdXJjZXMpOworICAgICAgICBm
b3IgKENGSW5kZXggaSA9IDA7IGkgPCBzdWJyZXNvdXJjZXNDb3VudDsgKytpKSB7CisgICAgICAg
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHN1YnJlc291cmNlUHJvcGVydHlMaXN0ID0gKENG
TXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdWJyZXNvdXJjZXMs
IGkpOworICAgICAgICAgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoKENGTXV0YWJsZVN0cmlu
Z1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCwgQ0ZTVFIo
IldlYlJlc291cmNlVVJMIikpKTsKKyAgICAgICAgICAgIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KHN1YnJlc291cmNlUHJvcGVydHlMaXN0KTsKKyAgICAgICAgICAgIGNv
bnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCk7Cisg
ICAgICAgIH0KKworICAgICAgICAvLyBTb3J0IHRoZSBzdWJyZXNvdXJjZXMgc28gdGhleSdyZSBh
bHdheXMgaW4gYSBwcmVkaWN0YWJsZSBvcmRlciBmb3IgdGhlIGR1bXAKKyAgICAgICAgQ0ZBcnJh
eVNvcnRWYWx1ZXMoc3VicmVzb3VyY2VzLCBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0Q291bnQo
c3VicmVzb3VyY2VzKSksIGNvbXBhcmVSZXNvdXJjZVVSTHMsIDApOworICAgIH0KKworICAgIGVy
cm9yID0gMDsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHhtbERhdGEgPSBhZG9wdENGKENG
UHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9wZXJ0eUxpc3Qu
Z2V0KCksIGtDRlByb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wLCAwLCAmZXJyb3IpKTsKKworICAg
IGlmICgheG1sRGF0YSkgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
Q0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQg
Y29udmVydGluZyBwcm9wZXJ0eSBsaXN0IHRvIGRhdGEuIikpKTsKKyAgICB9CisKKyAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9t
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxEYXRhLmdldCgp
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5n
UmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgeG1sU3RyaW5nLmdldCgpKSk7CisKKyAgICAvLyBSZXBsYWNlICJBcHBs
ZSBDb21wdXRlciIgd2l0aCAiQXBwbGUiIGluIHRoZSBEVEQgZGVjbGFyYXRpb24uCisgICAgQ0ZT
dHJpbmdGaW5kQW5kUmVwbGFjZShzdHJpbmcuZ2V0KCksIENGU1RSKCItLy9BcHBsZSBDb21wdXRl
ci8vIiksIENGU1RSKCItLy9BcHBsZS8vIiksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVu
Z3RoKHN0cmluZy5nZXQoKSkpLCAwKTsKKyAgICAKKyAgICByZXR1cm4gc3RyaW5nLmxlYWtSZWYo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZVRlc3RTdXBwb3J0CmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmFlY2FlMWM4OTE0MGM0MWY2
ZWExMTNiYTdkZTUwZmVhNzA1NGYzZS4uYjA4OTU5ZDY0MWQxMDcxNjJlYjNjMjI4MjFlYzcwNWJm
NzJjNGQ4YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTAxLTA2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIENvbnNvbGlkYXRlIGR1cGxpY2F0ZSBjb3BpZXMgb2Yg
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0IGluIERSVCBhbmQgV0tUUiBpbnRvIFdlYkNvcmVUZXN0U3Vw
cG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg6IFJlbW92ZWQu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAg
ICBDYWxsZWQgV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2
ZURhdGEoKSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZl
RGF0YSgpLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9XZWJBcmNoaXZlRHVtcFN1cHBv
cnRNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnOgorICAgICAgICBBZGRlZCAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
V2ViQ29yZVRlc3RTdXBwb3J0IHRvIEhFQURFUl9TRUFSQ0hfUEFUSFMuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAg
ICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUpOgorICAg
ICAgICBDYWxsZWQgV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJj
aGl2ZURhdGEoKSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNo
aXZlRGF0YSgpLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29j
b2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW06IFJlbW92ZWQuCisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBXZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOiBSZW1vdmVkLgor
CiAyMDE3LTAxLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
Q29jb2FdIFRlYWNoIFNoYXJlZEJ1ZmZlciB0byByZXR1cm4gYW4gTlNBcnJheSBvZiBkYXRhIHNl
Z21lbnRzIHRvIGF2b2lkIGZsYXR0ZW5pbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IGVjMzdmNGQ1M2I4Njg4MjUwZjNmMDI3MDU0MDk3OTQ2NTE1NzFlMDIuLmQ2OGRkMzU0MDhmZDdl
NjUxODRiOGY1ODYxMTkzY2VjZmU1Mzk3NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtODAsOCArODAsNiBAQAogCQkyRDQwM0YxQjE1MDg3MjA5MDA1MzU4RDIgLyogTGF5b3V0VGVz
dEhlbHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLzsgfTsKIAkJ
MkRBMkUzQTUxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBMkUzQTQx
RTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tICovOyB9Owog
CQkzMTExN0IzRDE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzExMTdC
M0IxNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5tbSAqLzsg
fTsKLQkJNDQwNTkwNzExMjY4NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MDU5
MDcwMTI2ODQ1MzgwMENGRDQ4RCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0gKi87IH07
Ci0JCTQ0Mzc3MzBFMTI1Q0JDMzYwMEFBRTAyQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBOTk3ODMw
RkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi87IH07CiAJCTQ0
NjRDQUJFMUMyMEEwOEIwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDY0Q0FCRDFDMjBBMDcw
MDBFNUJCNTUgLyogRHVtcFJlbmRlclRyZWVBcHBNYWluLm1tICovOyB9OwogCQk0QUQ2QTExNDEz
QzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDZBMTEzMTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFs
dWUuY3BwICovOyB9OwogCQk1MTA2ODAzRTE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2ODAz
RDE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgKi87IH07CkBAIC0zMDcsMTAgKzMw
NSw3IEBACiAJCTM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRXYXRjaGVy
ODAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZjsgcGF0aCA9IGZvbnRzL1dl
YktpdFdlaWdodFdhdGNoZXI4MDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkz
NzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGYgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1l
ID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRX
YXRjaGVyOTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3REFBMUMxMzdC
M0UyNDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJDb3JlVGVzdFN1cHBvcnQuaDsgcGF0aCA9IFdlYkNvcmVUZXN0U3Vw
cG9ydC9XZWJDb3JlVGVzdFN1cHBvcnQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKLQkJNDQwNTkwNzAxMjY4NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9y
dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkFyY2hp
dmVEdW1wU3VwcG9ydE1hYy5tbTsgcGF0aCA9IG1hYy9XZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NjRDQUJEMUMyMEEwNzAwMEU1QkI1
NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW07IHBhdGggPSBpb3MvRHVtcFJl
bmRlclRyZWVBcHBNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0NEE5OTc4
MjBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOyBwYXRoID0gY2Yv
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTQ0
QTk5NzgzMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNw
cDsgcGF0aCA9IGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRBRDZBMTEzMTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNjgwM0QxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dO
UFBOZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2xvd05QUE5l
dy5jcHA7IHBhdGggPSBUZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvU2xvd05QUE5ldy5jcHA7IHNv
dXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTExMzRDOTgxNjAxNEZEQjAwMUFBNTEzIC8q
IEludm9rZURlc3Ryb3lzUGx1Z2luV2l0aGluTlBQX05ldy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnZva2VEZXN0cm95c1BsdWdpbldpdGhpbk5QUF9OZXcuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk5LDkgKzQ5NCw2IEBACiAJCQkJQThE
NzlDRTgwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNl
LmggKi8sCiAJCQkJQThENzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmls
ZURyYWdnaW5nU291cmNlLm0gKi8sCiAJCQkJMkNFODhGQTExNzEyNENFRTAwNzM0RkMwIC8qIEph
dmFTY3JpcHRUaHJlYWRpbmcuY3BwICovLAotCQkJCTQ0QTk5NzgyMEZDREU4NjQwMDU4MEYxMCAv
KiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAqLywKLQkJCQk0NEE5OTc4MzBGQ0RFODY0MDA1ODBG
MTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLywKLQkJCQk0NDA1OTA3MDEyNjg0NTM4
MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICovLAogCQkJCUJDOUQ5MDIx
MEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUJDOUQ5MDIyMEM5NzQ3
MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCAqLywKIAkJCQlCQzlEOTAyMzBDOTc0NzJFMDA5OUE0
QTMgLyogV29ya1F1ZXVlSXRlbS5oICovLApAQCAtMTE1Miw4ICsxMTQ0LDYgQEAKIAkJCQkwRjE4
RTcwRDFENkJBQzhDMDAyN0U1NDcgLyogVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NCQkMzMjMxRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25zLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MEYxRDZCQUNCNjAwMjdFNTQ3IC8qIFVJU2NyaXB0Q29u
dHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ0Mzc3MzBFMTI1Q0JDMzYwMEFBRTAy
QyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNDQwNTkw
NzExMjY4NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDOUQ5MDI0MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMjYwQzlCMDE1QzAwMTE0MzY5IC8qIFdvcmtRdWV1ZUl0
ZW1NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3Jt
TWFjLmNtYWtlCmluZGV4IGRiYWZmMGUwNjBkMWEzOWMwNmQxODJmOTMwYjA2OTc0NWE3ZWE3N2Uu
LmQ1YmNlYjQ4YWY0YzRjZTk5YzQ0YjQzNDFkMzQ2YWI1YzM0NmE1MmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC04MSw4ICs4MSw2IEBAIGxpc3QoQVBQRU5EIER1
bXBSZW5kZXJUcmVlX09iakNfU09VUkNFUwogKQogCiBsaXN0KEFQUEVORCBEdW1wUmVuZGVyVHJl
ZV9DcHBfU09VUkNFUwotICAgIGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKLQogICAgIGNn
L1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKICkKIApAQCAtMTEyLDcgKzExMCw2IEBAIGxpc3QoQVBQ
RU5EIER1bXBSZW5kZXJUcmVlX09iakNwcF9TT1VSQ0VTCiAgICAgbWFjL1Rlc3RSdW5uZXJNYWMu
bW0KICAgICBtYWMvVUlEZWxlZ2F0ZS5tbQogICAgIG1hYy9VSVNjcmlwdENvbnRyb2xsZXJNYWMu
bW0KLSAgICBtYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCiAgICAgbWFjL1dvcmtRdWV1
ZUl0ZW1NYWMubW0KICkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NmL1dlYkFyY2hp
dmVEdW1wU3VwcG9ydC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzOTM2ZDY1
ZDRhMGU2OGJjNDI4MjM0ODIzYzI3ODkzZGNhYzE2NjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJBcmNo
aXZlRHVtcFN1cHBvcnQuaCIKLQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsuaD4KLSNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KLQotZXh0ZXJuICJDIiB7Ci0KLUNGVVJMUmVmIENGVVJMUmVzcG9uc2VHZXRV
UkwoQ0ZVUkxSZXNwb25zZVJlZik7Ci1DRlN0cmluZ1JlZiBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5
cGUoQ0ZVUkxSZXNwb25zZVJlZik7Ci1DRlN0cmluZ1JlZiBDRlVSTFJlc3BvbnNlR2V0VGV4dEVu
Y29kaW5nTmFtZShDRlVSTFJlc3BvbnNlUmVmKTsKLVNJbnQ2NCBDRlVSTFJlc3BvbnNlR2V0RXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZIVFRQTWVzc2FnZVJlZiBD
RlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYpOwotCi1DRlR5cGVJ
RCBDRlVSTFJlc3BvbnNlR2V0VHlwZUlEKHZvaWQpOwotCi19Ci0KLXN0YXRpYyB2b2lkIGNvbnZl
cnRNSU1FVHlwZShDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUpCi17Ci0gICAgLy8gV29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYyMzQzMTg+IHdpdGggRGFzaGNvZGUgMi4wCi0gICAg
aWYgKENGU3RyaW5nQ29tcGFyZShtaW1lVHlwZSwgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtamF2YXNj
cmlwdCIpLCBrQ0ZDb21wYXJlQW5jaG9yZWQgfCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSA9
PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgQ0ZTdHJpbmdSZXBsYWNlQWxsKG1pbWVUeXBl
LCBDRlNUUigidGV4dC9qYXZhc2NyaXB0IikpOwotfQotCi1zdGF0aWMgdm9pZCBjb252ZXJ0V2Vi
UmVzb3VyY2VEYXRhVG9TdHJpbmcoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZXNvdXJjZSkKLXsK
LSAgICBDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUgPSAoQ0ZNdXRhYmxlU3RyaW5nUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VNSU1FVHlwZSIp
KTsKLSAgICBDRlN0cmluZ0xvd2VyY2FzZShtaW1lVHlwZSwgQ0ZMb2NhbGVHZXRTeXN0ZW0oKSk7
Ci0gICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlKTsKLQotICAgIENGQXJyYXlSZWYgc3VwcG9y
dGVkTUlNRVR5cGVzID0gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBpZiAoQ0ZT
dHJpbmdIYXNQcmVmaXgobWltZVR5cGUsIENGU1RSKCJ0ZXh0LyIpKSB8fCBDRkFycmF5Q29udGFp
bnNWYWx1ZShzdXBwb3J0ZWRNSU1FVHlwZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3Vu
dChzdXBwb3J0ZWRNSU1FVHlwZXMpKSwgbWltZVR5cGUpKSB7Ci0gICAgICAgIENGU3RyaW5nUmVm
IHRleHRFbmNvZGluZ05hbWUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05hbWUiKSkp
OwotICAgICAgICBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nOwotICAgICAgICBpZiAo
dGV4dEVuY29kaW5nTmFtZSAmJiBDRlN0cmluZ0dldExlbmd0aCh0ZXh0RW5jb2RpbmdOYW1lKSkK
LSAgICAgICAgICAgIHN0cmluZ0VuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNoYXJTZXRO
YW1lVG9FbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgc3RyaW5nRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ1VURjg7Ci0KLSAgICAgICAgQ0ZE
YXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVl
KHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VEYXRhIikpKTsKLSAgICAgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBkYXRhQXNTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlRnJvbUV4
dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwgc3RyaW5nRW5j
b2RpbmcpKTsKLSAgICAgICAgaWYgKGRhdGFBc1N0cmluZykKLSAgICAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VEYXRhIiksIGRhdGFBc1N0
cmluZy5nZXQoKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBub3JtYWxpemVIVFRQUmVzcG9u
c2VIZWFkZXJGaWVsZHMoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBmaWVsZHMpCi17Ci0gICAgLy8g
Tm9ybWFsaXplIGhlYWRlcnMKLSAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRz
LCBDRlNUUigiRGF0ZSIpKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmllbGRzLCBD
RlNUUigiRGF0ZSIpLCBDRlNUUigiU3VuLCAxNiBOb3YgMjAwOCAxNzowMDowMCBHTVQiKSk7Ci0g
ICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIkxhc3QtTW9kaWZp
ZWQiKSkpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIkxhc3Qt
TW9kaWZpZWQiKSwgQ0ZTVFIoIlN1biwgMTYgTm92IDIwMDggMTY6NTU6MDAgR01UIikpOwotICAg
IGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJFdGFnIikpKQotICAg
ICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJFdGFnIiksIENGU1RSKCJc
IjMwMTkyNS0yMS00NWM3ZDcyZDNlNzgwXCIiKSk7Ci0gICAgaWYgKENGRGljdGlvbmFyeUNvbnRh
aW5zS2V5KGZpZWxkcywgQ0ZTVFIoIlNlcnZlciIpKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUoZmllbGRzLCBDRlNUUigiU2VydmVyIiksIENGU1RSKCJBcGFjaGUvMi4yLjkgKFVuaXgp
IG1vZF9zc2wvMi4yLjkgT3BlblNTTC8wLjkuN2wgUEhQLzUuMi42IikpOwotCi0gICAgLy8gUmVt
b3ZlIGhlYWRlcnMKLSAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZShmaWVsZHMsIENGU1RSKCJD
b25uZWN0aW9uIikpOwotICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVlKGZpZWxkcywgQ0ZTVFIo
IktlZXAtQWxpdmUiKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJM
KENGTXV0YWJsZVN0cmluZ1JlZiB3ZWJSZXNvdXJjZVVSTCkKLXsKLSAgICBzdGF0aWMgQ0ZJbmRl
eCBmaWxlVXJsTGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoQ0ZTVFIoImZpbGU6Ly8iKSk7Ci0g
ICAgQ0ZSYW5nZSBsYXlvdXRUZXN0c1dlYkFyY2hpdmVQYXRoUmFuZ2UgPSBDRlN0cmluZ0ZpbmQo
d2ViUmVzb3VyY2VVUkwsIENGU1RSKCIvTGF5b3V0VGVzdHMvIiksIGtDRkNvbXBhcmVCYWNrd2Fy
ZHMpOwotICAgIGlmIChsYXlvdXRUZXN0c1dlYkFyY2hpdmVQYXRoUmFuZ2UubG9jYXRpb24gPT0g
a0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICBDRlJhbmdlIGN1cnJlbnRXb3JraW5n
RGlyZWN0b3J5UmFuZ2UgPSBDRlJhbmdlTWFrZShmaWxlVXJsTGVuZ3RoLCBsYXlvdXRUZXN0c1dl
YkFyY2hpdmVQYXRoUmFuZ2UubG9jYXRpb24gLSBmaWxlVXJsTGVuZ3RoKTsKLSAgICBDRlN0cmlu
Z1JlcGxhY2Uod2ViUmVzb3VyY2VVUkwsIGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UmFuZ2UsIENG
U1RSKCIiKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9E
aWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJvcGVydHlMaXN0KQotewotICAgIENG
RGF0YVJlZiByZXNwb25zZURhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJlc291cmNlUmVzcG9uc2UiKSkpOyAv
LyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291cmNlLm0KLSAgICBpZiAoQ0ZHZXRU
eXBlSUQocmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlc3BvbnNlID0gYWRvcHRDRihj
cmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpKTsKLSAgICBp
ZiAoIXJlc3BvbnNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
RGljdGlvbmFyeVJlZj4gcmVzcG9uc2VEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtl
eUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLQotICAgIFJl
dGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHVybFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdD
cmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0cmluZyhD
RlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNlLmdldCgpKSkpKTsKLSAgICBub3JtYWxpemVXZWJS
ZXNvdXJjZVVSTCh1cmxTdHJpbmcuZ2V0KCkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJl
c3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIlVSTCIpLCB1cmxTdHJpbmcuZ2V0KCkpOwot
Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gbWltZVR5cGVTdHJpbmcgPSBhZG9w
dENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZV
UkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkpOwotICAgIGNvbnZlcnRNSU1F
VHlwZShtaW1lVHlwZVN0cmluZy5nZXQoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVz
cG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiTUlNRVR5cGUiKSwgbWltZVR5cGVTdHJpbmcu
Z2V0KCkpOwotCi0gICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IENGVVJMUmVzcG9u
c2VHZXRUZXh0RW5jb2RpbmdOYW1lKHJlc3BvbnNlLmdldCgpKTsKLSAgICBpZiAodGV4dEVuY29k
aW5nTmFtZSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5
LmdldCgpLCBDRlNUUigidGV4dEVuY29kaW5nTmFtZSIpLCB0ZXh0RW5jb2RpbmdOYW1lKTsKLQot
ICAgIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBDRlVSTFJlc3BvbnNlR2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKHJlc3BvbnNlLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJS
ZWY+IGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmV4cGVjdGVkQ29udGVu
dExlbmd0aCkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5n
ZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBleHBlY3RlZENvbnRlbnRMZW5n
dGhOdW1iZXIuZ2V0KCkpOwotCi0gICAgaWYgKENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2Ug
PSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKSkgewotICAgICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJzID0gYWRvcHRDRihDRkhUVFBN
ZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhodHRwTWVzc2FnZSkpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVyRmllbGRzID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhbGxIZWFk
ZXJzLmdldCgpKSk7Ci0gICAgICAgIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxkcyhh
bGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNw
b25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhbGxIZWFkZXJGaWVsZHMiKSwgYWxsSGVhZGVy
RmllbGRzLmdldCgpKTsKLQotICAgICAgICBDRkluZGV4IHN0YXR1c0NvZGUgPSBDRkhUVFBNZXNz
YWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKTsKLSAgICAgICAgUmV0YWluUHRy
PENGTnVtYmVyUmVmPiBzdGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1c0NvZGUpKTsK
LSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBD
RlNUUigic3RhdHVzQ29kZSIpLCBzdGF0dXNDb2RlTnVtYmVyLmdldCgpKTsKLSAgICB9Ci0KLSAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJl
c3BvbnNlIiksIHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBDRkNvbXBh
cmlzb25SZXN1bHQgY29tcGFyZVJlc291cmNlVVJMcyhjb25zdCB2b2lkICp2YWwxLCBjb25zdCB2
b2lkICp2YWwyLCB2b2lkICpjb250ZXh0KQotewotICAgIENGU3RyaW5nUmVmIHVybDEgPSBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZE
aWN0aW9uYXJ5UmVmPih2YWwxKSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKLSAgICBDRlN0
cmluZ1JlZiB1cmwyID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4odmFsMiksIENGU1RSKCJXZWJSZXNvdXJj
ZVVSTCIpKSk7Ci0KLSAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKHVybDEsIHVybDIsIGtDRkNv
bXBhcmVBbmNob3JlZCk7Ci19Ci0KLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJB
cmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCi17Ci0gICAgQ0ZFcnJvclJlZiBl
cnJvciA9IDA7Ci0gICAgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQgZm9ybWF0ID0ga0NGUHJvcGVydHlM
aXN0QmluYXJ5Rm9ybWF0X3YxXzA7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IHByb3BlcnR5TGlzdCA9IGFkb3B0Q0YoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZQcm9w
ZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3ZWJBcmNoaXZlRGF0
YSwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZmb3JtYXQsICZl
cnJvcikpOwotCi0gICAgaWYgKCFwcm9wZXJ0eUxpc3QpIHsKLSAgICAgICAgaWYgKGVycm9yKQot
ICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtu
b3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpKSk7
Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiByZXNvdXJjZXMgPSBh
ZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICBDRkFycmF5QXBwZW5kVmFsdWUocmVzb3VyY2VzLmdl
dCgpLCBwcm9wZXJ0eUxpc3QuZ2V0KCkpOwotCi0gICAgd2hpbGUgKENGQXJyYXlHZXRDb3VudChy
ZXNvdXJjZXMuZ2V0KCkpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5
UmVmPiByZXNvdXJjZVByb3BlcnR5TGlzdCA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgocmVzb3VyY2VzLmdldCgpLCAwKTsKLSAgICAgICAgQ0ZBcnJheVJl
bW92ZVZhbHVlQXRJbmRleChyZXNvdXJjZXMuZ2V0KCksIDApOwotCi0gICAgICAgIENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJN
YWluUmVzb3VyY2UiKSk7Ci0gICAgICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFi
bGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobWFpblJlc291cmNlLCBDRlNUUigiV2Vi
UmVzb3VyY2VVUkwiKSkpOwotICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmco
bWFpblJlc291cmNlKTsKLQotICAgICAgICAvLyBBZGQgc3ViZnJhbWVBcmNoaXZlcyB0byBsaXN0
IGZvciBwcm9jZXNzaW5nCi0gICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHN1YmZyYW1lQXJjaGl2
ZXMgPSAoQ0ZNdXRhYmxlQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9w
ZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJTdWJmcmFtZUFyY2hpdmVzIikpOyAvLyBXZWJTdWJm
cmFtZUFyY2hpdmVzS2V5IGluIFdlYkFyY2hpdmUubQotICAgICAgICBpZiAoc3ViZnJhbWVBcmNo
aXZlcykKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRBcnJheShyZXNvdXJjZXMuZ2V0KCksIHN1
YmZyYW1lQXJjaGl2ZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3VudChzdWJmcmFtZUFy
Y2hpdmVzKSkpOwotCi0gICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHN1YnJlc291cmNlcyA9IChD
Rk11dGFibGVBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlz
dC5nZXQoKSwgQ0ZTVFIoIldlYlN1YnJlc291cmNlcyIpKTsgLy8gV2ViU3VicmVzb3VyY2VzS2V5
IGluIFdlYkFyY2hpdmUubQotICAgICAgICBpZiAoIXN1YnJlc291cmNlcykKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIENGSW5kZXggc3VicmVzb3VyY2VzQ291bnQgPSBDRkFycmF5
R2V0Q291bnQoc3VicmVzb3VyY2VzKTsKLSAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwg
c3VicmVzb3VyY2VzQ291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZiBzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VicmVzb3VyY2VzLCBpKTsKLSAgICAgICAgICAgIG5vcm1h
bGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7Ci0g
ICAgICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeShzdWJyZXNv
dXJjZVByb3BlcnR5TGlzdCk7Ci0gICAgICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9T
dHJpbmcoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
U29ydCB0aGUgc3VicmVzb3VyY2VzIHNvIHRoZXkncmUgYWx3YXlzIGluIGEgcHJlZGljdGFibGUg
b3JkZXIgZm9yIHRoZSBkdW1wCi0gICAgICAgIENGQXJyYXlTb3J0VmFsdWVzKHN1YnJlc291cmNl
cywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNlcykpLCBjb21wYXJl
UmVzb3VyY2VVUkxzLCAwKTsKLSAgICB9Ci0KLSAgICBlcnJvciA9IDA7Ci0gICAgUmV0YWluUHRy
PENGRGF0YVJlZj4geG1sRGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVEYXRhKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHByb3BlcnR5TGlzdC5nZXQoKSwga0NGUHJvcGVydHlMaXN0WE1M
Rm9ybWF0X3YxXzAsIDAsICZlcnJvcikpOwotCi0gICAgaWYgKCF4bWxEYXRhKSB7Ci0gICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29weURlc2NyaXB0aW9uKGVy
cm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJldGFpbihD
RlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5IGxpc3Qg
dG8gZGF0YS4iKSkpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4geG1sU3Ry
aW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtD
RkFsbG9jYXRvckRlZmF1bHQsIHhtbERhdGEuZ2V0KCksIGtDRlN0cmluZ0VuY29kaW5nVVRGOCkp
OwotICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCB4bWxTdHJpbmcu
Z2V0KCkpKTsKLQotICAgIC8vIFJlcGxhY2UgIkFwcGxlIENvbXB1dGVyIiB3aXRoICJBcHBsZSIg
aW4gdGhlIERURCBkZWNsYXJhdGlvbi4KLSAgICBDRlN0cmluZ0ZpbmRBbmRSZXBsYWNlKHN0cmlu
Zy5nZXQoKSwgQ0ZTVFIoIi0vL0FwcGxlIENvbXB1dGVyLy8iKSwgQ0ZTVFIoIi0vL0FwcGxlLy8i
KSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nLmdldCgpKSksIDApOwot
Ci0gICAgcmV0dXJuIHN0cmluZy5sZWFrUmVmKCk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMGM1ODE4NGUwZmQyYzFkZmY2MTQ4MmFkMzk0NDZjZjcyZTZiZGU1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkFyY2hpdmVEdW1wU3VwcG9y
dF9oCi0jZGVmaW5lIFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9oCi0KLSNpbmNsdWRlIDxDb3JlRm91
bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxSZXNwb25z
ZSogQ0ZVUkxSZXNwb25zZVJlZjsKLQotQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdl
YkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSk7Ci0KLS8vIE1BUks6IC0KLS8v
IE1BUks6IFBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZHMKLQotQ0ZVUkxSZXNwb25zZVJlZiBjcmVh
dGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VEYXRhKTsK
LUNGQXJyYXlSZWYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKLQotI2VuZGlmIC8qIFdl
YkFyY2hpdmVEdW1wU3VwcG9ydF9oICovCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KaW5kZXggOTIwYzE1Y2NjN2RiZTg4NzdhNGM1MzdmOTA2N2MwNzhlNjhmMzM4
OS4uNzE4MTM3NzBiODc3MzQzOWNjNjBmMzg3MmY4NTViNDJmZjJjMzZmMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTc0MywxMSArMTc0MywxMSBA
QCB2b2lkIGR1bXAoKQogICAgICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxpY2F0aW9u
L3BkZiI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBET01Bc1dlYkFyY2hp
dmUoKSkgewogICAgICAgICAgICAgV2ViQXJjaGl2ZSAqd2ViQXJjaGl2ZSA9IFtbbWFpbkZyYW1l
IERPTURvY3VtZW50XSB3ZWJBcmNoaXZlXTsKLSAgICAgICAgICAgIHJlc3VsdFN0cmluZyA9IENG
QnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgoQ0ZEYXRh
UmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJy
aWRnaW5nUmVsZWFzZShXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJB
cmNoaXZlRGF0YSgoQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CiAgICAgICAgICAgICBy
ZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAgICAgfSBl
bHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7CiAgICAgICAg
ICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUgZGF0YVNvdXJjZV0gd2Vi
QXJjaGl2ZV07Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVsZWFzZShj
cmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKENGRGF0YVJlZilbd2ViQXJjaGl2ZSBk
YXRhXSkpOworICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVhc2UoV2Vi
Q29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKENGRGF0
YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOwogICAgICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBA
ImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
cmVzdWx0U3RyaW5nID0gW21haW5GcmFtZSByZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJlc2VudGF0
aW9uRm9yUHJpbnRpbmc6Z1Rlc3RSdW5uZXItPmlzUHJpbnRpbmcoKV07CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA2ZTc5NzUwZTMyMDk5YjAyYWJiZDhjMDMxOTQ3MzY4
YmU5MWRlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCisrKyAv
ZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgotCi0jaW1wb3J0IDxDRk5ldHdvcmsvQ0ZI
VFRQTWVzc2FnZS5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0jaW1wb3J0
IDxXZWJLaXQvV2ViSFRNTFJlcHJlc2VudGF0aW9uLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+Ci0KLWV4dGVybiAiQyIgewotCi1lbnVtIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5IHsKLSAg
a0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCA9IDAsCi0gIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93
ZWRJbk1lbW9yeU9ubHkgPSAxLAotICBrQ0ZVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2VkID0gMgot
fTsKLXR5cGVkZWYgZW51bSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSBDRlVSTENhY2hlU3RvcmFn
ZVBvbGljeTsKLQotZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkhUVFBWZXJzaW9uMV8xOwot
Ci1DRlVSTFJlc3BvbnNlUmVmIENGVVJMUmVzcG9uc2VDcmVhdGUoQ0ZBbGxvY2F0b3JSZWYgYWxs
b2MsIENGVVJMUmVmIFVSTCwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUsIFNJbnQ2NCBleHBlY3RlZENv
bnRlbnRMZW5ndGgsIENGU3RyaW5nUmVmIHRleHRFbmNvZGluZ05hbWUsIENGVVJMQ2FjaGVTdG9y
YWdlUG9saWN5IHJlY29tbWVuZGVkUG9saWN5KTsKLUNGVVJMUmVzcG9uc2VSZWYgQ0ZVUkxSZXNw
b25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2UoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENGVVJMUmVm
IFVSTCwgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2UsIENGVVJMQ2FjaGVTdG9yYWdlUG9s
aWN5IHJlY29tbWVuZGVkUG9saWN5KTsKLXZvaWQgQ0ZVUkxSZXNwb25zZVNldEV4cGVjdGVkQ29u
dGVudExlbmd0aChDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBTSW50NjQgbGVuZ3RoKTsKLXZv
aWQgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIENG
U3RyaW5nUmVmIG1pbWVUeXBlKTsKLQotfQotCi1DRlVSTFJlc3BvbnNlUmVmIGNyZWF0ZUNGVVJM
UmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhdGEpCi17Ci0gICAg
Ly8gRGVjb2RlIE5TVVJMUmVzcG9uc2UKLSAgICBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+
IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JS
ZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNlRGF0YV0pOwotICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gW3VuYXJjaGl2ZXIuZ2V0KCkgZGVjb2RlT2JqZWN0Rm9yS2V5OkAiV2Vi
UmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291
cmNlLm0KLSAgICBbdW5hcmNoaXZlci5nZXQoKSBmaW5pc2hEZWNvZGluZ107Ci0KLSAgICBpZiAo
IVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dKQotICAg
ICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZV
UkxSZWYpW3Jlc3BvbnNlIFVSTF0sIChDRlN0cmluZ1JlZilbcmVzcG9uc2UgTUlNRVR5cGVdLCBb
cmVzcG9uc2UgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXSwgKENGU3RyaW5nUmVmKVtyZXNwb25zZSB0
ZXh0RW5jb2RpbmdOYW1lXSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCk7Ci0KLSAgICBOU0hU
VFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopcmVzcG9u
c2U7Ci0KLSAgICAvLyBOU1VSTFJlc3BvbnNlIGlzIG5vdCB0b2xsLWZyZWUgYnJpZGdlZCB0byBD
RlVSTFJlc3BvbnNlLgotICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBodHRwTWVzc2Fn
ZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV0sIDAsIGtDRkhUVFBWZXJzaW9uMV8xKSk7Ci0K
LSAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtodHRwUmVzcG9uc2UgYWxsSGVhZGVy
RmllbGRzXTsKLSAgICBmb3IgKE5TU3RyaW5nICpoZWFkZXJGaWVsZCBpbiBbaGVhZGVyRmllbGRz
IGtleUVudW1lcmF0b3JdKQotICAgICAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmllbGRWYWx1
ZShodHRwTWVzc2FnZS5nZXQoKSwgKENGU3RyaW5nUmVmKWhlYWRlckZpZWxkLCAoQ0ZTdHJpbmdS
ZWYpW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6aGVhZGVyRmllbGRdKTsKLQotICAgIHJldHVy
biBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAoQ0ZVUkxSZWYpW3Jlc3BvbnNlIFVSTF0sIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZVUkxDYWNo
ZVN0b3JhZ2VBbGxvd2VkKTsKLX0KLQotQ0ZBcnJheVJlZiBzdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlcygpCi17Ci0gICAgcmV0dXJuIChDRkFycmF5UmVmKVtXZWJIVE1MUmVwcmVzZW50YXRpb24g
c3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IGYzYWJmOWMxMjU0NDNm
ZTk5NDdmY2Y0YjFmNWYzMzQ1ZmUxYTY1NTEuLjJlYTA5NWFlZGFlMjFmMTkwM2NiYmVkMTRkNWY4
N2ZjZTE0ODRiZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29uZmlndXJh
dGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NvbmZpZ3Vy
YXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTMzLDcgKzMzLDcgQEAgQ0xBTkdfQ1hYX0xJQlJBUlkg
PSBsaWJjKys7CiBDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKIENMQU5HX1dBUk5f
SU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOwogQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZ
RVM7Ci1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vzci9sb2Nh
bC9pbmNsdWRlICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Gb3J3YXJkaW5nSGVhZGVy
cyAkKFNSQ1JPT1QpLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UgJChORVhUX1JPT1Qp
L3Vzci9sb2NhbC9pbmNsdWRlL1dlYkNvcmVUZXN0U3VwcG9ydDsKK0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUgJChCVUlMVF9QUk9E
VUNUU19ESVIpL1dlYkNvcmVUZXN0U3VwcG9ydCAkKFdFQkNPUkVfUFJJVkFURV9IRUFERVJTX0RJ
UikvRm9yd2FyZGluZ0hlYWRlcnMgJChTUkNST09UKS8uLi8uLi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaWN1ICQoTkVYVF9ST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJDb3JlVGVzdFN1cHBvcnQ7
CiBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSBFTkFCTEVf
REFTSEJPQVJEX1NVUFBPUlQ7CiBERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRo
LWRzeW07CiBQUkVCSU5ESU5HID0gTk8KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRleCBkMWI2
Y2IxMTliNGU1MTNmOTllNzY0NDI2YTY1MGE2OWMyNDFkMTcyLi44NmE5ZjE5ZDQxMGE0NDk0Y2Yw
ZGY5OGJmNjIyNjZmYTNmZTc5NTNkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBAIC04NDYs
NyArODQ2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUo
V0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGQKICNpZiBVU0UoQ0YpCiAgICAgV0tS
ZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5V2Vi
QXJjaGl2ZShmcmFtZSkpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSksIFdLRGF0YUdl
dFNpemUod2tEYXRhLmdldCgpKSkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZTdHJp
bmcgPSBhZG9wdENGKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShjZkRhdGEuZ2V0
KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gYWRvcHRDRihXZWJD
b3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShjZkRhdGEu
Z2V0KCkpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjZlN0cmluZy5nZXQoKSk7CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
Y29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydENvY29hLm1tCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGU4NWE1YjE5ZTFhNDNkZDcwNjVkOWMxMWIw
Y2Q3YjMzNDIxOGY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2EvV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0Q29jb2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJBcmNoaXZlRHVtcFN1cHBv
cnQuaCIKLQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGSFRUUE1lc3NhZ2UuaD4KLSNpbXBvcnQgPEZv
dW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxSZXByZXNlbnRh
dGlvbi5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1leHRlcm4gIkMiIHsKLQotZW51
bSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSB7Ci0gICAga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dl
ZCA9IDAsCi0gICAga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZEluTWVtb3J5T25seSA9IDEsCi0g
ICAga0NGVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZCA9IDIKLX07Ci10eXBlZGVmIGVudW0gQ0ZV
UkxDYWNoZVN0b3JhZ2VQb2xpY3kgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3k7Ci0KLWV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQVmVyc2lvbjFfMTsKLQotQ0ZVUkxSZXNwb25zZVJlZiBD
RlVSTFJlc3BvbnNlQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBDRlVSTFJlZiwgQ0ZTdHJpbmdSZWYg
bWltZVR5cGUsIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgsIENGU3RyaW5nUmVmIHRleHRF
bmNvZGluZ05hbWUsIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5IHJlY29tbWVuZGVkUG9saWN5KTsK
LUNGVVJMUmVzcG9uc2VSZWYgQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2UoQ0ZB
bGxvY2F0b3JSZWYsIENGVVJMUmVmLCBDRkhUVFBNZXNzYWdlUmVmIGh0dHBSZXNwb25zZSwgQ0ZV
UkxDYWNoZVN0b3JhZ2VQb2xpY3kgcmVjb21tZW5kZWRQb2xpY3kpOwotdm9pZCBDRlVSTFJlc3Bv
bnNlU2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYsIFNJbnQ2NCBsZW5n
dGgpOwotdm9pZCBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiwgQ0ZT
dHJpbmdSZWYgbWltZVR5cGUpOwotCi19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxS
ZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKLXsKLSAgICBS
ZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXll
ZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3Bv
bnNlRGF0YV0pOwotICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW3VuYXJjaGl2ZXIgZGVj
b2RlT2JqZWN0Rm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJl
c3BvbnNlS2V5IGluIFdlYlJlc291cmNlLm0KLSAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGlu
Z107Ci0KLSAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25z
ZSBjbGFzc11dKQotICAgICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAoQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoQ0ZTdHJpbmdSZWYpcmVzcG9uc2Uu
TUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCwgKENGU3RyaW5nUmVmKXJl
c3BvbnNlLnRleHRFbmNvZGluZ05hbWUsIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOwotCi0g
ICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAq
KXJlc3BvbnNlOwotCi0gICAgLy8gTlNVUkxSZXNwb25zZSBpcyBub3QgdG9sbC1mcmVlIGJyaWRn
ZWQgdG8gQ0ZVUkxSZXNwb25zZS4KLSAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gaHR0
cE1lc3NhZ2UgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDcmVhdGVSZXNwb25zZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBodHRwUmVzcG9uc2Uuc3RhdHVzQ29kZSwgbnVsbHB0ciwga0NGSFRUUFZlcnNp
b24xXzEpKTsKLQotICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gaHR0cFJlc3BvbnNl
LmFsbEhlYWRlckZpZWxkczsKLSAgICBmb3IgKE5TU3RyaW5nICpoZWFkZXJGaWVsZCBpbiBbaGVh
ZGVyRmllbGRzIGtleUVudW1lcmF0b3JdKQotICAgICAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVy
RmllbGRWYWx1ZShodHRwTWVzc2FnZS5nZXQoKSwgKENGU3RyaW5nUmVmKWhlYWRlckZpZWxkLCAo
Q0ZTdHJpbmdSZWYpW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6aGVhZGVyRmllbGRdKTsKLQot
ICAgIHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAoQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NG
VVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCk7Ci19Ci0KLUNGQXJyYXlSZWYgc3VwcG9ydGVkTm9uSW1h
Z2VNSU1FVHlwZXMoKQotewotICAgIHJldHVybiAoQ0ZBcnJheVJlZilbV2ViSFRNTFJlcHJlc2Vu
dGF0aW9uIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXTsKLX0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1NYWMuY21ha2UgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDg2Y2FjNjg5ZmU2ODU3N2NlYzgwYzMyOTI2ODNl
ZDY1YjYzZjcxZjEuLjc3MDBhNjUyMjk0YTE2ZGJhMjAxMmQzYWFjNWQyNDQzMTZlYWE5Y2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMsMTEgKzMzLDkg
QEAgbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCiAKIGxp
c3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCiAgICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1tCi0gICAgJHtX
RUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKIAogICAg
ICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9jb2NvYS9BY3RpdmF0ZUZv
bnRzQ29jb2EubW0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0v
Y29jb2EvSW5qZWN0ZWRCdW5kbGVQYWdlQ29jb2EubW0KLSAgICAke1dFQktJVF9URVNUUlVOTkVS
X0lOSkVDVEVEQlVORExFX0RJUn0vY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW0K
IAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9tYWMvQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVE
QlVORExFX0RJUn0vbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1tCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5l
ci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY5MWEyNzQwN2M4M2YxMDk4OGEwMmQ3
NTAxODdmODM0MzZiZjcyMzQuLjJlYzBmNTZiMmU4YzAxOTdkNjM4YjBlM2Y5MTk1NWUyODJhOGMy
ZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1bm5lci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2Vi
S2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OCw4ICs3OCw2IEBA
CiAJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xsZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY0MUUyQ0Ux
NDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07CiAJCTU2
NjRBNDlBMTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NjRBNDk4MTQzMjYzODQw
MDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTY3MEI4MjgxMzg2
RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUgLyogRXZl
bnRTZW5kZXJQcm94eS5tbSAqLzsgfTsKLQkJNUM0NUMzMEYxNzM5OEUyOTAwNzk3MTRFIC8qIFdl
YkFyY2hpdmVEdW1wU3VwcG9ydENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM0NUMzMEUxNzM5OEUyOTAwNzk3MTRFIC8qIFdlYkFyY2hpdmVE
dW1wU3VwcG9ydENvY29hLm1tICovOyB9OwotCQk1QzQ1QzMxMzE3Mzk4RTQ4MDA3OTcxNEUgLyog
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNDVDMzExMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVt
cFN1cHBvcnQuY3BwICovOyB9OwogCQk2NTEwQTc4MjExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9f
X18uVFRGIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
NTEwQTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovOyB9OwogCQk2NTEwQTc4
NDExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc5MTFFQzY0Mzgw
MDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLzsgfTsKIAkJNjUxMEE3ODUx
MUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3QTExRUM2NDM4MDA0
MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYgKi87IH07CkBAIC0yNzIsOSArMjcw
LDYgQEAKIAkJNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudFNlbmRlclByb3h5
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODM5MTNEMDE0MzM1RTk1MDA4MzA3
RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1IC8qIEpTQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
QzQ1QzMwRTE3Mzk4RTI5MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBcmNoaXZlRHVtcFN1
cHBvcnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM0NUMzMTExNzM5
OEU0ODAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBwYXRoID0g
Y2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OwotCQk1QzQ1QzMxMjE3Mzk4RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5o
OyBwYXRoID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19fLlRURiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IG5hbWUg
PSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVNX19fXy5UVEYiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3OTExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2Vp
Z2h0V2F0Y2hlcjEwMC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7IHBhdGgg
PSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNjUxMEE3N0ExMUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIy
MDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmOyBwYXRoID0gZm9udHMvV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01
MDYsNyArNTAxLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTY1RUI4NTlGMTFFQzY3Q0MwMDM0
RDMwMCAvKiBBY3RpdmF0ZUZvbnRzQ29jb2EubW0gKi8sCiAJCQkJMEZFQjkwOUUxOTA1QTc3NjAw
MEZEQkYzIC8qIEluamVjdGVkQnVuZGxlUGFnZUNvY29hLm1tICovLAotCQkJCTVDNDVDMzBFMTcz
OThFMjkwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRDb2NvYS5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNTk4LDE1
ICs1OTIsNiBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07Ci0JCTVDNDVDMzEwMTczOThFMzcwMDc5NzE0RSAvKiBjZiAqLyA9IHsKLQkJCWlzYSA9IFBC
WEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUM0NUMzMTExNzM5OEU0ODAwNzk3MTRFIC8q
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8sCi0JCQkJNUM0NUMzMTIxNzM5OEU0ODAwNzk3
MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovLAotCQkJKTsKLQkJCW5hbWUgPSBjZjsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTY1RUI4NTlFMTFFQzY3Q0MwMDM0
RDMwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtNjQwLDcgKzYyNSw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAog
CQkJCUJDOTUyQzBBMTFGM0I5MzkwMDMzOThCNCAvKiBCaW5kaW5ncyAqLywKLQkJCQk1QzQ1QzMx
MDE3Mzk4RTM3MDA3OTcxNEUgLyogY2YgKi8sCiAJCQkJMEZFQjkwOUQxOTA1QTc1RDAwMEZEQkYz
IC8qIGNvY29hICovLAogCQkJCUJDMTRFNEUwMTIwRTAyRjkwMDgyNkMwQyAvKiBDb250cm9sbGVy
cyAqLywKIAkJCQlCQzk1MkQzQTExRjNCRjFGMDAzMzk4QjQgLyogRGVyaXZlZCBTb3VyY2VzICov
LApAQCAtMTAzNiw4ICsxMDIwLDYgQEAKIAkJCQkyRTYzRURBNjE4OTFCREMwMDAyQTdBRkMgLyog
VGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMENFNzIwQjEyNDdDOTMzMDBCQzBF
QzQgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU2NjRBNDlBMTQzMjYz
ODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJ
CTVDNDVDMzEzMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJNUM0NUMzMEYxNzM5OEUyOTAwNzk3MTRFIC8qIFdlYkFyY2hpdmVE
dW1wU3VwcG9ydENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDc0MmNiODY5ZmI5MjAxMDMzNWMwNGRjOTA5YjVjNDI4Nzc3ZDBhNmUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgotCi0jaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGTmV0d29yay5oPgotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0
aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1leHRlcm4gIkMiIHsKLQotQ0ZV
UkxSZWYgQ0ZVUkxSZXNwb25zZUdldFVSTChDRlVSTFJlc3BvbnNlUmVmKTsKLUNGU3RyaW5nUmVm
IENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmKTsKLUNGU3RyaW5nUmVm
IENGVVJMUmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKENGVVJMUmVzcG9uc2VSZWYpOwotU0lu
dDY0IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoQ0ZVUkxSZXNwb25zZVJl
Zik7Ci1DRkhUVFBNZXNzYWdlUmVmIENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoQ0ZVUkxS
ZXNwb25zZVJlZik7Ci0KLUNGVHlwZUlEIENGVVJMUmVzcG9uc2VHZXRUeXBlSUQodm9pZCk7Ci0K
LX0KLQotc3RhdGljIHZvaWQgY29udmVydE1JTUVUeXBlKENGTXV0YWJsZVN0cmluZ1JlZiBtaW1l
VHlwZSkKLXsKLSAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjIzNDMxOD4g
d2l0aCBEYXNoY29kZSAyLjAKLSAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1pbWVUeXBlLCBDRlNU
UigiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiksIGtDRkNvbXBhcmVBbmNob3JlZCB8IGtDRkNv
bXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQotICAgICAgICBDRlN0
cmluZ1JlcGxhY2VBbGwobWltZVR5cGUsIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSk7Ci19Ci0K
LXN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIHJlc291cmNlKQotewotICAgIENGTXV0YWJsZVN0cmluZ1JlZiBtaW1lVHlwZSA9
IChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RS
KCJXZWJSZXNvdXJjZU1JTUVUeXBlIikpOwotICAgIENGU3RyaW5nTG93ZXJjYXNlKG1pbWVUeXBl
LCBDRkxvY2FsZUdldFN5c3RlbSgpKTsKLSAgICBjb252ZXJ0TUlNRVR5cGUobWltZVR5cGUpOwot
Ci0gICAgQ0ZBcnJheVJlZiBzdXBwb3J0ZWRNSU1FVHlwZXMgPSBzdXBwb3J0ZWROb25JbWFnZU1J
TUVUeXBlcygpOwotICAgIGlmIChDRlN0cmluZ0hhc1ByZWZpeChtaW1lVHlwZSwgQ0ZTVFIoInRl
eHQvIikpIHx8IENGQXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZE1JTUVUeXBlcywgQ0ZSYW5n
ZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KHN1cHBvcnRlZE1JTUVUeXBlcykpLCBtaW1lVHlwZSkp
IHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJlc291
cmNlVGV4dEVuY29kaW5nTmFtZSIpKSk7Ci0gICAgICAgIENGU3RyaW5nRW5jb2Rpbmcgc3RyaW5n
RW5jb2Rpbmc7Ci0gICAgICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lICYmIENGU3RyaW5nR2V0TGVu
Z3RoKHRleHRFbmNvZGluZ05hbWUpKQotICAgICAgICAgICAgc3RyaW5nRW5jb2RpbmcgPSBDRlN0
cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKHRleHRFbmNvZGluZ05hbWUpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJpbmdFbmNvZGluZyA9IGtDRlN0cmluZ0VuY29k
aW5nVVRGODsKLQotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZURhdGEi
KSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRhdGFBc1N0cmluZyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBkYXRhLCBzdHJpbmdFbmNvZGluZykpOwotICAgICAgICBpZiAoZGF0YUFzU3RyaW5n
KQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJS
ZXNvdXJjZURhdGEiKSwgZGF0YUFzU3RyaW5nLmdldCgpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2
b2lkIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxkcyhDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIGZpZWxkcykKLXsKLSAgICAvLyBOb3JtYWxpemUgaGVhZGVycwotICAgIGlmIChDRkRpY3Rp
b25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJEYXRlIikpKQotICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJEYXRlIiksIENGU1RSKCJTdW4sIDE2IE5vdiAy
MDA4IDE3OjAwOjAwIEdNVCIpKTsKLSAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmll
bGRzLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoZmllbGRzLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpLCBDRlNUUigiU3VuLCAxNiBOb3YgMjAw
OCAxNjo1NTowMCBHTVQiKSk7Ci0gICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxk
cywgQ0ZTVFIoIkV0YWciKSkpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywg
Q0ZTVFIoIkV0YWciKSwgQ0ZTVFIoIlwiMzAxOTI1LTIxLTQ1YzdkNzJkM2U3ODBcIiIpKTsKLSAg
ICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiU2VydmVyIikpKQot
ICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJTZXJ2ZXIiKSwgQ0ZT
VFIoIkFwYWNoZS8yLjIuOSAoVW5peCkgbW9kX3NzbC8yLjIuOSBPcGVuU1NMLzAuOS43bCBQSFAv
NS4yLjYiKSk7Ci0KLSAgICAvLyBSZW1vdmUgaGVhZGVycwotICAgIENGRGljdGlvbmFyeVJlbW92
ZVZhbHVlKGZpZWxkcywgQ0ZTVFIoIkNvbm5lY3Rpb24iKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVt
b3ZlVmFsdWUoZmllbGRzLCBDRlNUUigiS2VlcC1BbGl2ZSIpKTsKLX0KLQotc3RhdGljIHZvaWQg
bm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoQ0ZNdXRhYmxlU3RyaW5nUmVmIHdlYlJlc291cmNlVVJM
KQotewotICAgIHN0YXRpYyBDRkluZGV4IGZpbGVVcmxMZW5ndGggPSBDRlN0cmluZ0dldExlbmd0
aChDRlNUUigiZmlsZTovLyIpKTsKLSAgICBDRlJhbmdlIGxheW91dFRlc3RzV2ViQXJjaGl2ZVBh
dGhSYW5nZSA9IENGU3RyaW5nRmluZCh3ZWJSZXNvdXJjZVVSTCwgQ0ZTVFIoIi9MYXlvdXRUZXN0
cy8iKSwga0NGQ29tcGFyZUJhY2t3YXJkcyk7Ci0gICAgaWYgKGxheW91dFRlc3RzV2ViQXJjaGl2
ZVBhdGhSYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotICAg
IENGUmFuZ2UgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlSYW5nZSA9IENGUmFuZ2VNYWtlKGZpbGVV
cmxMZW5ndGgsIGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhSYW5nZS5sb2NhdGlvbiAtIGZpbGVV
cmxMZW5ndGgpOwotICAgIENGU3RyaW5nUmVwbGFjZSh3ZWJSZXNvdXJjZVVSTCwgY3VycmVudFdv
cmtpbmdEaXJlY3RvcnlSYW5nZSwgQ0ZTVFIoIiIpKTsKLX0KLQotc3RhdGljIHZvaWQgY29udmVy
dFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBw
cm9wZXJ0eUxpc3QpCi17Ci0gICAgQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSA9IHN0YXRpY19jYXN0
PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydHlMaXN0LCBDRlNUUigiV2Vi
UmVzb3VyY2VSZXNwb25zZSIpKSk7IC8vIFdlYlJlc291cmNlUmVzcG9uc2VLZXkgaW4gV2ViUmVz
b3VyY2UubQotICAgIGlmIChDRkdldFR5cGVJRChyZXNwb25zZURhdGEpICE9IENGRGF0YUdldFR5
cGVJRCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNwb25zZVJl
Zj4gcmVzcG9uc2UgPSBhZG9wdENGKGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRh
KHJlc3BvbnNlRGF0YSkpOwotICAgIGlmICghcmVzcG9uc2UpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNwb25zZURpY3Rpb25hcnkg
PSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gdXJsU3Ry
aW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1
bHQsIDAsIENGVVJMR2V0U3RyaW5nKENGVVJMUmVzcG9uc2VHZXRVUkwocmVzcG9uc2UuZ2V0KCkp
KSkpOwotICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKHVybFN0cmluZy5nZXQoKSk7Ci0gICAg
Q0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiVVJM
IiksIHVybFN0cmluZy5nZXQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVm
PiBtaW1lVHlwZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9uc2UuZ2V0
KCkpKSk7Ci0gICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlU3RyaW5nLmdldCgpKTsKLSAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJNSU1F
VHlwZSIpLCBtaW1lVHlwZVN0cmluZy5nZXQoKSk7Ci0KLSAgICBDRlN0cmluZ1JlZiB0ZXh0RW5j
b2RpbmdOYW1lID0gQ0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05hbWUocmVzcG9uc2UuZ2V0
KCkpOwotICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ0ZXh0RW5jb2RpbmdOYW1lIiks
IHRleHRFbmNvZGluZ05hbWUpOwotCi0gICAgU0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCA9
IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgocmVzcG9uc2UuZ2V0KCkpOwot
ICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50
NjRUeXBlLCAmZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
IiksIGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlci5nZXQoKSk7Ci0KLSAgICBpZiAoQ0ZIVFRQ
TWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVz
cG9uc2UuZ2V0KCkpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGFsbEhl
YWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKGh0dHBNZXNz
YWdlKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBhbGxIZWFk
ZXJGaWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9j
YXRvckRlZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsKLSAgICAgICAgbm9ybWFsaXplSFRU
UFJlc3BvbnNlSGVhZGVyRmllbGRzKGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7Ci0gICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImFsbEhl
YWRlckZpZWxkcyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwotCi0gICAgICAgIENGSW5kZXgg
c3RhdHVzQ29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3Nh
Z2UpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN0YXR1c0NvZGVOdW1iZXIgPSBh
ZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5k
ZXhUeXBlLCAmc3RhdHVzQ29kZSkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNw
b25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJzdGF0dXNDb2RlIiksIHN0YXR1c0NvZGVOdW1i
ZXIuZ2V0KCkpOwotICAgIH0KLQotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3BlcnR5TGlz
dCwgQ0ZTVFIoIldlYlJlc291cmNlUmVzcG9uc2UiKSwgcmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgp
KTsKLX0KLQotc3RhdGljIENGQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlUmVzb3VyY2VVUkxzKGNv
bnN0IHZvaWQgKnZhbDEsIGNvbnN0IHZvaWQgKnZhbDIsIHZvaWQgKmNvbnRleHQpCi17Ci0gICAg
Q0ZTdHJpbmdSZWYgdXJsMSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHZhbDEpLCBDRlNUUigiV2ViUmVz
b3VyY2VVUkwiKSkpOwotICAgIENGU3RyaW5nUmVmIHVybDIgPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPih2
YWwyKSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKLQotICAgIHJldHVybiBDRlN0cmluZ0Nv
bXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKLX0KLQotQ0ZTdHJpbmdSZWYg
Y3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0
YSkKLXsKLSAgICBDRkVycm9yUmVmIGVycm9yID0gMDsKLSAgICBDRlByb3BlcnR5TGlzdEZvcm1h
dCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMDsKLSAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydHlMaXN0ID0gYWRvcHRDRigoQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9wZXJ0eUxpc3RNdXRhYmxlQ29udGFpbmVy
c0FuZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5TGlzdCkg
ewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gQ0ZFcnJvckNvcHlEZXNj
cmlwdGlvbihlcnJvcik7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGluZyBkYXRh
IHRvIHByb3BlcnR5IGxpc3QuIikpKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
QXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgIENGQXJyYXlB
cHBlbmRWYWx1ZShyZXNvdXJjZXMuZ2V0KCksIHByb3BlcnR5TGlzdC5nZXQoKSk7Ci0KLSAgICB3
aGlsZSAoQ0ZBcnJheUdldENvdW50KHJlc291cmNlcy5nZXQoKSkpIHsKLSAgICAgICAgUmV0YWlu
UHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHJlc291cmNlUHJvcGVydHlMaXN0ID0gKENGTXV0
YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvdXJjZXMuZ2V0KCks
IDApOwotICAgICAgICBDRkFycmF5UmVtb3ZlVmFsdWVBdEluZGV4KHJlc291cmNlcy5nZXQoKSwg
MCk7Ci0KLSAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2UgPSAoQ0ZN
dXRhYmxlRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5
TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYk1haW5SZXNvdXJjZSIpKTsKLSAgICAgICAgbm9ybWFsaXpl
V2ViUmVzb3VyY2VVUkwoKENGTXV0YWJsZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZSht
YWluUmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7Ci0gICAgICAgIGNvbnZlcnRX
ZWJSZXNvdXJjZURhdGFUb1N0cmluZyhtYWluUmVzb3VyY2UpOwotCi0gICAgICAgIC8vIEFkZCBz
dWJmcmFtZUFyY2hpdmVzIHRvIGxpc3QgZm9yIHByb2Nlc3NpbmcKLSAgICAgICAgQ0ZNdXRhYmxl
QXJyYXlSZWYgc3ViZnJhbWVBcmNoaXZlcyA9IChDRk11dGFibGVBcnJheVJlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYlN1YmZyYW1l
QXJjaGl2ZXMiKSk7IC8vIFdlYlN1YmZyYW1lQXJjaGl2ZXNLZXkgaW4gV2ViQXJjaGl2ZS5tCi0g
ICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmVzKQotICAgICAgICAgICAgQ0ZBcnJheUFwcGVuZEFy
cmF5KHJlc291cmNlcy5nZXQoKSwgc3ViZnJhbWVBcmNoaXZlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZB
cnJheUdldENvdW50KHN1YmZyYW1lQXJjaGl2ZXMpKSk7Ci0KLSAgICAgICAgQ0ZNdXRhYmxlQXJy
YXlSZWYgc3VicmVzb3VyY2VzID0gKENGTXV0YWJsZUFycmF5UmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgpLCBDRlNUUigiV2ViU3VicmVzb3VyY2VzIikp
OyAvLyBXZWJTdWJyZXNvdXJjZXNLZXkgaW4gV2ViQXJjaGl2ZS5tCi0gICAgICAgIGlmICghc3Vi
cmVzb3VyY2VzKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgQ0ZJbmRleCBzdWJy
ZXNvdXJjZXNDb3VudCA9IENGQXJyYXlHZXRDb3VudChzdWJyZXNvdXJjZXMpOwotICAgICAgICBm
b3IgKENGSW5kZXggaSA9IDA7IGkgPCBzdWJyZXNvdXJjZXNDb3VudDsgKytpKSB7Ci0gICAgICAg
ICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHN1YnJlc291cmNlUHJvcGVydHlMaXN0ID0gKENG
TXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdWJyZXNvdXJjZXMs
IGkpOwotICAgICAgICAgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoKENGTXV0YWJsZVN0cmlu
Z1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCwgQ0ZTVFIo
IldlYlJlc291cmNlVVJMIikpKTsKLSAgICAgICAgICAgIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KHN1YnJlc291cmNlUHJvcGVydHlMaXN0KTsKLSAgICAgICAgICAgIGNv
bnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICAvLyBTb3J0IHRoZSBzdWJyZXNvdXJjZXMgc28gdGhleSdyZSBh
bHdheXMgaW4gYSBwcmVkaWN0YWJsZSBvcmRlciBmb3IgdGhlIGR1bXAKLSAgICAgICAgQ0ZBcnJh
eVNvcnRWYWx1ZXMoc3VicmVzb3VyY2VzLCBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0Q291bnQo
c3VicmVzb3VyY2VzKSksIGNvbXBhcmVSZXNvdXJjZVVSTHMsIDApOwotICAgIH0KLQotICAgIGVy
cm9yID0gMDsKLQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHhtbERhdGEgPSBhZG9wdENGKENG
UHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9wZXJ0eUxpc3Qu
Z2V0KCksIGtDRlByb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wLCAwLCAmZXJyb3IpKTsKLQotICAg
IGlmICgheG1sRGF0YSkgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4g
Q0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcik7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQg
Y29udmVydGluZyBwcm9wZXJ0eSBsaXN0IHRvIGRhdGEuIikpKTsKLSAgICB9Ci0KLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9t
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxEYXRhLmdldCgp
LCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5n
UmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgeG1sU3RyaW5nLmdldCgpKSk7Ci0KLSAgICAvLyBSZXBsYWNlICJBcHBs
ZSBDb21wdXRlciIgd2l0aCAiQXBwbGUiIGluIHRoZSBEVEQgZGVjbGFyYXRpb24uCi0gICAgQ0ZT
dHJpbmdGaW5kQW5kUmVwbGFjZShzdHJpbmcuZ2V0KCksIENGU1RSKCItLy9BcHBsZSBDb21wdXRl
ci8vIiksIENGU1RSKCItLy9BcHBsZS8vIiksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5nR2V0TGVu
Z3RoKHN0cmluZy5nZXQoKSkpLCAwKTsKLQotICAgIHJldHVybiBzdHJpbmcubGVha1JlZigpOwot
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1
cHBvcnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYzU4MTg0ZTBmZDJjMWRmZjYxNDgy
YWQzOTQ0NmNmNzJlNmJkZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2lmbmRlZiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRfaAotI2RlZmluZSBXZWJBcmNoaXZlRHVt
cFN1cHBvcnRfaAotCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
LQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUmVzcG9uc2UqIENGVVJMUmVzcG9uc2VSZWY7Ci0KLUNG
U3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2Vi
QXJjaGl2ZURhdGEpOwotCi0vLyBNQVJLOiAtCi0vLyBNQVJLOiBQbGF0Zm9ybS1zcGVjaWZpYyBt
ZXRob2RzCi0KLUNGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25z
ZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSk7Ci1DRkFycmF5UmVmIHN1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGVzKCk7Ci0KLSNlbmRpZiAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRfaCAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298248</attachid>
            <date>2017-01-06 19:12:55 -0800</date>
            <delta_ts>2017-01-06 19:50:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-166789-20170106191125.patch</filename>
            <type>text/plain</type>
            <size>80090</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEwMzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2MyNzcxMjFjNTczMzQ5
ZWRhYjQxYzY3ODRhM2JkNjlhMTE1MDk4NS4uM2UzZWI5NDI4NGQwZDIwZTFkZWQ2NjcyMDY3ODU1
YTBlNmI2MTg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTAxLTA2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENvbnNvbGlkYXRl
IGR1cGxpY2F0ZSBjb3BpZXMgb2YgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0IGluIERSVCBhbmQgV0tU
UiBpbnRvIFdlYkNvcmVUZXN0U3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY2Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJp
c3RlbnNlbi4KKworICAgICAgICBUaGVyZSB3ZXJlIGR1cGxpY2F0ZSBpbXBsZW1lbnRhdGlvbnMg
b2YgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0IGluIER1bXBSZW5kZXJUcmVlIGFuZAorICAgICAgICBX
ZWJLaXRUZXN0UnVubmVyLiBUaGlzIGNoYW5nZSBjb25zb2xpZGF0ZXMgdGhlc2UgaW50byBhIHNp
bmdsZSBpbXBsZW1lbnRhdGlvbiBpbgorICAgICAgICBXZWJDb3JlVGVzdFN1cHBvcnQuCisKKyAg
ICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1t
IHRvIFdlYkNvcmVUZXN0U3VwcG9ydC4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IERpdHRvLiBBbHNvIG1hZGUgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggYSBQ
cml2YXRlIGhlYWRlci4KKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6
IE1vdmVkIENGTmV0d29yayBmb3J3YXJkIGRlY2xhcmF0aW9ucyBmcm9tCisgICAgICAgIFdlYkFy
Y2hpdmVEdW1wU3VwcG9ydCB0byBoZXJlLgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0Lmg6IEFkZGVkLgorICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJj
aGl2ZUR1bXBTdXBwb3J0Lm1tOiBNZXJnZWQgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBhbmQK
KyAgICAgICAgV2ViQXJjaGl2ZUR1bXBTdXBwb3J0e0NvY29hLE1hY30ubW0gaW50byBhIHNpbmds
ZSBmaWxlLgorCiAyMDE3LTAxLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbQ29jb2FdIFRlYWNoIFNoYXJlZEJ1ZmZlciB0byByZXR1cm4gYW4gTlNBcnJheSBv
ZiBkYXRhIHNlZ21lbnRzIHRvIGF2b2lkIGZsYXR0ZW5pbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21h
a2UKaW5kZXggOTQyNDQ2NGNjN2U2NzA2OTJlZDVjMTMwYjhmNTAzNDFiYjBhNjk0Ni4uNGZkZjJm
NDM1MjJkOWJjMjIzNzU4NDRmNDgyZTM3MmYyOGU5Y2M0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKQEAgLTc0OSw2ICs3NDksOCBAQCBsaXN0KEFQUEVORCBXZWJDb3JlVGVzdFN1cHBvcnRf
U09VUkNFUwogICAgIHRlc3RpbmcvSW50ZXJuYWxzLm1tCiAgICAgdGVzdGluZy9Nb2NrQ29udGVu
dEZpbHRlci5jcHAKICAgICB0ZXN0aW5nL01vY2tDb250ZW50RmlsdGVyU2V0dGluZ3MuY3BwCisK
KyAgICB0ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQogKQogCiBzZXQoQ01B
S0VfU0hBUkVEX0xJTktFUl9GTEFHUyAke0NNQUtFX1NIQVJFRF9MSU5LRVJfRkxBR1N9ICItY29t
cGF0aWJpbGl0eV92ZXJzaW9uIDEgLWN1cnJlbnRfdmVyc2lvbiAke1dFQktJVF9NQUNfVkVSU0lP
Tn0iKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDEwMmJjNTZkNTRkYWVmOTU2Y2NmZjU5NzkxMGNmNjM5NDYyNWUwZTAuLmViOWUz
NmY1OTEyNTNkN2RlNTRkYWNiZDFmYzJmNjg4MDk3MTdmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM5MjgsNiArMzkyOCw5
IEBACiAJCUExNDk3ODcxMUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNDk3ODcw
MUFCQUYzQTUwMENFRjdFNCAvKiBQbGF0Zm9ybUNvbnRlbnRGaWx0ZXIuaCAqLzsgfTsKIAkJQTE1
RTMxRjMxRTBDQjBCMjAwNEIzNzFDIC8qIFF1aWNrTG9vay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUUzMUYyMUUwQ0IwQUEwMDRCMzcxQyAvKiBR
dWlja0xvb2subW0gKi87IH07CiAJCUExNUUzMUY0MUUwQ0IwQjUwMDRCMzcxQyAvKiBRdWlja0xv
b2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNUUz
MUYxMUUwQ0IwQUEwMDRCMzcxQyAvKiBRdWlja0xvb2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMTc2M0YzRTFFMjA1MjM0MDAxRDU4REUgLyog
V2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3NjNGM0MxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1w
U3VwcG9ydC5tbSAqLzsgfTsKKwkJQTE3NjNGM0YxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hp
dmVEdW1wU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3NjNGM0QxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExNzYz
RjQxMUUyMDU4NkUwMDFENThERSAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3NjNGNDAxRTIwNTg2RTAwMUQ1
OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgKi87IH07CiAJCUExN0M4MTIyMEYyQTVDRjcwMDVE
QUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3QzgxMjAwRjJBNUNGNzAwNURBQUVCIC8qIEhUTUxFbGVt
ZW50RmFjdG9yeS5jcHAgKi87IH07CiAJCUExN0M4MTIzMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1M
RWxlbWVudEZhY3RvcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAq
LzsgfTsKIAkJQTE4MkQ1QjcxQkU3MjI2NzAwODdBN0NDIC8qIFNldHRpbmdzQ29jb2EubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVCNjFCRTcy
MjYyMDA4N0E3Q0MgLyogU2V0dGluZ3NDb2NvYS5tbSAqLzsgfTsKQEAgLTExNTk4LDYgKzExNjAx
LDkgQEAKIAkJQTE0OTc4NzAxQUJBRjNBNTAwQ0VGN0U0IC8qIFBsYXRmb3JtQ29udGVudEZpbHRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybUNvbnRlbnRGaWx0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE1RTMxRjExRTBDQjBBQTAwNEIz
NzFDIC8qIFF1aWNrTG9vay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWlj
a0xvb2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE1RTMxRjIxRTBDQjBBQTAw
NEIzNzFDIC8qIFF1aWNrTG9vay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFF1aWNrTG9vay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3NjNG
M0MxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3NjNGM0QxRTIwNTIzNDAwMUQ1OERFIC8q
IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTE3NjNGNDAxRTIwNTg2RTAwMUQ1OERFIC8qIENGTmV0d29yay5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IENGTmV0d29yay5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFt
ZXdvcmtzL0NGTmV0d29yay5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQlB
MTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFFQiAvKiBI
VE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRN
TEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUI2
MUJFNzIyNjIwMDg3QTdDQyAvKiBTZXR0aW5nc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2V0dGluZ3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0OTY1LDYgKzE0OTcxLDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAorCQkJCUExNzYzRjQxMUUyMDU4NkUwMDFENThERSAvKiBDRk5ldHdvcmsuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8sCiAJCQkJQUE1RjNCOTExNkNDNUJFQjAwNDU1RUIwIC8qIENvcmVGb3Vu
ZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJCTQxMjMwOTEzMTM4QzQyRkYw
MEJDQ0ZDQSAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJ
CQk0MTIzMDgxQjEzOEM0Mjk3MDBCQ0NGQ0EgLyogV2ViQ29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLywKQEAgLTE1NDM0LDYgKzE1NDQxLDcgQEAKIAkJMDg2N0Q2OUFGRTg0MDI4RkMwMkFB
QzA3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUExNzYzRjQwMUUyMDU4NkUwMDFENThERSAvKiBDRk5ldHdvcmsuZnJhbWV3b3Jr
ICovLAogCQkJCUZEMkRCRjBFMTJCMDQ4QTMwMEVEOThDNiAvKiBBY2NlbGVyYXRlLmZyYW1ld29y
ayAqLywKIAkJCQlGRDJEQkYwRjEyQjA0OEEzMDBFRDk4QzYgLyogQXVkaW9Ub29sYm94LmZyYW1l
d29yayAqLywKIAkJCQlBQTVGM0I5MDE2Q0M1QkVCMDA0NTVFQjAgLyogQ29yZUZvdW5kYXRpb24u
ZnJhbWV3b3JrICovLApAQCAtMTY1NzAsNiArMTY1NzgsNyBAQAogCQk0MTdEQTRDRDEzNzM0MjA0
MDA3QzU3RkIgLyogdGVzdGluZyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQTE3NjNGM0IxRTIwNTFBQjAwMUQ1OERFIC8qIGNvY29hICovLAogCQkJCTQx
ODE1QzFCMTM4MzE5NjMwMDU3QUFBNCAvKiBqcyAqLywKIAkJCQk1MTcxNEVBOTFDRjY1ODk5MDA0
NzIzQzQgLyogR0NPYnNlcnZhdGlvbi5jcHAgKi8sCiAJCQkJNTE3MTRFQUExQ0Y2NTg5OTAwNDcy
M0M0IC8qIEdDT2JzZXJ2YXRpb24uaCAqLywKQEAgLTE5Njc1LDYgKzE5Njg0LDE1IEBACiAJCQlw
YXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQTE3NjNGM0Ix
RTIwNTFBQjAwMUQ1OERFIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQlBMTc2M0YzRDFFMjA1MjM0MDAxRDU4REUgLyogV2ViQXJjaGl2ZUR1
bXBTdXBwb3J0LmggKi8sCisJCQkJQTE3NjNGM0MxRTIwNTIzNDAwMUQ1OERFIC8qIFdlYkFyY2hp
dmVEdW1wU3VwcG9ydC5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OwogCQlBNTE2RThCMjEzNkUwNEMwMDA3NkMzQzAgLyogaW9z
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTI0ODExLDYg
KzI0ODI5LDcgQEAKIAkJCQkyRDZGM0U5MTFDMUVDQjJGMDA2MURCRDQgLyogTW9ja1BhZ2VPdmVy
bGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDk3RjA0ODE5REQ0MTQwMDAxRUU5QzMgLyogTW9j
a1BhZ2VPdmVybGF5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBQTVGM0I4RDE2Q0MzM0Qx
MDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXplck1vY2suaCBpbiBIZWFkZXJzICov
LAorCQkJCUExNzYzRjNGMUUyMDUyMzQwMDFENThERSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQxODE1QzFGMTM4MzE5ODMwMDU3QUFBNCAvKiBXZWJDb3Jl
VGVzdFN1cHBvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMjg3MDAsNiArMjg3MTksNyBAQAogCQkJCTUzRTI5
RTVFMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJhdGVkLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxNzE0RUIwMUNGNjY1Q0UwMDQ3MjNDNCAvKiBKU0dDT2JzZXJ2YXRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDE3REE3MUQxMzczNURGQTAwN0M1N0ZCIC8qIEpT
SW50ZXJuYWxzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExNzYzRjNFMUUyMDUyMzQwMDFENThE
RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0gaW4gU291cmNlcyAqLywKIAkJCQlBNzQwQjVB
NzE0QzkzNUFGMDBBNzdGQTQgLyogSlNJbnRlcm5hbFNldHRpbmdzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUzRUQzRkRFMTY3QTg4RTcwMDY3NjJFNiAvKiBKU0ludGVybmFsU2V0dGluZ3NHZW5l
cmF0ZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0MEI1OTcxNEM5MzVBRjAwQTc3RkE0IC8q
IEpTTWFsbG9jU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAppbmRleCA4OTEwZjBkZjFlODZiMThiZjQ3
MWIxMGExMmFkY2U3ZTY4NmI4MjNmLi5lYjhhZDYyNGQzN2RhMTRlYzUyOGQ1ZTRmYTJmOWYxZDc0
MGQzOWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkvY2YvQ0ZOZXR3
b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2NmL0NGTmV0d29ya1NQ
SS5oCkBAIC01NSw2ICs1NSwxMyBAQCB0eXBlZGVmIENGX0VOVU0oaW50NjRfdCwgX1RpbWluZ0Rh
dGFPcHRpb25zKQogICAgIF9UaW1pbmdEYXRhT3B0aW9uc0VuYWJsZVczQ05hdmlnYXRpb25UaW1p
bmcgPSAoMSA8PCAwKQogfTsKIAorZW51bSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSB7CisgICAg
a0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCA9IDAsCisgICAga0NGVVJMQ2FjaGVTdG9yYWdlQWxs
b3dlZEluTWVtb3J5T25seSA9IDEsCisgICAga0NGVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZCA9
IDIKK307Cit0eXBlZGVmIGVudW0gQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgQ0ZVUkxDYWNoZVN0
b3JhZ2VQb2xpY3k7CisKIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9DRkNhY2hlZFVSTFJlc3BvbnNl
KiBDRkNhY2hlZFVSTFJlc3BvbnNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX0NGVVJMQ2Fj
aGUqIENGVVJMQ2FjaGVSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfQ0ZVUkxDcmVkZW50aWFs
KiBDRlVSTENyZWRlbnRpYWxSZWY7CkBAIC0xNTEsOCArMTU4LDggQEAgdm9pZCBfQ0ZDYWNoZWRV
UkxSZXNwb25zZVNldEJlY2FtZUZpbGVCYWNrZWRDYWxsQmFja0Jsb2NrKENGQ2FjaGVkVVJMUmVz
cG9uc2VSZWYKIHZvaWQgQ0ZVUkxDb25uZWN0aW9uSW52YWxpZGF0ZUNvbm5lY3Rpb25DYWNoZSgp
OwogCiBleHRlcm4gQ0ZTdHJpbmdSZWYgY29uc3Qga0NGSFRUUENvb2tpZUxvY2FsRmlsZURvbWFp
bjsKK2V4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQVmVyc2lvbjFfMTsKIGV4dGVybiBj
b25zdCBDRlN0cmluZ1JlZiBrQ0ZVUkxSZXF1ZXN0QWxsb3dBbGxQT1NUQ2FjaGluZzsKLQogZXh0
ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVydHlTaG91bGRTbmlm
ZjsKIAogQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBfQ0ZIVFRQQ29va2llU3RvcmFnZUdldERlZmF1
bHQoQ0ZBbGxvY2F0b3JSZWYpOwpAQCAtMTc0LDYgKzE4MSwxMyBAQCBDRlVSTFJlZiBDRlVSTFJl
c3BvbnNlR2V0VVJMKENGVVJMUmVzcG9uc2VSZWYpOwogdm9pZCBDRlVSTFJlc3BvbnNlU2V0TUlN
RVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiwgQ0ZTdHJpbmdSZWYpOwogQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBfQ0ZVUkxTdG9yYWdlU2Vzc2lvbkNvcHlDb29raWVTdG9yYWdlKENGQWxsb2NhdG9yUmVm
LCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmKTsKIENGQXJyYXlSZWYgX0NGSFRUUENvb2tpZVN0b3Jh
Z2VDb3B5Q29va2llc0ZvclVSTFdpdGhNYWluRG9jdW1lbnRVUkwoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBpbkNvb2tpZVN0b3JhZ2UsIENGVVJMUmVmIGluVVJMLCBDRlVSTFJlZiBpbk1haW5Eb2N1
bWVudFVSTCwgQm9vbGVhbiBzZW5kU2VjdXJlQ29va2llcyk7CitDRlN0cmluZ1JlZiBDRlVSTFJl
c3BvbnNlR2V0VGV4dEVuY29kaW5nTmFtZShDRlVSTFJlc3BvbnNlUmVmKTsKK1NJbnQ2NCBDRlVS
TFJlc3BvbnNlR2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYpOworQ0ZU
eXBlSUQgQ0ZVUkxSZXNwb25zZUdldFR5cGVJRCgpOworQ0ZVUkxSZXNwb25zZVJlZiBDRlVSTFJl
c3BvbnNlQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBDRlVSTFJlZiwgQ0ZTdHJpbmdSZWYgbWltZVR5
cGUsIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgsIENGU3RyaW5nUmVmIHRleHRFbmNvZGlu
Z05hbWUsIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5KTsKK3ZvaWQgQ0ZVUkxSZXNwb25zZVNldEV4
cGVjdGVkQ29udGVudExlbmd0aChDRlVSTFJlc3BvbnNlUmVmLCBTSW50NjQgbGVuZ3RoKTsKK0NG
VVJMUmVzcG9uc2VSZWYgQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2UoQ0ZBbGxv
Y2F0b3JSZWYsIENGVVJMUmVmLCBDRkhUVFBNZXNzYWdlUmVmLCBDRlVSTENhY2hlU3RvcmFnZVBv
bGljeSk7CisKICNlbmRpZiAvLyAhUExBVEZPUk0oV0lOKQogCiBXVEZfRVhURVJOX0NfRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3Vw
cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBv
cnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NTFjOGFiOGY0MDA3M2ZmMzI3NTQ1NzVlYzk0NDFmNWUyZTdhZTI2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNo
aXZlRHVtcFN1cHBvcnQuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIldlYkNvcmVUZXN0U3VwcG9ydC5oIgorI2luY2x1ZGUgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlVGVzdFN1
cHBvcnQgeworCitDRlN0cmluZ1JlZiBjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEo
Q0ZEYXRhUmVmIHdlYkFyY2hpdmVEYXRhKSBURVNUX1NVUFBPUlRfRVhQT1JUOworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlVGVzdFN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNhMmEzNTE5
MTJiOTJjYjhiOTJmNmE5MGQyYjczMjE5NjMwNDFkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBAIC0wLDAg
KzEsMjM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgorCisjaW1wb3J0ICJDRk5ldHdvcmtTUEkuaCIKKyNp
bXBvcnQgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbXBvcnQgPENGTmV0d29yay9DRkhUVFBNZXNz
YWdlLmg+CisjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOZXR3b3JrLmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViQ29y
ZVRlc3RTdXBwb3J0IHsKKworc3RhdGljIENGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNw
b25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKK3sKKyAgICBSZXRh
aW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVu
YXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNl
RGF0YV0pOworICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW3VuYXJjaGl2ZXIgZGVjb2Rl
T2JqZWN0Rm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3Bv
bnNlS2V5IGluIFdlYlJlc291cmNlLm0KKyAgICBbdW5hcmNoaXZlciBmaW5pc2hEZWNvZGluZ107
CisKKyAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBj
bGFzc11dKQorICAgICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoQ0ZTdHJpbmdSZWYpcmVzcG9uc2UuTUlN
RVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCwgKENGU3RyaW5nUmVmKXJlc3Bv
bnNlLnRleHRFbmNvZGluZ05hbWUsIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQpOworCisgICAg
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKXJl
c3BvbnNlOworCisgICAgLy8gTlNVUkxSZXNwb25zZSBpcyBub3QgdG9sbC1mcmVlIGJyaWRnZWQg
dG8gQ0ZVUkxSZXNwb25zZS4KKyAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJlZj4gaHR0cE1l
c3NhZ2UgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDcmVhdGVSZXNwb25zZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBodHRwUmVzcG9uc2Uuc3RhdHVzQ29kZSwgbnVsbHB0ciwga0NGSFRUUFZlcnNpb24x
XzEpKTsKKworICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gaHR0cFJlc3BvbnNlLmFs
bEhlYWRlckZpZWxkczsKKyAgICBmb3IgKE5TU3RyaW5nICpoZWFkZXJGaWVsZCBpbiBbaGVhZGVy
RmllbGRzIGtleUVudW1lcmF0b3JdKQorICAgICAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmll
bGRWYWx1ZShodHRwTWVzc2FnZS5nZXQoKSwgKENGU3RyaW5nUmVmKWhlYWRlckZpZWxkLCAoQ0ZT
dHJpbmdSZWYpW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6aGVhZGVyRmllbGRdKTsKKworICAg
IHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQoKSwga0NGVVJM
Q2FjaGVTdG9yYWdlQWxsb3dlZCk7Cit9CisKK3N0YXRpYyBDRkFycmF5UmVmIHN1cHBvcnRlZE5v
bkltYWdlTUlNRVR5cGVzKCkKK3sKKyAgICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgZm9yIChhdXRvJiBtaW1lVHlwZSA6IE1JTUVUeXBl
UmVnaXN0cnk6OmdldFN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzKCkpCisgICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6bWltZVR5cGVdOworICAgIHJldHVybiAoQ0ZBcnJheVJlZilhcnJheS5hdXRv
cmVsZWFzZSgpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0TUlNRVR5cGUoQ0ZNdXRhYmxlU3Ry
aW5nUmVmIG1pbWVUeXBlKQoreworICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxl
bS82MjM0MzE4PiB3aXRoIERhc2hjb2RlIDIuMAorICAgIGlmIChDRlN0cmluZ0NvbXBhcmUobWlt
ZVR5cGUsIENGU1RSKCJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiKSwga0NGQ29tcGFyZUFuY2hv
cmVkIHwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pCisg
ICAgICAgIENGU3RyaW5nUmVwbGFjZUFsbChtaW1lVHlwZSwgQ0ZTVFIoInRleHQvamF2YXNjcmlw
dCIpKTsKK30KKworc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlRGF0YVRvU3RyaW5nKENG
TXV0YWJsZURpY3Rpb25hcnlSZWYgcmVzb3VyY2UpCit7CisgICAgQ0ZNdXRhYmxlU3RyaW5nUmVm
IG1pbWVUeXBlID0gKENGTXV0YWJsZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNv
dXJjZSwgQ0ZTVFIoIldlYlJlc291cmNlTUlNRVR5cGUiKSk7CisgICAgQ0ZTdHJpbmdMb3dlcmNh
c2UobWltZVR5cGUsIENGTG9jYWxlR2V0U3lzdGVtKCkpOworICAgIGNvbnZlcnRNSU1FVHlwZSht
aW1lVHlwZSk7CisKKyAgICBDRkFycmF5UmVmIHN1cHBvcnRlZE1JTUVUeXBlcyA9IHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzKCk7CisgICAgaWYgKENGU3RyaW5nSGFzUHJlZml4KG1pbWVUeXBl
LCBDRlNUUigidGV4dC8iKSkgfHwgQ0ZBcnJheUNvbnRhaW5zVmFsdWUoc3VwcG9ydGVkTUlNRVR5
cGVzLCBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0Q291bnQoc3VwcG9ydGVkTUlNRVR5cGVzKSks
IG1pbWVUeXBlKSkgeworICAgICAgICBDRlN0cmluZ1JlZiB0ZXh0RW5jb2RpbmdOYW1lID0gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNU
UigiV2ViUmVzb3VyY2VUZXh0RW5jb2RpbmdOYW1lIikpKTsKKyAgICAgICAgQ0ZTdHJpbmdFbmNv
ZGluZyBzdHJpbmdFbmNvZGluZzsKKyAgICAgICAgaWYgKHRleHRFbmNvZGluZ05hbWUgJiYgQ0ZT
dHJpbmdHZXRMZW5ndGgodGV4dEVuY29kaW5nTmFtZSkpCisgICAgICAgICAgICBzdHJpbmdFbmNv
ZGluZyA9IENGU3RyaW5nQ29udmVydElBTkFDaGFyU2V0TmFtZVRvRW5jb2RpbmcodGV4dEVuY29k
aW5nTmFtZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0cmluZ0VuY29kaW5nID0ga0NG
U3RyaW5nRW5jb2RpbmdVVEY4OworCisgICAgICAgIENGRGF0YVJlZiBkYXRhID0gc3RhdGljX2Nh
c3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldlYlJl
c291cmNlRGF0YSIpKSk7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGF0YUFzU3Ry
aW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0aW9uKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGRhdGEsIHN0cmluZ0VuY29kaW5nKSk7CisgICAgICAgIGlmIChk
YXRhQXNTdHJpbmcpCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNvdXJjZSwg
Q0ZTVFIoIldlYlJlc291cmNlRGF0YSIpLCBkYXRhQXNTdHJpbmcuZ2V0KCkpOworICAgIH0KK30K
Kworc3RhdGljIHZvaWQgbm9ybWFsaXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKENGTXV0YWJs
ZURpY3Rpb25hcnlSZWYgZmllbGRzKQoreworICAgIC8vIE5vcm1hbGl6ZSBoZWFkZXJzCisgICAg
aWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIkRhdGUiKSkpCisgICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIkRhdGUiKSwgQ0ZTVFIoIlN1
biwgMTYgTm92IDIwMDggMTc6MDA6MDAgR01UIikpOworICAgIGlmIChDRkRpY3Rpb25hcnlDb250
YWluc0tleShmaWVsZHMsIENGU1RSKCJMYXN0LU1vZGlmaWVkIikpKQorICAgICAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJMYXN0LU1vZGlmaWVkIiksIENGU1RSKCJTdW4s
IDE2IE5vdiAyMDA4IDE2OjU1OjAwIEdNVCIpKTsKKyAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFp
bnNLZXkoZmllbGRzLCBDRlNUUigiRXRhZyIpKSkKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUoZmllbGRzLCBDRlNUUigiRXRhZyIpLCBDRlNUUigiXCIzMDE5MjUtMjEtNDVjN2Q3MmQzZTc4
MFwiIikpOworICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJT
ZXJ2ZXIiKSkpCisgICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIoIlNl
cnZlciIpLCBDRlNUUigiQXBhY2hlLzIuMi45IChVbml4KSBtb2Rfc3NsLzIuMi45IE9wZW5TU0wv
MC45LjdsIFBIUC81LjIuNiIpKTsKKworICAgIC8vIFJlbW92ZSBoZWFkZXJzCisgICAgQ0ZEaWN0
aW9uYXJ5UmVtb3ZlVmFsdWUoZmllbGRzLCBDRlNUUigiQ29ubmVjdGlvbiIpKTsKKyAgICBDRkRp
Y3Rpb25hcnlSZW1vdmVWYWx1ZShmaWVsZHMsIENGU1RSKCJLZWVwLUFsaXZlIikpOworfQorCitz
dGF0aWMgdm9pZCBub3JtYWxpemVXZWJSZXNvdXJjZVVSTChDRk11dGFibGVTdHJpbmdSZWYgd2Vi
UmVzb3VyY2VVUkwpCit7CisgICAgc3RhdGljIENGSW5kZXggZmlsZVVybExlbmd0aCA9IENGU3Ry
aW5nR2V0TGVuZ3RoKENGU1RSKCJmaWxlOi8vIikpOworICAgIENGUmFuZ2UgbGF5b3V0VGVzdHNX
ZWJBcmNoaXZlUGF0aFJhbmdlID0gQ0ZTdHJpbmdGaW5kKHdlYlJlc291cmNlVVJMLCBDRlNUUigi
L0xheW91dFRlc3RzLyIpLCBrQ0ZDb21wYXJlQmFja3dhcmRzKTsKKyAgICBpZiAobGF5b3V0VGVz
dHNXZWJBcmNoaXZlUGF0aFJhbmdlLmxvY2F0aW9uID09IGtDRk5vdEZvdW5kKQorICAgICAgICBy
ZXR1cm47CisgICAgQ0ZSYW5nZSBjdXJyZW50V29ya2luZ0RpcmVjdG9yeVJhbmdlID0gQ0ZSYW5n
ZU1ha2UoZmlsZVVybExlbmd0aCwgbGF5b3V0VGVzdHNXZWJBcmNoaXZlUGF0aFJhbmdlLmxvY2F0
aW9uIC0gZmlsZVVybExlbmd0aCk7CisgICAgQ0ZTdHJpbmdSZXBsYWNlKHdlYlJlc291cmNlVVJM
LCBjdXJyZW50V29ya2luZ0RpcmVjdG9yeVJhbmdlLCBDRlNUUigiIikpOworfQorCitzdGF0aWMg
dm9pZCBjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIHByb3BlcnR5TGlzdCkKK3sKKyAgICBDRkRhdGFSZWYgcmVzcG9uc2VEYXRhID0g
c3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0eUxpc3Qs
IENGU1RSKCJXZWJSZXNvdXJjZVJlc3BvbnNlIikpKTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtl
eSBpbiBXZWJSZXNvdXJjZS5tCisgICAgaWYgKENGR2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0g
Q0ZEYXRhR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFpblB0cjxDRlVS
TFJlc3BvbnNlUmVmPiByZXNwb25zZSA9IGFkb3B0Q0YoY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21S
ZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKSk7CisgICAgaWYgKCFyZXNwb25zZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHJlc3BvbnNl
RGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGlj
dGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5n
UmVmPiB1cmxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxHZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNw
b25zZS5nZXQoKSkpKSk7CisgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwodXJsU3RyaW5nLmdl
dCgpKTsKKyAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCks
IENGU1RSKCJVUkwiKSwgdXJsU3RyaW5nLmdldCgpKTsKKworICAgIFJldGFpblB0cjxDRk11dGFi
bGVTdHJpbmdSZWY+IG1pbWVUeXBlU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFi
bGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShy
ZXNwb25zZS5nZXQoKSkpKTsKKyAgICBjb252ZXJ0TUlNRVR5cGUobWltZVR5cGVTdHJpbmcuZ2V0
KCkpOworICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwg
Q0ZTVFIoIk1JTUVUeXBlIiksIG1pbWVUeXBlU3RyaW5nLmdldCgpKTsKKworICAgIENGU3RyaW5n
UmVmIHRleHRFbmNvZGluZ05hbWUgPSBDRlVSTFJlc3BvbnNlR2V0VGV4dEVuY29kaW5nTmFtZShy
ZXNwb25zZS5nZXQoKSk7CisgICAgaWYgKHRleHRFbmNvZGluZ05hbWUpCisgICAgICAgIENGRGlj
dGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInRleHRFbmNv
ZGluZ05hbWUiKSwgdGV4dEVuY29kaW5nTmFtZSk7CisKKyAgICBTSW50NjQgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoID0gQ0ZVUkxSZXNwb25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChyZXNwb25z
ZS5nZXQoKSk7CisgICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBleHBlY3RlZENvbnRlbnRMZW5n
dGhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlclNJbnQ2NFR5cGUsICZleHBlY3RlZENvbnRlbnRMZW5ndGgpKTsKKyAgICBDRkRpY3Rp
b25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBlY3RlZENv
bnRlbnRMZW5ndGgiKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyLmdldCgpKTsKKworICAg
IGlmIChDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBS
ZXNwb25zZShyZXNwb25zZS5nZXQoKSkpIHsKKyAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gYWxsSGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVs
ZHMoaHR0cE1lc3NhZ2UpKTsKKyAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlS
ZWY+IGFsbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYWxsSGVhZGVycy5nZXQoKSkpOworICAgICAgICBu
b3JtYWxpemVIVFRQUmVzcG9uc2VIZWFkZXJGaWVsZHMoYWxsSGVhZGVyRmllbGRzLmdldCgpKTsK
KyAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBD
RlNUUigiYWxsSGVhZGVyRmllbGRzIiksIGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7CisKKyAgICAg
ICAgQ0ZJbmRleCBzdGF0dXNDb2RlID0gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29k
ZShodHRwTWVzc2FnZSk7CisgICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gc3RhdHVzQ29k
ZU51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVyQ0ZJbmRleFR5cGUsICZzdGF0dXNDb2RlKSk7CisgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInN0YXR1c0NvZGUiKSwgc3Rh
dHVzQ29kZU51bWJlci5nZXQoKSk7CisgICAgfQorCisgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUo
cHJvcGVydHlMaXN0LCBDRlNUUigiV2ViUmVzb3VyY2VSZXNwb25zZSIpLCByZXNwb25zZURpY3Rp
b25hcnkuZ2V0KCkpOworfQorCitzdGF0aWMgQ0ZDb21wYXJpc29uUmVzdWx0IGNvbXBhcmVSZXNv
dXJjZVVSTHMoY29uc3Qgdm9pZCAqdmFsMSwgY29uc3Qgdm9pZCAqdmFsMiwgdm9pZCAqKQorewor
ICAgIENGU3RyaW5nUmVmIHVybDEgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPih2YWwxKSwgQ0ZTVFIoIldl
YlJlc291cmNlVVJMIikpKTsKKyAgICBDRlN0cmluZ1JlZiB1cmwyID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4odmFsMiksIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7CisKKyAgICByZXR1cm4gQ0ZTdHJp
bmdDb21wYXJlKHVybDEsIHVybDIsIGtDRkNvbXBhcmVBbmNob3JlZCk7Cit9CisKK0NGU3RyaW5n
UmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2
ZURhdGEpCit7CisgICAgQ0ZFcnJvclJlZiBlcnJvciA9IDA7CisgICAgQ0ZQcm9wZXJ0eUxpc3RG
b3JtYXQgZm9ybWF0ID0ga0NGUHJvcGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzA7CisgICAgUmV0
YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHByb3BlcnR5TGlzdCA9IGFkb3B0Q0YoKENG
TXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCB3ZWJBcmNoaXZlRGF0YSwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRh
aW5lcnNBbmRMZWF2ZXMsICZmb3JtYXQsICZlcnJvcikpOworCisgICAgaWYgKCFwcm9wZXJ0eUxp
c3QpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5
RGVzY3JpcHRpb24oZXJyb3IpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdS
ZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcg
ZGF0YSB0byBwcm9wZXJ0eSBsaXN0LiIpKSk7CisgICAgfQorCisgICAgUmV0YWluUHRyPENGTXV0
YWJsZUFycmF5UmVmPiByZXNvdXJjZXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKyAgICBDRkFy
cmF5QXBwZW5kVmFsdWUocmVzb3VyY2VzLmdldCgpLCBwcm9wZXJ0eUxpc3QuZ2V0KCkpOworCisg
ICAgd2hpbGUgKENGQXJyYXlHZXRDb3VudChyZXNvdXJjZXMuZ2V0KCkpKSB7CisgICAgICAgIFJl
dGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNvdXJjZVByb3BlcnR5TGlzdCA9IChD
Rk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb3VyY2VzLmdl
dCgpLCAwKTsKKyAgICAgICAgQ0ZBcnJheVJlbW92ZVZhbHVlQXRJbmRleChyZXNvdXJjZXMuZ2V0
KCksIDApOworCisgICAgICAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlID0g
KENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9w
ZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJNYWluUmVzb3VyY2UiKSk7CisgICAgICAgIG5vcm1h
bGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUobWFpblJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VVUkwiKSkpOworICAgICAgICBjb252
ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcobWFpblJlc291cmNlKTsKKworICAgICAgICAvLyBB
ZGQgc3ViZnJhbWVBcmNoaXZlcyB0byBsaXN0IGZvciBwcm9jZXNzaW5nCisgICAgICAgIENGTXV0
YWJsZUFycmF5UmVmIHN1YmZyYW1lQXJjaGl2ZXMgPSAoQ0ZNdXRhYmxlQXJyYXlSZWYpQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJTdWJm
cmFtZUFyY2hpdmVzIikpOyAvLyBXZWJTdWJmcmFtZUFyY2hpdmVzS2V5IGluIFdlYkFyY2hpdmUu
bQorICAgICAgICBpZiAoc3ViZnJhbWVBcmNoaXZlcykKKyAgICAgICAgICAgIENGQXJyYXlBcHBl
bmRBcnJheShyZXNvdXJjZXMuZ2V0KCksIHN1YmZyYW1lQXJjaGl2ZXMsIENGUmFuZ2VNYWtlKDAs
IENGQXJyYXlHZXRDb3VudChzdWJmcmFtZUFyY2hpdmVzKSkpOworCisgICAgICAgIENGTXV0YWJs
ZUFycmF5UmVmIHN1YnJlc291cmNlcyA9IChDRk11dGFibGVBcnJheVJlZilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYlN1YnJlc291cmNl
cyIpKTsgLy8gV2ViU3VicmVzb3VyY2VzS2V5IGluIFdlYkFyY2hpdmUubQorICAgICAgICBpZiAo
IXN1YnJlc291cmNlcykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIENGSW5kZXgg
c3VicmVzb3VyY2VzQ291bnQgPSBDRkFycmF5R2V0Q291bnQoc3VicmVzb3VyY2VzKTsKKyAgICAg
ICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgc3VicmVzb3VyY2VzQ291bnQ7ICsraSkgeworICAg
ICAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCA9
IChDRk11dGFibGVEaWN0aW9uYXJ5UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VicmVzb3Vy
Y2VzLCBpKTsKKyAgICAgICAgICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFibGVT
dHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QsIENG
U1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7CisgICAgICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VS
ZXNwb25zZVRvRGljdGlvbmFyeShzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCk7CisgICAgICAgICAg
ICBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3Qp
OworICAgICAgICB9CisKKyAgICAgICAgLy8gU29ydCB0aGUgc3VicmVzb3VyY2VzIHNvIHRoZXkn
cmUgYWx3YXlzIGluIGEgcHJlZGljdGFibGUgb3JkZXIgZm9yIHRoZSBkdW1wCisgICAgICAgIENG
QXJyYXlTb3J0VmFsdWVzKHN1YnJlc291cmNlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENv
dW50KHN1YnJlc291cmNlcykpLCBjb21wYXJlUmVzb3VyY2VVUkxzLCAwKTsKKyAgICB9CisKKyAg
ICBlcnJvciA9IDA7CisKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiB4bWxEYXRhID0gYWRvcHRD
RihDRlByb3BlcnR5TGlzdENyZWF0ZURhdGEoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcHJvcGVydHlM
aXN0LmdldCgpLCBrQ0ZQcm9wZXJ0eUxpc3RYTUxGb3JtYXRfdjFfMCwgMCwgJmVycm9yKSk7CisK
KyAgICBpZiAoIXhtbERhdGEpIHsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOworICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJBbiB1bmtub3duIGVycm9yIG9jY3Vy
cmVkIGNvbnZlcnRpbmcgcHJvcGVydHkgbGlzdCB0byBkYXRhLiIpKSk7CisgICAgfQorCisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB4bWxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
RnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgeG1sRGF0YS5n
ZXQoKSwga0NGU3RyaW5nRW5jb2RpbmdVVEY4KSk7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZVN0
cmluZ1JlZj4gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIHhtbFN0cmluZy5nZXQoKSkpOworCisgICAgLy8gUmVwbGFjZSAi
QXBwbGUgQ29tcHV0ZXIiIHdpdGggIkFwcGxlIiBpbiB0aGUgRFREIGRlY2xhcmF0aW9uLgorICAg
IENGU3RyaW5nRmluZEFuZFJlcGxhY2Uoc3RyaW5nLmdldCgpLCBDRlNUUigiLS8vQXBwbGUgQ29t
cHV0ZXIvLyIpLCBDRlNUUigiLS8vQXBwbGUvLyIpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dl
dExlbmd0aChzdHJpbmcuZ2V0KCkpKSwgMCk7CisgICAgCisgICAgcmV0dXJuIHN0cmluZy5sZWFr
UmVmKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmVUZXN0U3VwcG9ydApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDJhZWNhZTFjODkxNDBj
NDFmNmVhMTEzYmE3ZGU1MGZlYTcwNTRmM2UuLmQ5ZTc5OTI2ZmNjYjQ1YmFiMzI0YjBkMzRmOTk4
NWY4ZDliZTQxN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wMS0wNiAgQW5keSBFc3RlcyAgPGFlc3Rlc0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBDb25zb2xpZGF0ZSBkdXBsaWNhdGUgY29waWVz
IG9mIFdlYkFyY2hpdmVEdW1wU3VwcG9ydCBpbiBEUlQgYW5kIFdLVFIgaW50byBXZWJDb3JlVGVz
dFN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2Njc4OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA6IFJlbW92ZWQu
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg6IFJl
bW92ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgor
ICAgICAgICBDYWxsZWQgV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2Vi
QXJjaGl2ZURhdGEoKSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJB
cmNoaXZlRGF0YSgpLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9XZWJBcmNoaXZlRHVt
cFN1cHBvcnRNYWMubW06IFJlbW92ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgorICAgICAgICBBZGRlZCAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvV2ViQ29yZVRlc3RTdXBwb3J0IHRvIEhFQURFUl9TRUFSQ0hfUEFUSFMuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
OgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFyY2hpdmUp
OgorICAgICAgICBDYWxsZWQgV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9t
V2ViQXJjaGl2ZURhdGEoKSBpbnN0ZWFkIG9mCisgICAgICAgIGNyZWF0ZVhNTFN0cmluZ0Zyb21X
ZWJBcmNoaXZlRGF0YSgpLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW06IFJlbW92ZWQuCisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybU1hYy5jbWFrZToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOiBSZW1v
dmVkLgorCiAyMDE3LTAxLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQ29jb2FdIFRlYWNoIFNoYXJlZEJ1ZmZlciB0byByZXR1cm4gYW4gTlNBcnJheSBvZiBk
YXRhIHNlZ21lbnRzIHRvIGF2b2lkIGZsYXR0ZW5pbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGVjMzdmNGQ1M2I4Njg4MjUwZjNmMDI3MDU0MDk3OTQ2NTE1NzFlMDIuLmQ2OGRkMzU0
MDhmZDdlNjUxODRiOGY1ODYxMTkzY2VjZmU1Mzk3NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtODAsOCArODAsNiBAQAogCQkyRDQwM0YxQjE1MDg3MjA5MDA1MzU4RDIgLyogTGF5
b3V0VGVzdEhlbHBlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkQ0MDNFQTIxNTA4NzE0MjAwNTM1OEQyIC8qIExheW91dFRlc3RIZWxwZXIubSAqLzsg
fTsKIAkJMkRBMkUzQTUxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVj
a2VyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRB
MkUzQTQxRTFCQTU0MTAwQTNCQkQwIC8qIER1bXBSZW5kZXJUcmVlU3BlbGxDaGVja2VyLm1tICov
OyB9OwogCQkzMTExN0IzRDE1RDlBNTZBMDAxNjNCQzggLyogTW9ja1dlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzExMTdCM0IxNUQ5QTU2QTAwMTYzQkM4IC8qIE1vY2tXZWJOb3RpZmljYXRpb25Qcm92aWRlci5t
bSAqLzsgfTsKLQkJNDQwNTkwNzExMjY4NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3Vw
cG9ydE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0MDU5MDcwMTI2ODQ1MzgwMENGRDQ4RCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRNYWMubW0g
Ki87IH07Ci0JCTQ0Mzc3MzBFMTI1Q0JDMzYwMEFBRTAyQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBv
cnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRB
OTk3ODMwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi87IH07
CiAJCTQ0NjRDQUJFMUMyMEEwOEIwMEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NDY0Q0FCRDFD
MjBBMDcwMDBFNUJCNTUgLyogRHVtcFJlbmRlclRyZWVBcHBNYWluLm1tICovOyB9OwogCQk0QUQ2
QTExNDEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDZBMTEzMTNDODEyNDAwMEVBOTczNyAvKiBG
b3JtVmFsdWUuY3BwICovOyB9OwogCQk1MTA2ODAzRTE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05Q
UE5ldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTA2ODAzRDE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgKi87IH07CkBAIC0zMDcs
MTAgKzMwNSw3IEBACiAJCTM3NUYwOTc4MERBQzNDQjYwMEM4QjRFNSAvKiBXZWJLaXRXZWlnaHRX
YXRjaGVyODAwLnR0ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZpbGU7IG5hbWUgPSBXZWJLaXRXZWlnaHRXYXRjaGVyODAwLnR0ZjsgcGF0aCA9IGZv
bnRzL1dlYktpdFdlaWdodFdhdGNoZXI4MDAudHRmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzNzVGMDk3OTBEQUMzQ0I2MDBDOEI0RTUgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50
dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjkwMC50dGY7IHBhdGggPSBmb250cy9XZWJLaXRX
ZWlnaHRXYXRjaGVyOTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE3REFB
MUMxMzdCM0UyNDAwN0M1N0ZCIC8qIFdlYkNvcmVUZXN0U3VwcG9ydC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJDb3JlVGVzdFN1cHBvcnQuaDsgcGF0aCA9IFdlYkNvcmVU
ZXN0U3VwcG9ydC9XZWJDb3JlVGVzdFN1cHBvcnQuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKLQkJNDQwNTkwNzAxMjY4NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1w
U3VwcG9ydE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdl
YkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbTsgcGF0aCA9IG1hYy9XZWJBcmNoaXZlRHVtcFN1cHBv
cnRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ0NjRDQUJEMUMyMEEwNzAw
MEU1QkI1NSAvKiBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IG5hbWUgPSBEdW1wUmVuZGVyVHJlZUFwcE1haW4ubW07IHBhdGggPSBpb3Mv
RHVtcFJlbmRlclRyZWVBcHBNYWluLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0
NEE5OTc4MjBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOyBwYXRo
ID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTQ0QTk5NzgzMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0LmNwcDsgcGF0aCA9IGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTRBRDZBMTEzMTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybVZhbHVlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEwNjgwM0QxNUNDN0IxMDAwMUE4QTIzIC8q
IFNsb3dOUFBOZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU2xv
d05QUE5ldy5jcHA7IHBhdGggPSBUZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvU2xvd05QUE5ldy5j
cHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJNTExMzRDOTgxNjAxNEZEQjAwMUFB
NTEzIC8qIEludm9rZURlc3Ryb3lzUGx1Z2luV2l0aGluTlBQX05ldy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnZva2VEZXN0cm95c1BsdWdpbldpdGhpbk5QUF9O
ZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDk5LDkgKzQ5NCw2IEBACiAJ
CQkJQThENzlDRTgwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJUcmVlRmlsZURyYWdnaW5n
U291cmNlLmggKi8sCiAJCQkJQThENzlDRTkwRkMyOEIyQzAwNEFDOEZFIC8qIER1bXBSZW5kZXJU
cmVlRmlsZURyYWdnaW5nU291cmNlLm0gKi8sCiAJCQkJMkNFODhGQTExNzEyNENFRTAwNzM0RkMw
IC8qIEphdmFTY3JpcHRUaHJlYWRpbmcuY3BwICovLAotCQkJCTQ0QTk5NzgyMEZDREU4NjQwMDU4
MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAqLywKLQkJCQk0NEE5OTc4MzBGQ0RFODY0
MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLywKLQkJCQk0NDA1OTA3MDEy
Njg0NTM4MDBDRkQ0OEQgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tICovLAogCQkJCUJD
OUQ5MDIxMEM5NzQ3MkQwMDk5QTRBMyAvKiBXb3JrUXVldWUuY3BwICovLAogCQkJCUJDOUQ5MDIy
MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUuaCAqLywKIAkJCQlCQzlEOTAyMzBDOTc0NzJF
MDA5OUE0QTMgLyogV29ya1F1ZXVlSXRlbS5oICovLApAQCAtMTE1Miw4ICsxMTQ0LDYgQEAKIAkJ
CQkwRjE4RTcwRDFENkJBQzhDMDAyN0U1NDcgLyogVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NCQkMzMjMxRERGQ0Y5QTAwNzg2QjlEIC8qIFRlc3RPcHRpb25z
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxOEU3MEYxRDZCQUNCNjAwMjdFNTQ3IC8qIFVJU2Ny
aXB0Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTQ0Mzc3MzBFMTI1Q0JDMzYw
MEFBRTAyQyAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJ
NDQwNTkwNzExMjY4NDUzODAwQ0ZENDhEIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDOUQ5MDI0MEM5NzQ3MkUwMDk5QTRBMyAvKiBXb3JrUXVldWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNBMThCMjYwQzlCMDE1QzAwMTE0MzY5IC8qIFdvcmtR
dWV1ZUl0ZW1NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Bs
YXRmb3JtTWFjLmNtYWtlCmluZGV4IGRiYWZmMGUwNjBkMWEzOWMwNmQxODJmOTMwYjA2OTc0NWE3
ZWE3N2UuLmQ1YmNlYjQ4YWY0YzRjZTk5YzQ0YjQzNDFkMzQ2YWI1YzM0NmE1MmQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC04MSw4ICs4MSw2IEBAIGxpc3QoQVBQ
RU5EIER1bXBSZW5kZXJUcmVlX09iakNfU09VUkNFUwogKQogCiBsaXN0KEFQUEVORCBEdW1wUmVu
ZGVyVHJlZV9DcHBfU09VUkNFUwotICAgIGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKLQog
ICAgIGNnL1BpeGVsRHVtcFN1cHBvcnRDRy5jcHAKICkKIApAQCAtMTEyLDcgKzExMCw2IEBAIGxp
c3QoQVBQRU5EIER1bXBSZW5kZXJUcmVlX09iakNwcF9TT1VSQ0VTCiAgICAgbWFjL1Rlc3RSdW5u
ZXJNYWMubW0KICAgICBtYWMvVUlEZWxlZ2F0ZS5tbQogICAgIG1hYy9VSVNjcmlwdENvbnRyb2xs
ZXJNYWMubW0KLSAgICBtYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1tCiAgICAgbWFjL1dv
cmtRdWV1ZUl0ZW1NYWMubW0KICkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NmL1dl
YkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQz
OTM2ZDY1ZDRhMGU2OGJjNDI4MjM0ODIzYzI3ODkzZGNhYzE2NjEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2YvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJX
ZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCIKLQotI2luY2x1ZGUgPENGTmV0d29yay9DRk5ldHdvcmsu
aD4KLSNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KLQotZXh0ZXJuICJDIiB7Ci0KLUNGVVJMUmVmIENGVVJMUmVzcG9u
c2VHZXRVUkwoQ0ZVUkxSZXNwb25zZVJlZik7Ci1DRlN0cmluZ1JlZiBDRlVSTFJlc3BvbnNlR2V0
TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZik7Ci1DRlN0cmluZ1JlZiBDRlVSTFJlc3BvbnNlR2V0
VGV4dEVuY29kaW5nTmFtZShDRlVSTFJlc3BvbnNlUmVmKTsKLVNJbnQ2NCBDRlVSTFJlc3BvbnNl
R2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYpOwotQ0ZIVFRQTWVzc2Fn
ZVJlZiBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKENGVVJMUmVzcG9uc2VSZWYpOwotCi1D
RlR5cGVJRCBDRlVSTFJlc3BvbnNlR2V0VHlwZUlEKHZvaWQpOwotCi19Ci0KLXN0YXRpYyB2b2lk
IGNvbnZlcnRNSU1FVHlwZShDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUpCi17Ci0gICAgLy8g
V29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYyMzQzMTg+IHdpdGggRGFzaGNvZGUgMi4w
Ci0gICAgaWYgKENGU3RyaW5nQ29tcGFyZShtaW1lVHlwZSwgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
amF2YXNjcmlwdCIpLCBrQ0ZDb21wYXJlQW5jaG9yZWQgfCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0
aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgQ0ZTdHJpbmdSZXBsYWNlQWxsKG1p
bWVUeXBlLCBDRlNUUigidGV4dC9qYXZhc2NyaXB0IikpOwotfQotCi1zdGF0aWMgdm9pZCBjb252
ZXJ0V2ViUmVzb3VyY2VEYXRhVG9TdHJpbmcoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiByZXNvdXJj
ZSkKLXsKLSAgICBDRk11dGFibGVTdHJpbmdSZWYgbWltZVR5cGUgPSAoQ0ZNdXRhYmxlU3RyaW5n
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VNSU1F
VHlwZSIpKTsKLSAgICBDRlN0cmluZ0xvd2VyY2FzZShtaW1lVHlwZSwgQ0ZMb2NhbGVHZXRTeXN0
ZW0oKSk7Ci0gICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlKTsKLQotICAgIENGQXJyYXlSZWYg
c3VwcG9ydGVkTUlNRVR5cGVzID0gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKLSAgICBp
ZiAoQ0ZTdHJpbmdIYXNQcmVmaXgobWltZVR5cGUsIENGU1RSKCJ0ZXh0LyIpKSB8fCBDRkFycmF5
Q29udGFpbnNWYWx1ZShzdXBwb3J0ZWRNSU1FVHlwZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlH
ZXRDb3VudChzdXBwb3J0ZWRNSU1FVHlwZXMpKSwgbWltZVR5cGUpKSB7Ci0gICAgICAgIENGU3Ry
aW5nUmVmIHRleHRFbmNvZGluZ05hbWUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZVRleHRFbmNvZGluZ05h
bWUiKSkpOwotICAgICAgICBDRlN0cmluZ0VuY29kaW5nIHN0cmluZ0VuY29kaW5nOwotICAgICAg
ICBpZiAodGV4dEVuY29kaW5nTmFtZSAmJiBDRlN0cmluZ0dldExlbmd0aCh0ZXh0RW5jb2RpbmdO
YW1lKSkKLSAgICAgICAgICAgIHN0cmluZ0VuY29kaW5nID0gQ0ZTdHJpbmdDb252ZXJ0SUFOQUNo
YXJTZXROYW1lVG9FbmNvZGluZyh0ZXh0RW5jb2RpbmdOYW1lKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgc3RyaW5nRW5jb2RpbmcgPSBrQ0ZTdHJpbmdFbmNvZGluZ1VURjg7Ci0KLSAgICAg
ICAgQ0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VEYXRhIikpKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBkYXRhQXNTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRl
RnJvbUV4dGVybmFsUmVwcmVzZW50YXRpb24oa0NGQWxsb2NhdG9yRGVmYXVsdCwgZGF0YSwgc3Ry
aW5nRW5jb2RpbmcpKTsKLSAgICAgICAgaWYgKGRhdGFBc1N0cmluZykKLSAgICAgICAgICAgIENG
RGljdGlvbmFyeVNldFZhbHVlKHJlc291cmNlLCBDRlNUUigiV2ViUmVzb3VyY2VEYXRhIiksIGRh
dGFBc1N0cmluZy5nZXQoKSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBub3JtYWxpemVIVFRQ
UmVzcG9uc2VIZWFkZXJGaWVsZHMoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBmaWVsZHMpCi17Ci0g
ICAgLy8gTm9ybWFsaXplIGhlYWRlcnMKLSAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXko
ZmllbGRzLCBDRlNUUigiRGF0ZSIpKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUoZmll
bGRzLCBDRlNUUigiRGF0ZSIpLCBDRlNUUigiU3VuLCAxNiBOb3YgMjAwOCAxNzowMDowMCBHTVQi
KSk7Ci0gICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIkxhc3Qt
TW9kaWZpZWQiKSkpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZpZWxkcywgQ0ZTVFIo
Ikxhc3QtTW9kaWZpZWQiKSwgQ0ZTVFIoIlN1biwgMTYgTm92IDIwMDggMTY6NTU6MDAgR01UIikp
OwotICAgIGlmIChDRkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJFdGFnIikp
KQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJFdGFnIiksIENG
U1RSKCJcIjMwMTkyNS0yMS00NWM3ZDcyZDNlNzgwXCIiKSk7Ci0gICAgaWYgKENGRGljdGlvbmFy
eUNvbnRhaW5zS2V5KGZpZWxkcywgQ0ZTVFIoIlNlcnZlciIpKSkKLSAgICAgICAgQ0ZEaWN0aW9u
YXJ5U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiU2VydmVyIiksIENGU1RSKCJBcGFjaGUvMi4yLjkg
KFVuaXgpIG1vZF9zc2wvMi4yLjkgT3BlblNTTC8wLjkuN2wgUEhQLzUuMi42IikpOwotCi0gICAg
Ly8gUmVtb3ZlIGhlYWRlcnMKLSAgICBDRkRpY3Rpb25hcnlSZW1vdmVWYWx1ZShmaWVsZHMsIENG
U1RSKCJDb25uZWN0aW9uIikpOwotICAgIENGRGljdGlvbmFyeVJlbW92ZVZhbHVlKGZpZWxkcywg
Q0ZTVFIoIktlZXAtQWxpdmUiKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIG5vcm1hbGl6ZVdlYlJlc291
cmNlVVJMKENGTXV0YWJsZVN0cmluZ1JlZiB3ZWJSZXNvdXJjZVVSTCkKLXsKLSAgICBzdGF0aWMg
Q0ZJbmRleCBmaWxlVXJsTGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoQ0ZTVFIoImZpbGU6Ly8i
KSk7Ci0gICAgQ0ZSYW5nZSBsYXlvdXRUZXN0c1dlYkFyY2hpdmVQYXRoUmFuZ2UgPSBDRlN0cmlu
Z0ZpbmQod2ViUmVzb3VyY2VVUkwsIENGU1RSKCIvTGF5b3V0VGVzdHMvIiksIGtDRkNvbXBhcmVC
YWNrd2FyZHMpOwotICAgIGlmIChsYXlvdXRUZXN0c1dlYkFyY2hpdmVQYXRoUmFuZ2UubG9jYXRp
b24gPT0ga0NGTm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLSAgICBDRlJhbmdlIGN1cnJlbnRX
b3JraW5nRGlyZWN0b3J5UmFuZ2UgPSBDRlJhbmdlTWFrZShmaWxlVXJsTGVuZ3RoLCBsYXlvdXRU
ZXN0c1dlYkFyY2hpdmVQYXRoUmFuZ2UubG9jYXRpb24gLSBmaWxlVXJsTGVuZ3RoKTsKLSAgICBD
RlN0cmluZ1JlcGxhY2Uod2ViUmVzb3VyY2VVUkwsIGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5UmFu
Z2UsIENGU1RSKCIiKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZVJlc3Bv
bnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJvcGVydHlMaXN0KQotewot
ICAgIENGRGF0YVJlZiByZXNwb25zZURhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJlc291cmNlUmVzcG9uc2Ui
KSkpOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291cmNlLm0KLSAgICBpZiAo
Q0ZHZXRUeXBlSUQocmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRUeXBlSUQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUmV0YWluUHRyPENGVVJMUmVzcG9uc2VSZWY+IHJlc3BvbnNlID0gYWRv
cHRDRihjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpKTsK
LSAgICBpZiAoIXJlc3BvbnNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlRGljdGlvbmFyeVJlZj4gcmVzcG9uc2VEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlv
bmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKLQot
ICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHVybFN0cmluZyA9IGFkb3B0Q0YoQ0ZT
dHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0
cmluZyhDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNlLmdldCgpKSkpKTsKLSAgICBub3JtYWxp
emVXZWJSZXNvdXJjZVVSTCh1cmxTdHJpbmcuZ2V0KCkpOwotICAgIENGRGljdGlvbmFyeVNldFZh
bHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIlVSTCIpLCB1cmxTdHJpbmcuZ2V0
KCkpOwotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gbWltZVR5cGVTdHJpbmcg
PSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
MCwgQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkpOwotICAgIGNvbnZl
cnRNSU1FVHlwZShtaW1lVHlwZVN0cmluZy5nZXQoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFs
dWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiTUlNRVR5cGUiKSwgbWltZVR5cGVT
dHJpbmcuZ2V0KCkpOwotCi0gICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IENGVVJM
UmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKHJlc3BvbnNlLmdldCgpKTsKLSAgICBpZiAodGV4
dEVuY29kaW5nTmFtZSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0
aW9uYXJ5LmdldCgpLCBDRlNUUigidGV4dEVuY29kaW5nTmFtZSIpLCB0ZXh0RW5jb2RpbmdOYW1l
KTsKLQotICAgIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBDRlVSTFJlc3BvbnNlR2V0
RXhwZWN0ZWRDb250ZW50TGVuZ3RoKHJlc3BvbnNlLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZO
dW1iZXJSZWY+IGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmV4cGVjdGVk
Q29udGVudExlbmd0aCkpOwotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlv
bmFyeS5nZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBleHBlY3RlZENvbnRl
bnRMZW5ndGhOdW1iZXIuZ2V0KCkpOwotCi0gICAgaWYgKENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1l
c3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKSkgewot
ICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJzID0gYWRvcHRDRihD
RkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhodHRwTWVzc2FnZSkpOwotICAgICAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVyRmllbGRzID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBh
bGxIZWFkZXJzLmdldCgpKSk7Ci0gICAgICAgIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZp
ZWxkcyhhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhbGxIZWFkZXJGaWVsZHMiKSwgYWxs
SGVhZGVyRmllbGRzLmdldCgpKTsKLQotICAgICAgICBDRkluZGV4IHN0YXR1c0NvZGUgPSBDRkhU
VFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKTsKLSAgICAgICAgUmV0
YWluUHRyPENGTnVtYmVyUmVmPiBzdGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1c0Nv
ZGUpKTsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5Lmdl
dCgpLCBDRlNUUigic3RhdHVzQ29kZSIpLCBzdGF0dXNDb2RlTnVtYmVyLmdldCgpKTsKLSAgICB9
Ci0KLSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNv
dXJjZVJlc3BvbnNlIiksIHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSk7Ci19Ci0KLXN0YXRpYyBD
RkNvbXBhcmlzb25SZXN1bHQgY29tcGFyZVJlc291cmNlVVJMcyhjb25zdCB2b2lkICp2YWwxLCBj
b25zdCB2b2lkICp2YWwyLCB2b2lkICpjb250ZXh0KQotewotICAgIENGU3RyaW5nUmVmIHVybDEg
PSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nh
c3Q8Q0ZEaWN0aW9uYXJ5UmVmPih2YWwxKSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKLSAg
ICBDRlN0cmluZ1JlZiB1cmwyID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJlZj4odmFsMiksIENGU1RSKCJXZWJS
ZXNvdXJjZVVSTCIpKSk7Ci0KLSAgICByZXR1cm4gQ0ZTdHJpbmdDb21wYXJlKHVybDEsIHVybDIs
IGtDRkNvbXBhcmVBbmNob3JlZCk7Ci19Ci0KLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zy
b21XZWJBcmNoaXZlRGF0YShDRkRhdGFSZWYgd2ViQXJjaGl2ZURhdGEpCi17Ci0gICAgQ0ZFcnJv
clJlZiBlcnJvciA9IDA7Ci0gICAgQ0ZQcm9wZXJ0eUxpc3RGb3JtYXQgZm9ybWF0ID0ga0NGUHJv
cGVydHlMaXN0QmluYXJ5Rm9ybWF0X3YxXzA7Ci0gICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IHByb3BlcnR5TGlzdCA9IGFkb3B0Q0YoKENGTXV0YWJsZURpY3Rpb25hcnlSZWYp
Q0ZQcm9wZXJ0eUxpc3RDcmVhdGVXaXRoRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB3ZWJBcmNo
aXZlRGF0YSwga0NGUHJvcGVydHlMaXN0TXV0YWJsZUNvbnRhaW5lcnNBbmRMZWF2ZXMsICZmb3Jt
YXQsICZlcnJvcikpOwotCi0gICAgaWYgKCFwcm9wZXJ0eUxpc3QpIHsKLSAgICAgICAgaWYgKGVy
cm9yKQotICAgICAgICAgICAgcmV0dXJuIENGRXJyb3JDb3B5RGVzY3JpcHRpb24oZXJyb3IpOwot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGUmV0YWluKENGU1RSKCJB
biB1bmtub3duIGVycm9yIG9jY3VycmVkIGNvbnZlcnRpbmcgZGF0YSB0byBwcm9wZXJ0eSBsaXN0
LiIpKSk7Ci0gICAgfQotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiByZXNvdXJj
ZXMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
ICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKLSAgICBDRkFycmF5QXBwZW5kVmFsdWUocmVzb3Vy
Y2VzLmdldCgpLCBwcm9wZXJ0eUxpc3QuZ2V0KCkpOwotCi0gICAgd2hpbGUgKENGQXJyYXlHZXRD
b3VudChyZXNvdXJjZXMuZ2V0KCkpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPiByZXNvdXJjZVByb3BlcnR5TGlzdCA9IChDRk11dGFibGVEaWN0aW9uYXJ5UmVm
KUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocmVzb3VyY2VzLmdldCgpLCAwKTsKLSAgICAgICAgQ0ZB
cnJheVJlbW92ZVZhbHVlQXRJbmRleChyZXNvdXJjZXMuZ2V0KCksIDApOwotCi0gICAgICAgIENG
TXV0YWJsZURpY3Rpb25hcnlSZWYgbWFpblJlc291cmNlID0gKENGTXV0YWJsZURpY3Rpb25hcnlS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RS
KCJXZWJNYWluUmVzb3VyY2UiKSk7Ci0gICAgICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKChD
Rk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobWFpblJlc291cmNlLCBDRlNU
UigiV2ViUmVzb3VyY2VVUkwiKSkpOwotICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VEYXRhVG9T
dHJpbmcobWFpblJlc291cmNlKTsKLQotICAgICAgICAvLyBBZGQgc3ViZnJhbWVBcmNoaXZlcyB0
byBsaXN0IGZvciBwcm9jZXNzaW5nCi0gICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHN1YmZyYW1l
QXJjaGl2ZXMgPSAoQ0ZNdXRhYmxlQXJyYXlSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3Vy
Y2VQcm9wZXJ0eUxpc3QuZ2V0KCksIENGU1RSKCJXZWJTdWJmcmFtZUFyY2hpdmVzIikpOyAvLyBX
ZWJTdWJmcmFtZUFyY2hpdmVzS2V5IGluIFdlYkFyY2hpdmUubQotICAgICAgICBpZiAoc3ViZnJh
bWVBcmNoaXZlcykKLSAgICAgICAgICAgIENGQXJyYXlBcHBlbmRBcnJheShyZXNvdXJjZXMuZ2V0
KCksIHN1YmZyYW1lQXJjaGl2ZXMsIENGUmFuZ2VNYWtlKDAsIENGQXJyYXlHZXRDb3VudChzdWJm
cmFtZUFyY2hpdmVzKSkpOwotCi0gICAgICAgIENGTXV0YWJsZUFycmF5UmVmIHN1YnJlc291cmNl
cyA9IChDRk11dGFibGVBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVByb3Bl
cnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYlN1YnJlc291cmNlcyIpKTsgLy8gV2ViU3VicmVzb3Vy
Y2VzS2V5IGluIFdlYkFyY2hpdmUubQotICAgICAgICBpZiAoIXN1YnJlc291cmNlcykKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIENGSW5kZXggc3VicmVzb3VyY2VzQ291bnQgPSBD
RkFycmF5R2V0Q291bnQoc3VicmVzb3VyY2VzKTsKLSAgICAgICAgZm9yIChDRkluZGV4IGkgPSAw
OyBpIDwgc3VicmVzb3VyY2VzQ291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZNdXRhYmxlRGlj
dGlvbmFyeVJlZiBzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCA9IChDRk11dGFibGVEaWN0aW9uYXJ5
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoc3VicmVzb3VyY2VzLCBpKTsKLSAgICAgICAgICAg
IG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIp
KSk7Ci0gICAgICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRvRGljdGlvbmFyeShz
dWJyZXNvdXJjZVByb3BlcnR5TGlzdCk7Ci0gICAgICAgICAgICBjb252ZXJ0V2ViUmVzb3VyY2VE
YXRhVG9TdHJpbmcoc3VicmVzb3VyY2VQcm9wZXJ0eUxpc3QpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgLy8gU29ydCB0aGUgc3VicmVzb3VyY2VzIHNvIHRoZXkncmUgYWx3YXlzIGluIGEgcHJlZGlj
dGFibGUgb3JkZXIgZm9yIHRoZSBkdW1wCi0gICAgICAgIENGQXJyYXlTb3J0VmFsdWVzKHN1YnJl
c291cmNlcywgQ0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KHN1YnJlc291cmNlcykpLCBj
b21wYXJlUmVzb3VyY2VVUkxzLCAwKTsKLSAgICB9Ci0KLSAgICBlcnJvciA9IDA7Ci0gICAgUmV0
YWluUHRyPENGRGF0YVJlZj4geG1sRGF0YSA9IGFkb3B0Q0YoQ0ZQcm9wZXJ0eUxpc3RDcmVhdGVE
YXRhKGtDRkFsbG9jYXRvckRlZmF1bHQsIHByb3BlcnR5TGlzdC5nZXQoKSwga0NGUHJvcGVydHlM
aXN0WE1MRm9ybWF0X3YxXzAsIDAsICZlcnJvcikpOwotCi0gICAgaWYgKCF4bWxEYXRhKSB7Ci0g
ICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIHJldHVybiBDRkVycm9yQ29weURlc2NyaXB0
aW9uKGVycm9yKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRlJl
dGFpbihDRlNUUigiQW4gdW5rbm93biBlcnJvciBvY2N1cnJlZCBjb252ZXJ0aW5nIHByb3BlcnR5
IGxpc3QgdG8gZGF0YS4iKSkpOwotICAgIH0KLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
eG1sU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUZyb21FeHRlcm5hbFJlcHJlc2VudGF0
aW9uKGtDRkFsbG9jYXRvckRlZmF1bHQsIHhtbERhdGEuZ2V0KCksIGtDRlN0cmluZ0VuY29kaW5n
VVRGOCkpOwotICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+IHN0cmluZyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCB4bWxT
dHJpbmcuZ2V0KCkpKTsKLQotICAgIC8vIFJlcGxhY2UgIkFwcGxlIENvbXB1dGVyIiB3aXRoICJB
cHBsZSIgaW4gdGhlIERURCBkZWNsYXJhdGlvbi4KLSAgICBDRlN0cmluZ0ZpbmRBbmRSZXBsYWNl
KHN0cmluZy5nZXQoKSwgQ0ZTVFIoIi0vL0FwcGxlIENvbXB1dGVyLy8iKSwgQ0ZTVFIoIi0vL0Fw
cGxlLy8iKSwgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nLmdldCgpKSks
IDApOwotCi0gICAgcmV0dXJuIHN0cmluZy5sZWFrUmVmKCk7Ci19CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMGM1ODE4NGUwZmQyYzFkZmY2MTQ4MmFkMzk0NDZjZjcyZTZiZGU1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkFyY2hpdmVEdW1w
U3VwcG9ydF9oCi0jZGVmaW5lIFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9oCi0KLSNpbmNsdWRlIDxD
b3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgotCi10eXBlZGVmIHN0cnVjdCBfQ0ZVUkxS
ZXNwb25zZSogQ0ZVUkxSZXNwb25zZVJlZjsKLQotQ0ZTdHJpbmdSZWYgY3JlYXRlWE1MU3RyaW5n
RnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNoaXZlRGF0YSk7Ci0KLS8vIE1BUks6
IC0KLS8vIE1BUks6IFBsYXRmb3JtLXNwZWNpZmljIG1ldGhvZHMKLQotQ0ZVUkxSZXNwb25zZVJl
ZiBjcmVhdGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShDRkRhdGFSZWYgcmVzcG9uc2VE
YXRhKTsKLUNGQXJyYXlSZWYgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXMoKTsKLQotI2VuZGlm
IC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydF9oICovCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KaW5kZXggOTIwYzE1Y2NjN2RiZTg4NzdhNGM1MzdmOTA2N2MwNzhl
NjhmMzM4OS4uNzE4MTM3NzBiODc3MzQzOWNjNjBmMzg3MmY4NTViNDJmZjJjMzZmMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTc0MywxMSArMTc0
MywxMSBAQCB2b2lkIGR1bXAoKQogICAgICAgICAgICAgcmVzdWx0TWltZVR5cGUgPSBAImFwcGxp
Y2F0aW9uL3BkZiI7CiAgICAgICAgIH0gZWxzZSBpZiAoZ1Rlc3RSdW5uZXItPmR1bXBET01Bc1dl
YkFyY2hpdmUoKSkgewogICAgICAgICAgICAgV2ViQXJjaGl2ZSAqd2ViQXJjaGl2ZSA9IFtbbWFp
bkZyYW1lIERPTURvY3VtZW50XSB3ZWJBcmNoaXZlXTsKLSAgICAgICAgICAgIHJlc3VsdFN0cmlu
ZyA9IENGQnJpZGdpbmdSZWxlYXNlKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YSgo
Q0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CisgICAgICAgICAgICByZXN1bHRTdHJpbmcg
PSBDRkJyaWRnaW5nUmVsZWFzZShXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zy
b21XZWJBcmNoaXZlRGF0YSgoQ0ZEYXRhUmVmKVt3ZWJBcmNoaXZlIGRhdGFdKSk7CiAgICAgICAg
ICAgICByZXN1bHRNaW1lVHlwZSA9IEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIjsKICAgICAg
ICAgfSBlbHNlIGlmIChnVGVzdFJ1bm5lci0+ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSgpKSB7CiAg
ICAgICAgICAgICBXZWJBcmNoaXZlICp3ZWJBcmNoaXZlID0gW1ttYWluRnJhbWUgZGF0YVNvdXJj
ZV0gd2ViQXJjaGl2ZV07Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBDRkJyaWRnaW5nUmVs
ZWFzZShjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEoKENGRGF0YVJlZilbd2ViQXJj
aGl2ZSBkYXRhXSkpOworICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gQ0ZCcmlkZ2luZ1JlbGVh
c2UoV2ViQ29yZVRlc3RTdXBwb3J0OjpjcmVhdGVYTUxTdHJpbmdGcm9tV2ViQXJjaGl2ZURhdGEo
KENGRGF0YVJlZilbd2ViQXJjaGl2ZSBkYXRhXSkpOwogICAgICAgICAgICAgcmVzdWx0TWltZVR5
cGUgPSBAImFwcGxpY2F0aW9uL3gtd2ViYXJjaGl2ZSI7CiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgcmVzdWx0U3RyaW5nID0gW21haW5GcmFtZSByZW5kZXJUcmVlQXNFeHRlcm5hbFJlcHJl
c2VudGF0aW9uRm9yUHJpbnRpbmc6Z1Rlc3RSdW5uZXItPmlzUHJpbnRpbmcoKV07CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1dlYkFyY2hpdmVEdW1wU3VwcG9ydE1hYy5tbQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA2ZTc5NzUwZTMyMDk5YjAyYWJiZDhjMDMx
OTQ3MzY4YmU5MWRlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0TWFjLm1t
CisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgotCi0jaW1wb3J0IDxDRk5ldHdv
cmsvQ0ZIVFRQTWVzc2FnZS5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+Ci0j
aW1wb3J0IDxXZWJLaXQvV2ViSFRNTFJlcHJlc2VudGF0aW9uLmg+Ci0jaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+Ci0KLWV4dGVybiAiQyIgewotCi1lbnVtIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5
IHsKLSAga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCA9IDAsCi0gIGtDRlVSTENhY2hlU3RvcmFn
ZUFsbG93ZWRJbk1lbW9yeU9ubHkgPSAxLAotICBrQ0ZVUkxDYWNoZVN0b3JhZ2VOb3RBbGxvd2Vk
ID0gMgotfTsKLXR5cGVkZWYgZW51bSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSBDRlVSTENhY2hl
U3RvcmFnZVBvbGljeTsKLQotZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRkhUVFBWZXJzaW9u
MV8xOwotCi1DRlVSTFJlc3BvbnNlUmVmIENGVVJMUmVzcG9uc2VDcmVhdGUoQ0ZBbGxvY2F0b3JS
ZWYgYWxsb2MsIENGVVJMUmVmIFVSTCwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUsIFNJbnQ2NCBleHBl
Y3RlZENvbnRlbnRMZW5ndGgsIENGU3RyaW5nUmVmIHRleHRFbmNvZGluZ05hbWUsIENGVVJMQ2Fj
aGVTdG9yYWdlUG9saWN5IHJlY29tbWVuZGVkUG9saWN5KTsKLUNGVVJMUmVzcG9uc2VSZWYgQ0ZV
UkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9uc2UoQ0ZBbGxvY2F0b3JSZWYgYWxsb2MsIENG
VVJMUmVmIFVSTCwgQ0ZIVFRQTWVzc2FnZVJlZiBodHRwUmVzcG9uc2UsIENGVVJMQ2FjaGVTdG9y
YWdlUG9saWN5IHJlY29tbWVuZGVkUG9saWN5KTsKLXZvaWQgQ0ZVUkxSZXNwb25zZVNldEV4cGVj
dGVkQ29udGVudExlbmd0aChDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBTSW50NjQgbGVuZ3Ro
KTsKLXZvaWQgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2UsIENGU3RyaW5nUmVmIG1pbWVUeXBlKTsKLQotfQotCi1DRlVSTFJlc3BvbnNlUmVmIGNyZWF0
ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKENGRGF0YVJlZiByZXNwb25zZURhdGEpCi17
Ci0gICAgLy8gRGVjb2RlIE5TVVJMUmVzcG9uc2UKLSAgICBSZXRhaW5QdHI8TlNLZXllZFVuYXJj
aGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtbTlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGlu
aXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAqKXJlc3BvbnNlRGF0YV0pOwotICAgIE5TVVJM
UmVzcG9uc2UgKnJlc3BvbnNlID0gW3VuYXJjaGl2ZXIuZ2V0KCkgZGVjb2RlT2JqZWN0Rm9yS2V5
OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdl
YlJlc291cmNlLm0KLSAgICBbdW5hcmNoaXZlci5nZXQoKSBmaW5pc2hEZWNvZGluZ107Ci0KLSAg
ICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11d
KQotICAgICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAoQ0ZVUkxSZWYpW3Jlc3BvbnNlIFVSTF0sIChDRlN0cmluZ1JlZilbcmVzcG9uc2UgTUlNRVR5
cGVdLCBbcmVzcG9uc2UgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXSwgKENGU3RyaW5nUmVmKVtyZXNw
b25zZSB0ZXh0RW5jb2RpbmdOYW1lXSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCk7Ci0KLSAg
ICBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICop
cmVzcG9uc2U7Ci0KLSAgICAvLyBOU1VSTFJlc3BvbnNlIGlzIG5vdCB0b2xsLWZyZWUgYnJpZGdl
ZCB0byBDRlVSTFJlc3BvbnNlLgotICAgIFJldGFpblB0cjxDRkhUVFBNZXNzYWdlUmVmPiBodHRw
TWVzc2FnZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNyZWF0ZVJlc3BvbnNlKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV0sIDAsIGtDRkhUVFBWZXJzaW9uMV8x
KSk7Ci0KLSAgICBOU0RpY3Rpb25hcnkgKmhlYWRlckZpZWxkcyA9IFtodHRwUmVzcG9uc2UgYWxs
SGVhZGVyRmllbGRzXTsKLSAgICBmb3IgKE5TU3RyaW5nICpoZWFkZXJGaWVsZCBpbiBbaGVhZGVy
RmllbGRzIGtleUVudW1lcmF0b3JdKQotICAgICAgICBDRkhUVFBNZXNzYWdlU2V0SGVhZGVyRmll
bGRWYWx1ZShodHRwTWVzc2FnZS5nZXQoKSwgKENGU3RyaW5nUmVmKWhlYWRlckZpZWxkLCAoQ0ZT
dHJpbmdSZWYpW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6aGVhZGVyRmllbGRdKTsKLQotICAg
IHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoQ0ZVUkxSZWYpW3Jlc3BvbnNlIFVSTF0sIGh0dHBNZXNzYWdlLmdldCgpLCBrQ0ZV
UkxDYWNoZVN0b3JhZ2VBbGxvd2VkKTsKLX0KLQotQ0ZBcnJheVJlZiBzdXBwb3J0ZWROb25JbWFn
ZU1JTUVUeXBlcygpCi17Ci0gICAgcmV0dXJuIChDRkFycmF5UmVmKVtXZWJIVE1MUmVwcmVzZW50
YXRpb24gc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IGYzYWJmOWMx
MjU0NDNmZTk5NDdmY2Y0YjFmNWYzMzQ1ZmUxYTY1NTEuLjJlYTA5NWFlZGFlMjFmMTkwM2NiYmVk
MTRkNWY4N2ZjZTE0ODRiZWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAgLTMzLDcgKzMzLDcgQEAgQ0xBTkdfQ1hYX0xJ
QlJBUlkgPSBsaWJjKys7CiBDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKIENMQU5H
X1dBUk5fSU5GSU5JVEVfUkVDVVJTSU9OID0gWUVTOwogQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01P
VkUgPSBZRVM7Ci1IRUFERVJfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpL3Vz
ci9sb2NhbC9pbmNsdWRlICQoV0VCQ09SRV9QUklWQVRFX0hFQURFUlNfRElSKS9Gb3J3YXJkaW5n
SGVhZGVycyAkKFNSQ1JPT1QpLy4uLy4uL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pY3UgJChORVhU
X1JPT1QpL3Vzci9sb2NhbC9pbmNsdWRlL1dlYkNvcmVUZXN0U3VwcG9ydDsKK0hFQURFUl9TRUFS
Q0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvdXNyL2xvY2FsL2luY2x1ZGUgJChCVUlM
VF9QUk9EVUNUU19ESVIpL1dlYkNvcmVUZXN0U3VwcG9ydCAkKFdFQkNPUkVfUFJJVkFURV9IRUFE
RVJTX0RJUikvRm9yd2FyZGluZ0hlYWRlcnMgJChTUkNST09UKS8uLi8uLi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaWN1ICQoTkVYVF9ST09UKS91c3IvbG9jYWwvaW5jbHVkZS9XZWJDb3JlVGVzdFN1
cHBvcnQ7CiBHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSBF
TkFCTEVfREFTSEJPQVJEX1NVUFBPUlQ7CiBERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2Fy
Zi13aXRoLWRzeW07CiBQUkVCSU5ESU5HID0gTk8KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAppbmRl
eCBkMWI2Y2IxMTliNGU1MTNmOTllNzY0NDI2YTY1MGE2OWMyNDFkMTcyLi44NmE5ZjE5ZDQxMGE0
NDk0Y2YwZGY5OGJmNjIyNjZmYTNmZTc5NTNkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCkBA
IC04NDYsNyArODQ2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmR1bXBET01Bc1dlYkFy
Y2hpdmUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGQKICNpZiBVU0UoQ0YpCiAg
ICAgV0tSZXRhaW5QdHI8V0tEYXRhUmVmPiB3a0RhdGEgPSBhZG9wdFdLKFdLQnVuZGxlRnJhbWVD
b3B5V2ViQXJjaGl2ZShmcmFtZSkpOwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9
IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKDAsIFdLRGF0YUdldEJ5dGVzKHdrRGF0YS5nZXQoKSksIFdL
RGF0YUdldFNpemUod2tEYXRhLmdldCgpKSkpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
Y2ZTdHJpbmcgPSBhZG9wdENGKGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShjZkRh
dGEuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmU3RyaW5nID0gYWRvcHRD
RihXZWJDb3JlVGVzdFN1cHBvcnQ6OmNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShj
ZkRhdGEuZ2V0KCkpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjZlN0cmluZy5nZXQoKSk7
CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydENvY29h
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGU4NWE1YjE5ZTFhNDNkZDcwNjVk
OWMxMWIwY2Q3YjMzNDIxOGY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvY29jb2EvV2Vi
QXJjaGl2ZUR1bXBTdXBwb3J0Q29jb2EubW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJBcmNoaXZlRHVt
cFN1cHBvcnQuaCIKLQotI2ltcG9ydCA8Q0ZOZXR3b3JrL0NGSFRUUE1lc3NhZ2UuaD4KLSNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgotI2ltcG9ydCA8V2ViS2l0L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotCi1leHRlcm4gIkMiIHsK
LQotZW51bSBDRlVSTENhY2hlU3RvcmFnZVBvbGljeSB7Ci0gICAga0NGVVJMQ2FjaGVTdG9yYWdl
QWxsb3dlZCA9IDAsCi0gICAga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZEluTWVtb3J5T25seSA9
IDEsCi0gICAga0NGVVJMQ2FjaGVTdG9yYWdlTm90QWxsb3dlZCA9IDIKLX07Ci10eXBlZGVmIGVu
dW0gQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3k7Ci0KLWV4
dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ0ZIVFRQVmVyc2lvbjFfMTsKLQotQ0ZVUkxSZXNwb25z
ZVJlZiBDRlVSTFJlc3BvbnNlQ3JlYXRlKENGQWxsb2NhdG9yUmVmLCBDRlVSTFJlZiwgQ0ZTdHJp
bmdSZWYgbWltZVR5cGUsIFNJbnQ2NCBleHBlY3RlZENvbnRlbnRMZW5ndGgsIENGU3RyaW5nUmVm
IHRleHRFbmNvZGluZ05hbWUsIENGVVJMQ2FjaGVTdG9yYWdlUG9saWN5IHJlY29tbWVuZGVkUG9s
aWN5KTsKLUNGVVJMUmVzcG9uc2VSZWYgQ0ZVUkxSZXNwb25zZUNyZWF0ZVdpdGhIVFRQUmVzcG9u
c2UoQ0ZBbGxvY2F0b3JSZWYsIENGVVJMUmVmLCBDRkhUVFBNZXNzYWdlUmVmIGh0dHBSZXNwb25z
ZSwgQ0ZVUkxDYWNoZVN0b3JhZ2VQb2xpY3kgcmVjb21tZW5kZWRQb2xpY3kpOwotdm9pZCBDRlVS
TFJlc3BvbnNlU2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKENGVVJMUmVzcG9uc2VSZWYsIFNJbnQ2
NCBsZW5ndGgpOwotdm9pZCBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJl
ZiwgQ0ZTdHJpbmdSZWYgbWltZVR5cGUpOwotCi19Ci0KLUNGVVJMUmVzcG9uc2VSZWYgY3JlYXRl
Q0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSkKLXsK
LSAgICBSZXRhaW5QdHI8TlNLZXllZFVuYXJjaGl2ZXI+IHVuYXJjaGl2ZXIgPSBhZG9wdE5TKFtb
TlNLZXllZFVuYXJjaGl2ZXIgYWxsb2NdIGluaXRGb3JSZWFkaW5nV2l0aERhdGE6KE5TRGF0YSAq
KXJlc3BvbnNlRGF0YV0pOwotICAgIE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlID0gW3VuYXJjaGl2
ZXIgZGVjb2RlT2JqZWN0Rm9yS2V5OkAiV2ViUmVzb3VyY2VSZXNwb25zZSJdOyAvLyBXZWJSZXNv
dXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291cmNlLm0KLSAgICBbdW5hcmNoaXZlciBmaW5pc2hE
ZWNvZGluZ107Ci0KLSAgICBpZiAoIVtyZXNwb25zZSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxS
ZXNwb25zZSBjbGFzc11dKQotICAgICAgICByZXR1cm4gQ0ZVUkxSZXNwb25zZUNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCAoQ0ZTdHJpbmdSZWYpcmVz
cG9uc2UuTUlNRVR5cGUsIHJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCwgKENGU3RyaW5n
UmVmKXJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUsIGtDRlVSTENhY2hlU3RvcmFnZUFsbG93ZWQp
OwotCi0gICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNw
b25zZSAqKXJlc3BvbnNlOwotCi0gICAgLy8gTlNVUkxSZXNwb25zZSBpcyBub3QgdG9sbC1mcmVl
IGJyaWRnZWQgdG8gQ0ZVUkxSZXNwb25zZS4KLSAgICBSZXRhaW5QdHI8Q0ZIVFRQTWVzc2FnZVJl
Zj4gaHR0cE1lc3NhZ2UgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDcmVhdGVSZXNwb25zZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBodHRwUmVzcG9uc2Uuc3RhdHVzQ29kZSwgbnVsbHB0ciwga0NGSFRU
UFZlcnNpb24xXzEpKTsKLQotICAgIE5TRGljdGlvbmFyeSAqaGVhZGVyRmllbGRzID0gaHR0cFJl
c3BvbnNlLmFsbEhlYWRlckZpZWxkczsKLSAgICBmb3IgKE5TU3RyaW5nICpoZWFkZXJGaWVsZCBp
biBbaGVhZGVyRmllbGRzIGtleUVudW1lcmF0b3JdKQotICAgICAgICBDRkhUVFBNZXNzYWdlU2V0
SGVhZGVyRmllbGRWYWx1ZShodHRwTWVzc2FnZS5nZXQoKSwgKENGU3RyaW5nUmVmKWhlYWRlckZp
ZWxkLCAoQ0ZTdHJpbmdSZWYpW2hlYWRlckZpZWxkcyBvYmplY3RGb3JLZXk6aGVhZGVyRmllbGRd
KTsKLQotICAgIHJldHVybiBDRlVSTFJlc3BvbnNlQ3JlYXRlV2l0aEhUVFBSZXNwb25zZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoQ0ZVUkxSZWYpcmVzcG9uc2UuVVJMLCBodHRwTWVzc2FnZS5nZXQo
KSwga0NGVVJMQ2FjaGVTdG9yYWdlQWxsb3dlZCk7Ci19Ci0KLUNGQXJyYXlSZWYgc3VwcG9ydGVk
Tm9uSW1hZ2VNSU1FVHlwZXMoKQotewotICAgIHJldHVybiAoQ0ZBcnJheVJlZilbV2ViSFRNTFJl
cHJlc2VudGF0aW9uIHN1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGVzXTsKLX0KZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1NYWMuY21ha2UgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IDg2Y2FjNjg5ZmU2ODU3N2NlYzgwYzMy
OTI2ODNlZDY1YjYzZjcxZjEuLjc3MDBhNjUyMjk0YTE2ZGJhMjAxMmQzYWFjNWQyNDQzMTZlYWE5
Y2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1NYWMuY21ha2UK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAtMzMsMTEg
KzMzLDkgQEAgbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVT
CiAKIGxpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9TT1VSQ0VTCiAg
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NvY29hL0NyYXNoUmVwb3J0ZXJJbmZvLm1tCi0g
ICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAK
IAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9jb2NvYS9BY3Rp
dmF0ZUZvbnRzQ29jb2EubW0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExF
X0RJUn0vY29jb2EvSW5qZWN0ZWRCdW5kbGVQYWdlQ29jb2EubW0KLSAgICAke1dFQktJVF9URVNU
UlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29j
b2EubW0KIAogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfSU5KRUNURURCVU5ETEVfRElSfS9tYWMv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJNYWMubW0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLm1t
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVz
dFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY5MWEyNzQwN2M4M2YxMDk4
OGEwMmQ3NTAxODdmODM0MzZiZjcyMzQuLjJlYzBmNTZiMmU4YzAxOTdkNjM4YjBlM2Y5MTk1NWUy
ODJhOGMyZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvV2ViS2l0VGVzdFJ1
bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvV2ViS2l0VGVzdFJ1bm5lci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03OCw4ICs3
OCw2IEBACiAJCTU2NDFFMkQwMTQzMzVFOTUwMDgzMDdFNSAvKiBKU1RleHRJbnB1dENvbnRyb2xs
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTY0
MUUyQ0UxNDMzNUU5NTAwODMwN0U1IC8qIEpTVGV4dElucHV0Q29udHJvbGxlci5jcHAgKi87IH07
CiAJCTU2NjRBNDlBMTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU2NjRBNDk4MTQz
MjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJNTY3MEI4
MjgxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NjcwQjgyNzEzODZGQ0E1MDAyRUIzNTUg
LyogRXZlbnRTZW5kZXJQcm94eS5tbSAqLzsgfTsKLQkJNUM0NUMzMEYxNzM5OEUyOTAwNzk3MTRF
IC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydENvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM0NUMzMEUxNzM5OEUyOTAwNzk3MTRFIC8qIFdlYkFy
Y2hpdmVEdW1wU3VwcG9ydENvY29hLm1tICovOyB9OwotCQk1QzQ1QzMxMzE3Mzk4RTQ4MDA3OTcx
NEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNDVDMzExMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNo
aXZlRHVtcFN1cHBvcnQuY3BwICovOyB9OwogCQk2NTEwQTc4MjExRUM2NDM4MDA0MTA4NjcgLyog
QUhFTV9fX18uVFRGIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2NTEwQTc3NzExRUM2NDM4MDA0MTA4NjcgLyogQUhFTV9fX18uVFRGICovOyB9OwogCQk2
NTEwQTc4NDExRUM2NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MTBBNzc5MTFF
QzY0MzgwMDQxMDg2NyAvKiBXZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiAqLzsgfTsKIAkJNjUx
MEE3ODUxMUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTEwQTc3QTExRUM2
NDM4MDA0MTA4NjcgLyogV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGYgKi87IH07CkBAIC0yNzIs
OSArMjcwLDYgQEAKIAkJNTY3MEI4MjcxMzg2RkNBNTAwMkVCMzU1IC8qIEV2ZW50U2VuZGVyUHJv
eHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudFNlbmRl
clByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1ODM5MTNEMDE0MzM1RTk1
MDA4MzA3RTUgLyogSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTgzOTEzRDExNDMzNUU5NTAwODMwN0U1IC8qIEpT
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1QzQ1QzMwRTE3Mzk4RTI5MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Q29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBcmNoaXZl
RHVtcFN1cHBvcnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUM0NUMz
MTExNzM5OEU0ODAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBw
YXRoID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9S
T09UOyB9OwotCQk1QzQ1QzMxMjE3Mzk4RTQ4MDA3OTcxNEUgLyogV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3Vw
cG9ydC5oOyBwYXRoID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHNvdXJjZVRyZWUgPSBT
T1VSQ0VfUk9PVDsgfTsKIAkJNjUxMEE3NzcxMUVDNjQzODAwNDEwODY3IC8qIEFIRU1fX19fLlRU
RiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7
IG5hbWUgPSAiQUhFTV9fX18uVFRGIjsgcGF0aCA9ICJmb250cy9BSEVNX19fXy5UVEYiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTEwQTc3OTExRUM2NDM4MDA0MTA4NjcgLyogV2Vi
S2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGYgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gV2ViS2l0V2VpZ2h0V2F0Y2hlcjEwMC50dGY7
IHBhdGggPSBmb250cy9XZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0Zjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNjUxMEE3N0ExMUVDNjQzODAwNDEwODY3IC8qIFdlYktpdFdlaWdodFdh
dGNoZXIyMDAudHRmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gZmlsZTsgbmFtZSA9IFdlYktpdFdlaWdodFdhdGNoZXIyMDAudHRmOyBwYXRoID0gZm9u
dHMvV2ViS2l0V2VpZ2h0V2F0Y2hlcjIwMC50dGY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01MDYsNyArNTAxLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTY1RUI4NTlGMTFFQzY3
Q0MwMDM0RDMwMCAvKiBBY3RpdmF0ZUZvbnRzQ29jb2EubW0gKi8sCiAJCQkJMEZFQjkwOUUxOTA1
QTc3NjAwMEZEQkYzIC8qIEluamVjdGVkQnVuZGxlUGFnZUNvY29hLm1tICovLAotCQkJCTVDNDVD
MzBFMTczOThFMjkwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRDb2NvYS5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAt
NTk4LDE1ICs1OTIsNiBAQAogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07Ci0JCTVDNDVDMzEwMTczOThFMzcwMDc5NzE0RSAvKiBjZiAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJNUM0NUMzMTExNzM5OEU0ODAwNzk3
MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8sCi0JCQkJNUM0NUMzMTIxNzM5OEU0
ODAwNzk3MTRFIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovLAotCQkJKTsKLQkJCW5hbWUg
PSBjZjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCTY1RUI4NTlFMTFFQzY3
Q0MwMDM0RDMwMCAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtNjQwLDcgKzYyNSw2IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAogCQkJCUJDOTUyQzBBMTFGM0I5MzkwMDMzOThCNCAvKiBCaW5kaW5ncyAqLywKLQkJCQk1
QzQ1QzMxMDE3Mzk4RTM3MDA3OTcxNEUgLyogY2YgKi8sCiAJCQkJMEZFQjkwOUQxOTA1QTc1RDAw
MEZEQkYzIC8qIGNvY29hICovLAogCQkJCUJDMTRFNEUwMTIwRTAyRjkwMDgyNkMwQyAvKiBDb250
cm9sbGVycyAqLywKIAkJCQlCQzk1MkQzQTExRjNCRjFGMDAzMzk4QjQgLyogRGVyaXZlZCBTb3Vy
Y2VzICovLApAQCAtMTAzNiw4ICsxMDIwLDYgQEAKIAkJCQkyRTYzRURBNjE4OTFCREMwMDAyQTdB
RkMgLyogVGVzdFJ1bm5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMENFNzIwQjEyNDdDOTMz
MDBCQzBFQzQgLyogVGVzdFJ1bm5lck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU2NjRBNDlB
MTQzMjYzODQwMDg4ODFCRSAvKiBUZXh0SW5wdXRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTVDNDVDMzEzMTczOThFNDgwMDc5NzE0RSAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQu
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUM0NUMzMEYxNzM5OEUyOTAwNzk3MTRFIC8qIFdlYkFy
Y2hpdmVEdW1wU3VwcG9ydENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDc0MmNiODY5ZmI5MjAxMDMzNWMwNGRjOTA5YjVjNDI4Nzc3ZDBh
NmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjEyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIgotCi0jaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGTmV0d29yay5oPgotI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVG
b3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi1leHRlcm4gIkMiIHsK
LQotQ0ZVUkxSZWYgQ0ZVUkxSZXNwb25zZUdldFVSTChDRlVSTFJlc3BvbnNlUmVmKTsKLUNGU3Ry
aW5nUmVmIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmKTsKLUNGU3Ry
aW5nUmVmIENGVVJMUmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKENGVVJMUmVzcG9uc2VSZWYp
OwotU0ludDY0IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoQ0ZVUkxSZXNw
b25zZVJlZik7Ci1DRkhUVFBNZXNzYWdlUmVmIENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2Uo
Q0ZVUkxSZXNwb25zZVJlZik7Ci0KLUNGVHlwZUlEIENGVVJMUmVzcG9uc2VHZXRUeXBlSUQodm9p
ZCk7Ci0KLX0KLQotc3RhdGljIHZvaWQgY29udmVydE1JTUVUeXBlKENGTXV0YWJsZVN0cmluZ1Jl
ZiBtaW1lVHlwZSkKLXsKLSAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vNjIz
NDMxOD4gd2l0aCBEYXNoY29kZSAyLjAKLSAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKG1pbWVUeXBl
LCBDRlNUUigiYXBwbGljYXRpb24veC1qYXZhc2NyaXB0IiksIGtDRkNvbXBhcmVBbmNob3JlZCB8
IGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBhcmVFcXVhbFRvKQotICAgICAg
ICBDRlN0cmluZ1JlcGxhY2VBbGwobWltZVR5cGUsIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSk7
Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhDRk11dGFi
bGVEaWN0aW9uYXJ5UmVmIHJlc291cmNlKQotewotICAgIENGTXV0YWJsZVN0cmluZ1JlZiBtaW1l
VHlwZSA9IChDRk11dGFibGVTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2Us
IENGU1RSKCJXZWJSZXNvdXJjZU1JTUVUeXBlIikpOwotICAgIENGU3RyaW5nTG93ZXJjYXNlKG1p
bWVUeXBlLCBDRkxvY2FsZUdldFN5c3RlbSgpKTsKLSAgICBjb252ZXJ0TUlNRVR5cGUobWltZVR5
cGUpOwotCi0gICAgQ0ZBcnJheVJlZiBzdXBwb3J0ZWRNSU1FVHlwZXMgPSBzdXBwb3J0ZWROb25J
bWFnZU1JTUVUeXBlcygpOwotICAgIGlmIChDRlN0cmluZ0hhc1ByZWZpeChtaW1lVHlwZSwgQ0ZT
VFIoInRleHQvIikpIHx8IENGQXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZE1JTUVUeXBlcywg
Q0ZSYW5nZU1ha2UoMCwgQ0ZBcnJheUdldENvdW50KHN1cHBvcnRlZE1JTUVUeXBlcykpLCBtaW1l
VHlwZSkpIHsKLSAgICAgICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZSwgQ0ZTVFIoIldl
YlJlc291cmNlVGV4dEVuY29kaW5nTmFtZSIpKSk7Ci0gICAgICAgIENGU3RyaW5nRW5jb2Rpbmcg
c3RyaW5nRW5jb2Rpbmc7Ci0gICAgICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lICYmIENGU3RyaW5n
R2V0TGVuZ3RoKHRleHRFbmNvZGluZ05hbWUpKQotICAgICAgICAgICAgc3RyaW5nRW5jb2Rpbmcg
PSBDRlN0cmluZ0NvbnZlcnRJQU5BQ2hhclNldE5hbWVUb0VuY29kaW5nKHRleHRFbmNvZGluZ05h
bWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJpbmdFbmNvZGluZyA9IGtDRlN0cmlu
Z0VuY29kaW5nVVRGODsKLQotICAgICAgICBDRkRhdGFSZWYgZGF0YSA9IHN0YXRpY19jYXN0PENG
RGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJj
ZURhdGEiKSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGRhdGFBc1N0cmluZyA9
IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCBkYXRhLCBzdHJpbmdFbmNvZGluZykpOwotICAgICAgICBpZiAoZGF0YUFz
U3RyaW5nKQotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzb3VyY2UsIENGU1RS
KCJXZWJSZXNvdXJjZURhdGEiKSwgZGF0YUFzU3RyaW5nLmdldCgpKTsKLSAgICB9Ci19Ci0KLXN0
YXRpYyB2b2lkIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxkcyhDRk11dGFibGVEaWN0
aW9uYXJ5UmVmIGZpZWxkcykKLXsKLSAgICAvLyBOb3JtYWxpemUgaGVhZGVycwotICAgIGlmIChD
RkRpY3Rpb25hcnlDb250YWluc0tleShmaWVsZHMsIENGU1RSKCJEYXRlIikpKQotICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJEYXRlIiksIENGU1RSKCJTdW4sIDE2
IE5vdiAyMDA4IDE3OjAwOjAwIEdNVCIpKTsKLSAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNL
ZXkoZmllbGRzLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpKSkKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUoZmllbGRzLCBDRlNUUigiTGFzdC1Nb2RpZmllZCIpLCBDRlNUUigiU3VuLCAxNiBO
b3YgMjAwOCAxNjo1NTowMCBHTVQiKSk7Ci0gICAgaWYgKENGRGljdGlvbmFyeUNvbnRhaW5zS2V5
KGZpZWxkcywgQ0ZTVFIoIkV0YWciKSkpCi0gICAgICAgIENGRGljdGlvbmFyeVNldFZhbHVlKGZp
ZWxkcywgQ0ZTVFIoIkV0YWciKSwgQ0ZTVFIoIlwiMzAxOTI1LTIxLTQ1YzdkNzJkM2U3ODBcIiIp
KTsKLSAgICBpZiAoQ0ZEaWN0aW9uYXJ5Q29udGFpbnNLZXkoZmllbGRzLCBDRlNUUigiU2VydmVy
IikpKQotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShmaWVsZHMsIENGU1RSKCJTZXJ2ZXIi
KSwgQ0ZTVFIoIkFwYWNoZS8yLjIuOSAoVW5peCkgbW9kX3NzbC8yLjIuOSBPcGVuU1NMLzAuOS43
bCBQSFAvNS4yLjYiKSk7Ci0KLSAgICAvLyBSZW1vdmUgaGVhZGVycwotICAgIENGRGljdGlvbmFy
eVJlbW92ZVZhbHVlKGZpZWxkcywgQ0ZTVFIoIkNvbm5lY3Rpb24iKSk7Ci0gICAgQ0ZEaWN0aW9u
YXJ5UmVtb3ZlVmFsdWUoZmllbGRzLCBDRlNUUigiS2VlcC1BbGl2ZSIpKTsKLX0KLQotc3RhdGlj
IHZvaWQgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoQ0ZNdXRhYmxlU3RyaW5nUmVmIHdlYlJlc291
cmNlVVJMKQotewotICAgIHN0YXRpYyBDRkluZGV4IGZpbGVVcmxMZW5ndGggPSBDRlN0cmluZ0dl
dExlbmd0aChDRlNUUigiZmlsZTovLyIpKTsKLSAgICBDRlJhbmdlIGxheW91dFRlc3RzV2ViQXJj
aGl2ZVBhdGhSYW5nZSA9IENGU3RyaW5nRmluZCh3ZWJSZXNvdXJjZVVSTCwgQ0ZTVFIoIi9MYXlv
dXRUZXN0cy8iKSwga0NGQ29tcGFyZUJhY2t3YXJkcyk7Ci0gICAgaWYgKGxheW91dFRlc3RzV2Vi
QXJjaGl2ZVBhdGhSYW5nZS5sb2NhdGlvbiA9PSBrQ0ZOb3RGb3VuZCkKLSAgICAgICAgcmV0dXJu
OwotICAgIENGUmFuZ2UgY3VycmVudFdvcmtpbmdEaXJlY3RvcnlSYW5nZSA9IENGUmFuZ2VNYWtl
KGZpbGVVcmxMZW5ndGgsIGxheW91dFRlc3RzV2ViQXJjaGl2ZVBhdGhSYW5nZS5sb2NhdGlvbiAt
IGZpbGVVcmxMZW5ndGgpOwotICAgIENGU3RyaW5nUmVwbGFjZSh3ZWJSZXNvdXJjZVVSTCwgY3Vy
cmVudFdvcmtpbmdEaXJlY3RvcnlSYW5nZSwgQ0ZTVFIoIiIpKTsKLX0KLQotc3RhdGljIHZvaWQg
Y29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFy
eVJlZiBwcm9wZXJ0eUxpc3QpCi17Ci0gICAgQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSA9IHN0YXRp
Y19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydHlMaXN0LCBDRlNU
UigiV2ViUmVzb3VyY2VSZXNwb25zZSIpKSk7IC8vIFdlYlJlc291cmNlUmVzcG9uc2VLZXkgaW4g
V2ViUmVzb3VyY2UubQotICAgIGlmIChDRkdldFR5cGVJRChyZXNwb25zZURhdGEpICE9IENGRGF0
YUdldFR5cGVJRCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZXNw
b25zZVJlZj4gcmVzcG9uc2UgPSBhZG9wdENGKGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9u
c2VEYXRhKHJlc3BvbnNlRGF0YSkpOwotICAgIGlmICghcmVzcG9uc2UpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiByZXNwb25zZURpY3Rp
b25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25h
cnlWYWx1ZUNhbGxCYWNrcykpOwotCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4g
dXJsU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIENGVVJMR2V0U3RyaW5nKENGVVJMUmVzcG9uc2VHZXRVUkwocmVzcG9uc2Uu
Z2V0KCkpKSkpOwotICAgIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKHVybFN0cmluZy5nZXQoKSk7
Ci0gICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNU
UigiVVJMIiksIHVybFN0cmluZy5nZXQoKSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3Ry
aW5nUmVmPiBtaW1lVHlwZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29w
eShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9u
c2UuZ2V0KCkpKSk7Ci0gICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlU3RyaW5nLmdldCgpKTsK
LSAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RS
KCJNSU1FVHlwZSIpLCBtaW1lVHlwZVN0cmluZy5nZXQoKSk7Ci0KLSAgICBDRlN0cmluZ1JlZiB0
ZXh0RW5jb2RpbmdOYW1lID0gQ0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05hbWUocmVzcG9u
c2UuZ2V0KCkpOwotICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQotICAgICAgICBDRkRpY3Rpb25h
cnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ0ZXh0RW5jb2RpbmdO
YW1lIiksIHRleHRFbmNvZGluZ05hbWUpOwotCi0gICAgU0ludDY0IGV4cGVjdGVkQ29udGVudExl
bmd0aCA9IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgocmVzcG9uc2UuZ2V0
KCkpOwotICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVt
YmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1i
ZXJTSW50NjRUeXBlLCAmZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSk7Ci0gICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiZXhwZWN0ZWRDb250ZW50
TGVuZ3RoIiksIGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlci5nZXQoKSk7Ci0KLSAgICBpZiAo
Q0ZIVFRQTWVzc2FnZVJlZiBodHRwTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9u
c2UocmVzcG9uc2UuZ2V0KCkpKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IGFsbEhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKGh0
dHBNZXNzYWdlKSk7Ci0gICAgICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBh
bGxIZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsKLSAgICAgICAgbm9ybWFs
aXplSFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7Ci0gICAg
ICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIo
ImFsbEhlYWRlckZpZWxkcyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwotCi0gICAgICAgIENG
SW5kZXggc3RhdHVzQ29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0
cE1lc3NhZ2UpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN0YXR1c0NvZGVOdW1i
ZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
ckNGSW5kZXhUeXBlLCAmc3RhdHVzQ29kZSkpOwotICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1
ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJzdGF0dXNDb2RlIiksIHN0YXR1c0Nv
ZGVOdW1iZXIuZ2V0KCkpOwotICAgIH0KLQotICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHByb3Bl
cnR5TGlzdCwgQ0ZTVFIoIldlYlJlc291cmNlUmVzcG9uc2UiKSwgcmVzcG9uc2VEaWN0aW9uYXJ5
LmdldCgpKTsKLX0KLQotc3RhdGljIENGQ29tcGFyaXNvblJlc3VsdCBjb21wYXJlUmVzb3VyY2VV
UkxzKGNvbnN0IHZvaWQgKnZhbDEsIGNvbnN0IHZvaWQgKnZhbDIsIHZvaWQgKmNvbnRleHQpCi17
Ci0gICAgQ0ZTdHJpbmdSZWYgdXJsMSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KHZhbDEpLCBDRlNUUigi
V2ViUmVzb3VyY2VVUkwiKSkpOwotICAgIENGU3RyaW5nUmVmIHVybDIgPSBzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5
UmVmPih2YWwyKSwgQ0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKLQotICAgIHJldHVybiBDRlN0
cmluZ0NvbXBhcmUodXJsMSwgdXJsMiwga0NGQ29tcGFyZUFuY2hvcmVkKTsKLX0KLQotQ0ZTdHJp
bmdSZWYgY3JlYXRlWE1MU3RyaW5nRnJvbVdlYkFyY2hpdmVEYXRhKENGRGF0YVJlZiB3ZWJBcmNo
aXZlRGF0YSkKLXsKLSAgICBDRkVycm9yUmVmIGVycm9yID0gMDsKLSAgICBDRlByb3BlcnR5TGlz
dEZvcm1hdCBmb3JtYXQgPSBrQ0ZQcm9wZXJ0eUxpc3RCaW5hcnlGb3JtYXRfdjFfMDsKLSAgICBS
ZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcHJvcGVydHlMaXN0ID0gYWRvcHRDRigo
Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRlByb3BlcnR5TGlzdENyZWF0ZVdpdGhEYXRhKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHdlYkFyY2hpdmVEYXRhLCBrQ0ZQcm9wZXJ0eUxpc3RNdXRhYmxlQ29u
dGFpbmVyc0FuZExlYXZlcywgJmZvcm1hdCwgJmVycm9yKSk7Ci0KLSAgICBpZiAoIXByb3BlcnR5
TGlzdCkgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICByZXR1cm4gQ0ZFcnJvckNv
cHlEZXNjcmlwdGlvbihlcnJvcik7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2NjdXJyZWQgY29udmVydGlu
ZyBkYXRhIHRvIHByb3BlcnR5IGxpc3QuIikpKTsKLSAgICB9Ci0KLSAgICBSZXRhaW5QdHI8Q0ZN
dXRhYmxlQXJyYXlSZWY+IHJlc291cmNlcyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcykpOwotICAgIENG
QXJyYXlBcHBlbmRWYWx1ZShyZXNvdXJjZXMuZ2V0KCksIHByb3BlcnR5TGlzdC5nZXQoKSk7Ci0K
LSAgICB3aGlsZSAoQ0ZBcnJheUdldENvdW50KHJlc291cmNlcy5nZXQoKSkpIHsKLSAgICAgICAg
UmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IHJlc291cmNlUHJvcGVydHlMaXN0ID0g
KENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChyZXNvdXJjZXMu
Z2V0KCksIDApOwotICAgICAgICBDRkFycmF5UmVtb3ZlVmFsdWVBdEluZGV4KHJlc291cmNlcy5n
ZXQoKSwgMCk7Ci0KLSAgICAgICAgQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBtYWluUmVzb3VyY2Ug
PSAoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVBy
b3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYk1haW5SZXNvdXJjZSIpKTsKLSAgICAgICAgbm9y
bWFsaXplV2ViUmVzb3VyY2VVUkwoKENGTXV0YWJsZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShtYWluUmVzb3VyY2UsIENGU1RSKCJXZWJSZXNvdXJjZVVSTCIpKSk7Ci0gICAgICAgIGNv
bnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhtYWluUmVzb3VyY2UpOwotCi0gICAgICAgIC8v
IEFkZCBzdWJmcmFtZUFyY2hpdmVzIHRvIGxpc3QgZm9yIHByb2Nlc3NpbmcKLSAgICAgICAgQ0ZN
dXRhYmxlQXJyYXlSZWYgc3ViZnJhbWVBcmNoaXZlcyA9IChDRk11dGFibGVBcnJheVJlZilDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShyZXNvdXJjZVByb3BlcnR5TGlzdC5nZXQoKSwgQ0ZTVFIoIldlYlN1
YmZyYW1lQXJjaGl2ZXMiKSk7IC8vIFdlYlN1YmZyYW1lQXJjaGl2ZXNLZXkgaW4gV2ViQXJjaGl2
ZS5tCi0gICAgICAgIGlmIChzdWJmcmFtZUFyY2hpdmVzKQotICAgICAgICAgICAgQ0ZBcnJheUFw
cGVuZEFycmF5KHJlc291cmNlcy5nZXQoKSwgc3ViZnJhbWVBcmNoaXZlcywgQ0ZSYW5nZU1ha2Uo
MCwgQ0ZBcnJheUdldENvdW50KHN1YmZyYW1lQXJjaGl2ZXMpKSk7Ci0KLSAgICAgICAgQ0ZNdXRh
YmxlQXJyYXlSZWYgc3VicmVzb3VyY2VzID0gKENGTXV0YWJsZUFycmF5UmVmKUNGRGljdGlvbmFy
eUdldFZhbHVlKHJlc291cmNlUHJvcGVydHlMaXN0LmdldCgpLCBDRlNUUigiV2ViU3VicmVzb3Vy
Y2VzIikpOyAvLyBXZWJTdWJyZXNvdXJjZXNLZXkgaW4gV2ViQXJjaGl2ZS5tCi0gICAgICAgIGlm
ICghc3VicmVzb3VyY2VzKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgQ0ZJbmRl
eCBzdWJyZXNvdXJjZXNDb3VudCA9IENGQXJyYXlHZXRDb3VudChzdWJyZXNvdXJjZXMpOwotICAg
ICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBzdWJyZXNvdXJjZXNDb3VudDsgKytpKSB7Ci0g
ICAgICAgICAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHN1YnJlc291cmNlUHJvcGVydHlMaXN0
ID0gKENGTXV0YWJsZURpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChzdWJyZXNv
dXJjZXMsIGkpOwotICAgICAgICAgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoKENGTXV0YWJs
ZVN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShzdWJyZXNvdXJjZVByb3BlcnR5TGlzdCwg
Q0ZTVFIoIldlYlJlc291cmNlVVJMIikpKTsKLSAgICAgICAgICAgIGNvbnZlcnRXZWJSZXNvdXJj
ZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KHN1YnJlc291cmNlUHJvcGVydHlMaXN0KTsKLSAgICAgICAg
ICAgIGNvbnZlcnRXZWJSZXNvdXJjZURhdGFUb1N0cmluZyhzdWJyZXNvdXJjZVByb3BlcnR5TGlz
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTb3J0IHRoZSBzdWJyZXNvdXJjZXMgc28gdGhl
eSdyZSBhbHdheXMgaW4gYSBwcmVkaWN0YWJsZSBvcmRlciBmb3IgdGhlIGR1bXAKLSAgICAgICAg
Q0ZBcnJheVNvcnRWYWx1ZXMoc3VicmVzb3VyY2VzLCBDRlJhbmdlTWFrZSgwLCBDRkFycmF5R2V0
Q291bnQoc3VicmVzb3VyY2VzKSksIGNvbXBhcmVSZXNvdXJjZVVSTHMsIDApOwotICAgIH0KLQot
ICAgIGVycm9yID0gMDsKLQotICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHhtbERhdGEgPSBhZG9w
dENGKENGUHJvcGVydHlMaXN0Q3JlYXRlRGF0YShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwcm9wZXJ0
eUxpc3QuZ2V0KCksIGtDRlByb3BlcnR5TGlzdFhNTEZvcm1hdF92MV8wLCAwLCAmZXJyb3IpKTsK
LQotICAgIGlmICgheG1sRGF0YSkgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBy
ZXR1cm4gQ0ZFcnJvckNvcHlEZXNjcmlwdGlvbihlcnJvcik7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZSZXRhaW4oQ0ZTVFIoIkFuIHVua25vd24gZXJyb3Igb2Nj
dXJyZWQgY29udmVydGluZyBwcm9wZXJ0eSBsaXN0IHRvIGRhdGEuIikpKTsKLSAgICB9Ci0KLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHhtbFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVGcm9tRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB4bWxEYXRh
LmdldCgpLCBrQ0ZTdHJpbmdFbmNvZGluZ1VURjgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxl
U3RyaW5nUmVmPiBzdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgeG1sU3RyaW5nLmdldCgpKSk7Ci0KLSAgICAvLyBSZXBsYWNl
ICJBcHBsZSBDb21wdXRlciIgd2l0aCAiQXBwbGUiIGluIHRoZSBEVEQgZGVjbGFyYXRpb24uCi0g
ICAgQ0ZTdHJpbmdGaW5kQW5kUmVwbGFjZShzdHJpbmcuZ2V0KCksIENGU1RSKCItLy9BcHBsZSBD
b21wdXRlci8vIiksIENGU1RSKCItLy9BcHBsZS8vIiksIENGUmFuZ2VNYWtlKDAsIENGU3RyaW5n
R2V0TGVuZ3RoKHN0cmluZy5nZXQoKSkpLCAwKTsKLQotICAgIHJldHVybiBzdHJpbmcubGVha1Jl
ZigpOwotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2YvV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwYzU4MTg0ZTBmZDJjMWRm
ZjYxNDgyYWQzOTQ0NmNmNzJlNmJkZTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZi9XZWJBcmNoaXZlRHVtcFN1
cHBvcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRfaAotI2RlZmluZSBXZWJBcmNo
aXZlRHVtcFN1cHBvcnRfaAotCi0jaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRp
b24uaD4KLQotdHlwZWRlZiBzdHJ1Y3QgX0NGVVJMUmVzcG9uc2UqIENGVVJMUmVzcG9uc2VSZWY7
Ci0KLUNGU3RyaW5nUmVmIGNyZWF0ZVhNTFN0cmluZ0Zyb21XZWJBcmNoaXZlRGF0YShDRkRhdGFS
ZWYgd2ViQXJjaGl2ZURhdGEpOwotCi0vLyBNQVJLOiAtCi0vLyBNQVJLOiBQbGF0Zm9ybS1zcGVj
aWZpYyBtZXRob2RzCi0KLUNGVVJMUmVzcG9uc2VSZWYgY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21S
ZXNwb25zZURhdGEoQ0ZEYXRhUmVmIHJlc3BvbnNlRGF0YSk7Ci1DRkFycmF5UmVmIHN1cHBvcnRl
ZE5vbkltYWdlTUlNRVR5cGVzKCk7Ci0KLSNlbmRpZiAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnRf
aCAqLwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>