<?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>110061</bug_id>
          
          <creation_ts>2013-02-17 13:16:06 -0800</creation_ts>
          <short_desc>AX: rename WebAccessibilityObjectWrapper to WebAccessibilityObjectWrapperBase</short_desc>
          <delta_ts>2013-02-17 19:37:16 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>835025</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-17 13:16:06 -0800</bug_when>
    <thetext>Then that way WebAccessibilityObjectWrapperMac and WebAccessibilityObjectWrapperIOS can just be WebAccessibilityObjectWrapper and things will be a bit cleaner</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835028</commentid>
    <comment_count>1</comment_count>
      <attachid>188773</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-17 13:33:04 -0800</bug_when>
    <thetext>Created attachment 188773
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835029</commentid>
    <comment_count>2</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-17 13:34:21 -0800</bug_when>
    <thetext>Xcode keeps trying to reorder these other changes in the Xcode project, so maybe i shouldn&apos;t fight them anymore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835031</commentid>
    <comment_count>3</comment_count>
      <attachid>188775</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-17 13:49:27 -0800</bug_when>
    <thetext>Created attachment 188775
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835075</commentid>
    <comment_count>4</comment_count>
      <attachid>188775</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-02-17 18:35:40 -0800</bug_when>
    <thetext>Comment on attachment 188775
patch

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

r=me as long as you don&apos;t rename WebAccessibilityObjectWrapperMac.{h|mm} to remove &quot;Mac&quot; from the name.

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapper.mm:30
&gt; -#import &quot;WebAccessibilityObjectWrapperMac.h&quot;
&gt; +#import &quot;WebAccessibilityObjectWrapper.h&quot;

Please leave these files named as WebAccessibilityObjectWrapperMac.{h|mm} even though the class is named &quot;WebAccessibilityObjectWrapper&quot; so that it&apos;s easier to know which implementation is being included or compiled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835077</commentid>
    <comment_count>5</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2013-02-17 18:36:39 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Xcode keeps trying to reorder these other changes in the Xcode project, so maybe i shouldn&apos;t fight them anymore

Yes, whoever changed these files didn&apos;t use Xcode to change them since the UUID sort order is borked.  It&apos;s fine to let Xcode have its way with the project file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835087</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-02-17 19:37:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/143142</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188773</attachid>
            <date>2013-02-17 13:33:04 -0800</date>
            <delta_ts>2013-02-17 13:49:27 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>205085</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDI0IEBACiAyMDEzLTAyLTE3ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKKyAgICAgICAgQVg6IHJlbmFtZSBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0byBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDA2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmFtZSB0aGUgYmFzZSBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIgY2xhc3Mgc28gdGhhdCB0aGUgaU9T
IGNsYXNzIGNhbiBzaGFyZSB0aGUgc2FtZSBuYW1lLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphdHRhY2hX
cmFwcGVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5oOiBSZXBsYWNlZCB3aXRoIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmguCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06IFJlcGxhY2VkIHdp
dGggU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmguCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOiBSZW1vdmVkLgor
CisyMDEzLTAyLTE3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKICAg
ICAgICAgV2ViU3BlZWNoOiBwbHVtYiB0aHJvdWdoIGEgbWV0aG9kIHRvIGdlbmVyYXRlIGZha2Ug
c3BlZWNoIGpvYnMgZm9yIHRlc3RpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzM1MQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLmgJKHJldmlzaW9uIDE0MzEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDEzICsyNiwxMyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjX2gKLSNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWNfaAorI2lmbmRlZiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCisjZGVmaW5l
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKIAotI2ltcG9ydCAiV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIuaCIKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5oIgogCi1AaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
IDogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIKK0BpbnRlcmZhY2UgV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIgOiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UKIAog
QGVuZAogCi0jZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWNfaAorI2Vu
ZGlmIC8vIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaAkocmV2aXNpb24gMTQzMTM1KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjX2gKLSNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWNfaAotCi0jaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIgotCi1A
aW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjIDogV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIKLQotQGVuZAotCi0jZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0J
KHJldmlzaW9uIDE0MzEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsy
Nyw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5oIgorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIuaCIKIAogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKIApAQCAtMzUxLDcgKzM1MSw3IEBA
CiAjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRlIEAiQVhNYXRo
RmVuY2VkT3BlbiIKICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3NlQXR0cmli
dXRlIEAiQVhNYXRoRmVuY2VkQ2xvc2UiCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYworQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyCiAKIC0gKHZvaWQpdW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlFbGVtZW50CiB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMTQz
MTM1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzUzNyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCi0KLSNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCi0KLSNp
bXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJv
dy5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxp
dHlMaXN0Qm94LmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCi0jaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVNw
aW5CdXR0b24uaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgotI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1u
LmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKLSNpbXBvcnQgIkNocm9tZS5o
IgotI2ltcG9ydCAiQ2hyb21lQ2xpZW50LmgiCi0jaW1wb3J0ICJDb2xvck1hYy5oIgotI2ltcG9y
dCAiQ29udGV4dE1lbnVDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJGb250LmgiCi0jaW1wb3J0ICJG
cmFtZS5oIgotI2ltcG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lU2Vs
ZWN0aW9uLmgiCi0jaW1wb3J0ICJIVE1MQW5jaG9yRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEFy
ZWFFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKLSNpbXBvcnQg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbXBv
cnQgIkhUTUxOYW1lcy5oIgotI2ltcG9ydCAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgotI2ltcG9y
dCAiTG9jYWxpemVkU3RyaW5ncy5oIgotI2ltcG9ydCAiUGFnZS5oIgotI2ltcG9ydCAiUmVuZGVy
VGV4dENvbnRyb2wuaCIKLSNpbXBvcnQgIlJlbmRlclZpZXcuaCIKLSNpbXBvcnQgIlJlbmRlcldp
ZGdldC5oIgotI2ltcG9ydCAiU2Nyb2xsVmlldy5oIgotI2ltcG9ydCAiU2ltcGxlRm9udERhdGEu
aCIKLSNpbXBvcnQgIlRleHRDaGVja2VyQ2xpZW50LmgiCi0jaW1wb3J0ICJUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCIKLSNpbXBvcnQgIlRleHRJdGVyYXRvci5oIgotI2ltcG9ydCAiV2ViQ29yZUZyYW1l
Vmlldy5oIgotI2ltcG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKLSNpbXBvcnQgIldlYkNvcmVT
eXN0ZW1JbnRlcmZhY2UuaCIKLSNpbXBvcnQgImh0bWxlZGl0aW5nLmgiCi0jaW1wb3J0ICJ2aXNp
YmxlX3VuaXRzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLS8vIENlbGwgVGFibGVzCi0jaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2VsbHNBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZSBAIkFYU2VsZWN0ZWRDZWxscyIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZQotI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2VsbHNBdHRyaWJ1dGUgQCJBWFZpc2libGVDZWxscyIK
LSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRy
aWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0
ZSBAIkFYUm93SGVhZGVyVUlFbGVtZW50cyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Um93SW5k
ZXhSYW5nZUF0dHJpYnV0ZSBAIkFYUm93SW5kZXhSYW5nZSIKLSNlbmRpZgotCi0jaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4UmFuZ2VBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZSBAIkFYQ29sdW1uSW5kZXhSYW5nZSIKLSNl
bmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0
ZXJpemVkQXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRS
b3dQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhDZWxsRm9yQ29sdW1uQW5kUm93IgotI2VuZGlm
Ci0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5Q2VsbFJvbGUgQCJBWENlbGwiCi0jZW5kaWYKLQotLy8gTGlzdHMKLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5Q29udGVudExpc3RTdWJyb2xlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNvbnRl
bnRMaXN0U3Vicm9sZSBAIkFYQ29udGVudExpc3QiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlEZXNjcmlwdGlvbkxpc3RTdWJyb2xlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURl
c2NyaXB0aW9uTGlzdFN1YnJvbGUgQCJBWERlc2NyaXB0aW9uTGlzdCIKLSNlbmRpZgotCi0vLyBN
aXNjZWxsYW5lb3VzCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJp
YnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgQCJB
WEJsb2NrUXVvdGVMZXZlbCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFjY2Vz
c0tleUF0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGUg
QCJBWEFjY2Vzc0tleSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdl
QXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlIEAiQVhM
YW5ndWFnZSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmli
dXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlIEAiQVhSZXF1aXJl
ZCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGUKLSNk
ZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZSBAIkFYSW52YWxpZCIKLSNlbmRp
ZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5T3duc0F0dHJpYnV0ZSBAIkFYT3ducyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5R3JhYmJl
ZEF0dHJpYnV0ZSBAIkFYR3JhYmJlZCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eURyb3BFZmZlY3RzQXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3Rz
QXR0cmlidXRlIEAiQVhEcm9wRWZmZWN0cyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eUFSSUFMaXZlQXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFSSUFMaXZlQXR0
cmlidXRlIEAiQVhBUklBTGl2ZSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFS
SUFBdG9taWNBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QVJJQUF0b21pY0F0dHJp
YnV0ZSBAIkFYQVJJQUF0b21pYyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFS
SUFSZWxldmFudEF0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBUklBUmVsZXZhbnRB
dHRyaWJ1dGUgQCJBWEFSSUFSZWxldmFudCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJp
bGl0eUFSSUFCdXN5QXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFSSUFCdXN5QXR0
cmlidXRlIEAiQVhBUklBQnVzeSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxv
YWRpbmdQcm9ncmVzc0F0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMb2FkaW5nUHJv
Z3Jlc3NBdHRyaWJ1dGUgQCJBWExvYWRpbmdQcm9ncmVzcyIKLSNlbmRpZgotCi0jaWZuZGVmIE5T
QWNjZXNzaWJpbGl0eUhhc1BvcHVwQXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhh
c1BvcHVwQXR0cmlidXRlIEAiQVhIYXNQb3B1cCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNz
aWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZSBAIkFYUGxhY2Vob2xkZXJWYWx1ZSIKLSNlbmRpZgot
Ci0vLyBTZWFyY2gKLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50c0ZvclNlYXJjaFBy
ZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWFVJRWxl
bWVudHNGb3JTZWFyY2hQcmVkaWNhdGUiCi0jZW5kaWYKLQotLy8gU2VhcmNoIEtleXMKLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlBbnlUeXBlU2VhcmNoS2V5IEAiQVhBbnlUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleQotI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IEAiQVhCbG9ja3F1b3Rl
U2FtZUxldmVsU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Qmxv
Y2txdW90ZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNo
S2V5IEAiQVhCbG9ja3F1b3RlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5Qm9sZEZvbnRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRT
ZWFyY2hLZXkgQCJBWEJvbGRGb250U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5QnV0dG9uU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNl
YXJjaEtleSBAIkFYQnV0dG9uU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hT
ZWFyY2hLZXkgQCJBWENoZWNrQm94U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5Q29udHJvbFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDb250cm9s
U2VhcmNoS2V5IEAiQVhDb250cm9sU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlE
aWZmZXJlbnRUeXBlU2VhcmNoS2V5IEAiQVhEaWZmZXJlbnRUeXBlU2VhcmNoS2V5IgotI2VuZGlm
Ci0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleQotI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5IEAiQVhGb250Q2hhbmdlU2VhcmNoS2V5
IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNo
S2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSBAIkFY
Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5RnJhbWVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXkg
QCJBWEZyYW1lU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3Jh
cGhpY1NlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5IEAi
QVhHcmFwaGljU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVh
ZGluZ0xldmVsMVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwx
U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5Igot
I2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleQot
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IEAiQVhIZWFkaW5n
TGV2ZWwzU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGlu
Z0xldmVsNFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2Vh
cmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IgotI2Vu
ZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleQotI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2
ZWw2U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1Nh
bWVMZXZlbFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVs
U2VhcmNoS2V5IEAiQVhIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nU2VhcmNoS2V5IEAiQVhIZWFkaW5nU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXkgQCJBWEhpZ2hsaWdodGVkU2VhcmNoS2V5IgotI2Vu
ZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleQotI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5IEAiQVhJdGFsaWNGb250U2VhcmNo
S2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkK
LSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkgQCJBWExhbmRtYXJrU2Vh
cmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleQot
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5IEAiQVhMaW5rU2VhcmNoS2V5Igot
I2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleQotI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5IEAiQVhMaXN0U2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5IEAiQVhMaXZlUmVnaW9uU2VhcmNoS2V5Igot
I2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkK
LSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgQCJBWE1pc3Nw
ZWxsZWRXb3JkU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UGxh
aW5UZXh0U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtl
eSBAIkFYUGxhaW5UZXh0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5UmFkaW9Hcm91cFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3Vw
U2VhcmNoS2V5IEAiQVhSYWRpb0dyb3VwU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5U2FtZVR5cGVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U2Ft
ZVR5cGVTZWFyY2hLZXkgQCJBWFNhbWVUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5U3RhdGljVGV4dFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlTdGF0aWNUZXh0U2VhcmNoS2V5IEAiQVhTdGF0aWNUZXh0U2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXkKLSNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXkgQCJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5
IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hL
ZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWFRh
YmxlU2FtZUxldmVsU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
VGFibGVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXkgQCJB
WFRhYmxlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGV4dEZp
ZWxkU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleSBA
IkFYVGV4dEZpZWxkU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
VW5kZXJsaW5lU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJj
aEtleSBAIkFYVW5kZXJsaW5lU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVbnZp
c2l0ZWRMaW5rU2VhcmNoS2V5IEAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkKLSNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkgQCJBWFZpc2l0ZWRMaW5rU2VhcmNoS2V5
IgotI2VuZGlmCi0KLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQYXJh
bWV0ZXJpemVkQXR0cmlidXRlIEAiQVhUZXh0TWFya2VySXNWYWxpZCIKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYSW5k
ZXhGb3JUZXh0TWFya2VyIgotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyRm9ySW5k
ZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlIEAiQVhUZXh0TWFya2VyRm9ySW5kZXgiCi0KLS8vIE1h
dGggYXR0cmlidXRlcwotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJhZGljYW5kQXR0
cmlidXRlIEAiQVhNYXRoUm9vdFJhZGljYW5kIgotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRo
Um9vdEluZGV4QXR0cmlidXRlIEAiQVhNYXRoUm9vdEluZGV4IgotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlNYXRoRnJhY3Rpb25EZW5vbWluYXRvckF0dHJpYnV0ZSBAIkFYTWF0aEZyYWN0aW9uRGVu
b21pbmF0b3IiCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVyYXRvckF0
dHJpYnV0ZSBAIkFYTWF0aEZyYWN0aW9uTnVtZXJhdG9yIgotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlNYXRoQmFzZUF0dHJpYnV0ZSBAIkFYTWF0aEJhc2UiCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eU1hdGhTdWJzY3JpcHRBdHRyaWJ1dGUgQCJBWE1hdGhTdWJzY3JpcHQiCi0jZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eU1hdGhTdXBlcnNjcmlwdEF0dHJpYnV0ZSBAIkFYTWF0aFN1cGVyc2NyaXB0Igot
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoVW5kZXJBdHRyaWJ1dGUgQCJBWE1hdGhVbmRlciIK
LSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aE92ZXJBdHRyaWJ1dGUgQCJBWE1hdGhPdmVyIgot
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZSBAIkFYTWF0aEZl
bmNlZE9wZW4iCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRDbG9zZUF0dHJpYnV0
ZSBAIkFYTWF0aEZlbmNlZENsb3NlIgotCi1AaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMKLQotLSAodm9pZCl1bnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1l
bnQKLXsKLSAgICB3a1VucmVnaXN0ZXJVbmlxdWVJZEZvckVsZW1lbnQoc2VsZik7Ci19Ci0KLS0g
KHZvaWQpZGV0YWNoCi17Ci0gICAgLy8gU2VuZCB1bnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1l
bnQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2UgaWYgaXQgaXMKLSAgICAvLyBldmVyIGFjY2lkZW50
YWxseSBub3QgZG9uZSAodmlhIG90aGVyIGJ1Z3MgaW4gb3VyIEFYIGltcGxlbWVudGF0aW9uKSB5
b3UKLSAgICAvLyBlbmQgdXAgd2l0aCBhIGNyYXNoIGxpa2UgPHJkYXI6Ly9wcm9ibGVtLzQyNzMx
NDk+LiAgSXQgaXMgc2FmZSBhbmQgbm90Ci0gICAgLy8gZXhwZW5zaXZlIHRvIHNlbmQgZXZlbiBp
ZiB0aGUgb2JqZWN0IGlzIG5vdCByZWdpc3RlcmVkLgotICAgIFtzZWxmIHVucmVnaXN0ZXJVbmlx
dWVJZEZvclVJRWxlbWVudF07Ci0gICAgW3N1cGVyIGRldGFjaF07Ci19Ci0KLS0gKGlkKWF0dGFj
aG1lbnRWaWV3Ci17Ci0gICAgQVNTRVJUKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSk7Ci0gICAg
V2lkZ2V0KiB3aWRnZXQgPSBtX29iamVjdC0+d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKLSAg
ICBpZiAoIXdpZGdldCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gTlNBY2Nlc3Np
YmlsaXR5VW5pZ25vcmVkRGVzY2VuZGFudCh3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkpOwotfQot
Ci0jcHJhZ21hIG1hcmsgU3lzdGVtSW50ZXJmYWNlIHdyYXBwZXJzCi0KLXN0YXRpYyBpbmxpbmUg
aWQgQ0ZBdXRvcmVsZWFzZUhlbHBlcihDRlR5cGVSZWYgb2JqKQotewotICAgIGlmIChvYmopCi0g
ICAgICAgIENGTWFrZUNvbGxlY3RhYmxlKG9iaik7Ci0gICAgWyhpZClvYmogYXV0b3JlbGVhc2Vd
OwotICAgIHJldHVybiAoaWQpb2JqOwotfQotCi1zdGF0aWMgaW5saW5lIEJPT0wgQVhPYmplY3RJ
c1RleHRNYXJrZXIoaWQgb2JqKQotewotICAgIHJldHVybiBvYmogIT0gbmlsICYmIENGR2V0VHlw
ZUlEKG9iaikgPT0gd2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKTsKLX0KLQotc3RhdGljIGlubGlu
ZSBCT09MIEFYT2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UoaWQgb2JqKQotewotICAgIHJldHVybiBv
YmogIT0gbmlsICYmIENGR2V0VHlwZUlEKG9iaikgPT0gd2tHZXRBWFRleHRNYXJrZXJSYW5nZVR5
cGVJRCgpOwotfQotCi1zdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2UoaWQgc3RhcnRNYXJrZXIs
IGlkIGVuZE1hcmtlcikKLXsKLSAgICBBU1NFUlQoc3RhcnRNYXJrZXIgIT0gbmlsKTsKLSAgICBB
U1NFUlQoZW5kTWFya2VyICE9IG5pbCk7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKHN0YXJ0TWFy
a2VyKSA9PSB3a0dldEFYVGV4dE1hcmtlclR5cGVJRCgpKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBl
SUQoZW5kTWFya2VyKSA9PSB3a0dldEFYVGV4dE1hcmtlclR5cGVJRCgpKTsKLSAgICByZXR1cm4g
Q0ZBdXRvcmVsZWFzZUhlbHBlcih3a0NyZWF0ZUFYVGV4dE1hcmtlclJhbmdlKChDRlR5cGVSZWYp
c3RhcnRNYXJrZXIsIChDRlR5cGVSZWYpZW5kTWFya2VyKSk7Ci19Ci0KLXN0YXRpYyBpZCBBWFRl
eHRNYXJrZXJSYW5nZVN0YXJ0KGlkIHJhbmdlKQotewotICAgIEFTU0VSVChyYW5nZSAhPSBuaWwp
OwotICAgIEFTU0VSVChDRkdldFR5cGVJRChyYW5nZSkgPT0gd2tHZXRBWFRleHRNYXJrZXJSYW5n
ZVR5cGVJRCgpKTsKLSAgICByZXR1cm4gQ0ZBdXRvcmVsZWFzZUhlbHBlcih3a0NvcHlBWFRleHRN
YXJrZXJSYW5nZVN0YXJ0KHJhbmdlKSk7Ci19Ci0KLXN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5n
ZUVuZChpZCByYW5nZSkKLXsKLSAgICBBU1NFUlQocmFuZ2UgIT0gbmlsKTsKLSAgICBBU1NFUlQo
Q0ZHZXRUeXBlSUQocmFuZ2UpID09IHdrR2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQoKSk7Ci0g
ICAgcmV0dXJuIENGQXV0b3JlbGVhc2VIZWxwZXIod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VFbmQo
cmFuZ2UpKTsKLX0KLQotI3ByYWdtYSBtYXJrIFNlYXJjaCBoZWxwZXJzCi0KLXR5cGVkZWYgSGFz
aE1hcDxTdHJpbmcsIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IEFjY2Vzc2liaWxpdHlTZWFyY2hL
ZXlNYXA7Ci0KLXN0cnVjdCBTZWFyY2hLZXlFbnRyeSB7Ci0gICAgU3RyaW5nIGtleTsKLSAgICBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5IHZhbHVlOwotfTsKLQotc3RhdGljIEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlNYXAqIGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKQotewotICAgIGNv
bnN0IFNlYXJjaEtleUVudHJ5IHNlYXJjaEtleXNbXSA9IHsKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlBbnlUeXBlU2VhcmNoS2V5LCBBbnlUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSwgQmxvY2txdW90ZVNhbWVM
ZXZlbFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFy
Y2hLZXksIEJsb2NrcXVvdGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlC
b2xkRm9udFNlYXJjaEtleSwgQm9sZEZvbnRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlCdXR0b25TZWFyY2hLZXksIEJ1dHRvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUNoZWNrQm94U2VhcmNoS2V5LCBDaGVja0JveFNlYXJjaEtleSB9LAotICAg
ICAgICB7IE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBEaWZm
ZXJlbnRUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5n
ZVNlYXJjaEtleSwgRm9udENoYW5nZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSwgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEZyYW1lU2VhcmNoS2V5
IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgR3JhcGhpY1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hL
ZXksIEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWwyU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgSGVhZGluZ0xldmVsM1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hL
ZXksIEhlYWRpbmdMZXZlbDRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlI
ZWFkaW5nTGV2ZWw1U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleSwgSGVhZGluZ0xldmVsNlNl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFy
Y2hLZXksIEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlIZWFkaW5nU2VhcmNoS2V5LCBIZWFkaW5nU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXksIEhpZ2hsaWdodGVkU2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgSXRhbGljRm9u
dFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5
LCBMYW5kbWFya1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFy
Y2hLZXksIExpbmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0U2Vh
cmNoS2V5LCBMaXN0U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJl
Z2lvblNlYXJjaEtleSwgTGl2ZVJlZ2lvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eU1pc3NwZWxsZWRXb3JkU2VhcmNoS2V5LCBNaXNzcGVsbGVkV29yZFNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSwgUGxhaW5UZXh0
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtl
eSwgUmFkaW9Hcm91cFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVNhbWVU
eXBlU2VhcmNoS2V5LCBTYW1lVHlwZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eVN0YXRpY1RleHRTZWFyY2hLZXksIFN0YXRpY1RleHRTZWFyY2hLZXkgfSwKLSAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwgU3R5bGVDaGFuZ2VTZWFyY2hL
ZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSwg
VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJs
ZVNlYXJjaEtleSwgVGFibGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlU
ZXh0RmllbGRTZWFyY2hLZXksIFRleHRGaWVsZFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSwgVW5kZXJsaW5lU2VhcmNoS2V5IH0sCi0gICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSwgVW52aXNpdGVkTGlu
a1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNo
S2V5LCBWaXNpdGVkTGlua1NlYXJjaEtleSB9Ci0gICAgfTsKLSAgICAKLSAgICBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0eVNlYXJjaEtl
eU1hcDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoc2VhcmNo
S2V5cyk7IGkrKykKLSAgICAgICAgc2VhcmNoS2V5TWFwLT5zZXQoc2VhcmNoS2V5c1tpXS5rZXks
IHNlYXJjaEtleXNbaV0udmFsdWUpOwotICAgIAotICAgIHJldHVybiBzZWFyY2hLZXlNYXA7Ci19
Ci0KLXN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlG
b3JTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gQW55VHlwZVNlYXJjaEtleTsKLSAgICAKLSAgICBzdGF0aWMgY29u
c3QgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNz
aWJpbGl0eVNlYXJjaEtleU1hcCgpOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkg
c2VhcmNoS2V5ID0gc2VhcmNoS2V5TWFwLT5nZXQodmFsdWUpOwotICAgIAotICAgIHJldHVybiBz
ZWFyY2hLZXkgPyBzZWFyY2hLZXkgOiBBbnlUeXBlU2VhcmNoS2V5OwotfQotCi0jcHJhZ21hIG1h
cmsgVGV4dCBNYXJrZXIgaGVscGVycwotCi1zdGF0aWMgaWQgdGV4dE1hcmtlckZvclZpc2libGVQ
b3NpdGlvbihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNp
YmxlUG9zKQotewotICAgIEFTU0VSVChjYWNoZSk7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEg
dGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0
aW9uKHRleHRNYXJrZXJEYXRhLCB2aXNpYmxlUG9zKTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRh
LmF4SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmV0dXJuIENGQXV0b3JlbGVh
c2VIZWxwZXIod2tDcmVhdGVBWFRleHRNYXJrZXIoJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4
dE1hcmtlckRhdGEpKSk7Ci19Ci0KLS0gKGlkKXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246
KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmKXZpc2libGVQb3MKLXsKLSAgICByZXR1cm4gdGV4dE1h
cmtlckZvclZpc2libGVQb3NpdGlvbihtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB2aXNpYmxl
UG9zKTsKLX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0
TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDRlR5cGVSZWYgdGV4dE1hcmtlcikKLXsKLSAg
ICBBU1NFUlQoY2FjaGUpOwotICAgIAotICAgIGlmICghdGV4dE1hcmtlcikKLSAgICAgICAgcmV0
dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRh
OwotICAgIGlmICghd2tHZXRCeXRlc0Zyb21BWFRleHRNYXJrZXIodGV4dE1hcmtlciwgJnRleHRN
YXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkKLSAgICAgICAgcmV0dXJuIFZpc2li
bGVQb3NpdGlvbigpOwotICAgIAotICAgIHJldHVybiBjYWNoZS0+dmlzaWJsZVBvc2l0aW9uRm9y
VGV4dE1hcmtlckRhdGEodGV4dE1hcmtlckRhdGEpOwotfQotCi0tIChWaXNpYmxlUG9zaXRpb24p
dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjooaWQpdGV4dE1hcmtlcgotewotICAgIHJldHVy
biB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCks
IHRleHRNYXJrZXIpOwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZvclN0YXJ0T2ZUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSAqY2FjaGUsIGlkIHRleHRN
YXJrZXJSYW5nZSkKLXsKLSAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihj
YWNoZSwgQVhUZXh0TWFya2VyUmFuZ2VTdGFydCh0ZXh0TWFya2VyUmFuZ2UpKTsKLX0KLQotc3Rh
dGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JFbmRPZlRleHRNYXJrZXJSYW5n
ZShBWE9iamVjdENhY2hlICpjYWNoZSwgaWQgdGV4dE1hcmtlclJhbmdlKQotewotICAgIHJldHVy
biB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCBBWFRleHRNYXJrZXJSYW5nZUVu
ZCh0ZXh0TWFya2VyUmFuZ2UpKTsKLX0KLQotc3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZyb21N
YXJrZXJzKGlkIHRleHRNYXJrZXIxLCBpZCB0ZXh0TWFya2VyMikKLXsKLSAgICBpZiAoIXRleHRN
YXJrZXIxIHx8ICF0ZXh0TWFya2VyMikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBy
ZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlcjEsIHRleHRNYXJrZXIyKTsKLX0KLQot
Ly8gV2hlbiBtb2RpZnlpbmcgYXR0cmlidXRlZCBzdHJpbmdzLCB0aGUgcmFuZ2UgY2FuIGNvbWUg
ZnJvbSBhIHNvdXJjZSB3aGljaCBtYXkgcHJvdmlkZSBmYXVsdHkgaW5mb3JtYXRpb24gKGUuZy4g
dGhlIHNwZWxsIGNoZWNrZXIpLgotLy8gVG8gcHJvdGVjdCBhZ2FpbnN0IHN1Y2ggY2FzZXMgdGhl
IHJhbmdlIHNob3VsZCBiZSB2YWxpZGF0ZWQgYmVmb3JlIGFkZGluZyBvciByZW1vdmluZyBhdHRy
aWJ1dGVzLgotc3RhdGljIEJPT0wgQVhBdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc1ZhbGlkKE5TQXR0
cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTlNSYW5nZSByYW5nZSkKLXsKLSAgICByZXR1cm4g
KHJhbmdlLmxvY2F0aW9uIDwgW2F0dHJTdHJpbmcgbGVuZ3RoXSAmJiBOU01heFJhbmdlKHJhbmdl
KSA8PSBbYXR0clN0cmluZyBsZW5ndGhdKTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVT
dHJpbmdTZXRGb250KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5TU3Ry
aW5nKiBhdHRyaWJ1dGUsIE5TRm9udCogZm9udCwgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBpZiAo
IUFYQXR0cmlidXRlZFN0cmluZ1JhbmdlSXNWYWxpZChhdHRyU3RyaW5nLCByYW5nZSkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoZm9udCkgewotICAgICAgICBOU0RpY3Rpb25hcnkq
IGRpY3QgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9udCBmb250TmFtZV0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICwgTlNBY2Nlc3NpYmlsaXR5Rm9udE5hbWVLZXksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbZm9udCBmYW1pbHlOYW1lXSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICwgTlNBY2Nlc3NpYmlsaXR5Rm9udEZhbWlseUtleSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtmb250IGRpc3BsYXlOYW1lXSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBO
U0FjY2Vzc2liaWxpdHlWaXNpYmxlTmFtZUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6W2ZvbnQgcG9pbnRTaXplXV0gLCBOU0FjY2Vz
c2liaWxpdHlGb250U2l6ZUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07
Ci0gICAgICAgIAotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6YXR0cmlidXRlIHZh
bHVlOmRpY3QgcmFuZ2U6cmFuZ2VdOwotICAgIH0gZWxzZQotICAgICAgICBbYXR0clN0cmluZyBy
ZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKLSAgICAKLX0KLQotc3RhdGlj
IENHQ29sb3JSZWYgQ3JlYXRlQ0dDb2xvcklmRGlmZmVyZW50KE5TQ29sb3IqIG5zQ29sb3IsIENH
Q29sb3JSZWYgZXhpc3RpbmdDb2xvcikKLXsKLSAgICAvLyBnZXQgY29sb3IgaW5mb3JtYXRpb24g
YXNzdW1pbmcgTlNEZXZpY2VSR0JDb2xvclNwYWNlCi0gICAgTlNDb2xvciogcmdiQ29sb3IgPSBb
bnNDb2xvciBjb2xvclVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXTsK
LSAgICBpZiAocmdiQ29sb3IgPT0gbmlsKQotICAgICAgICByZ2JDb2xvciA9IFtOU0NvbG9yIGJs
YWNrQ29sb3JdOwotICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKLSAgICBbcmdiQ29sb3IgZ2V0
UmVkOiZjb21wb25lbnRzWzBdIGdyZWVuOiZjb21wb25lbnRzWzFdIGJsdWU6JmNvbXBvbmVudHNb
Ml0gYWxwaGE6JmNvbXBvbmVudHNbM11dOwotICAgIAotICAgIC8vIGNyZWF0ZSBhIG5ldyBDR0Nv
bG9yUmVmIHRvIHJldHVybgotICAgIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UgPSBDR0Nv
bG9yU3BhY2VDcmVhdGVEZXZpY2VSR0IoKTsKLSAgICBDR0NvbG9yUmVmIGNnQ29sb3IgPSBDR0Nv
bG9yQ3JlYXRlKGNnQ29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNlUmVs
ZWFzZShjZ0NvbG9yU3BhY2UpOwotICAgIAotICAgIC8vIGNoZWNrIGZvciBtYXRjaCB3aXRoIGV4
aXN0aW5nIGNvbG9yCi0gICAgaWYgKGV4aXN0aW5nQ29sb3IgJiYgQ0dDb2xvckVxdWFsVG9Db2xv
cihjZ0NvbG9yLCBleGlzdGluZ0NvbG9yKSkgewotICAgICAgICBDR0NvbG9yUmVsZWFzZShjZ0Nv
bG9yKTsKLSAgICAgICAgY2dDb2xvciA9IDA7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBjZ0Nv
bG9yOwotfQotCi1zdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TQ29s
b3IqIGNvbG9yLCBOU1JhbmdlIHJhbmdlKQotewotICAgIGlmICghQVhBdHRyaWJ1dGVkU3RyaW5n
UmFuZ2VJc1ZhbGlkKGF0dHJTdHJpbmcsIHJhbmdlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGlmIChjb2xvcikgewotICAgICAgICBDR0NvbG9yUmVmIGV4aXN0aW5nQ29sb3IgPSAoQ0dD
b2xvclJlZikgW2F0dHJTdHJpbmcgYXR0cmlidXRlOmF0dHJpYnV0ZSBhdEluZGV4OnJhbmdlLmxv
Y2F0aW9uIGVmZmVjdGl2ZVJhbmdlOm5pbF07Ci0gICAgICAgIENHQ29sb3JSZWYgY2dDb2xvciA9
IENyZWF0ZUNHQ29sb3JJZkRpZmZlcmVudChjb2xvciwgZXhpc3RpbmdDb2xvcik7Ci0gICAgICAg
IGlmIChjZ0NvbG9yKSB7Ci0gICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6YXR0
cmlidXRlIHZhbHVlOihpZCljZ0NvbG9yIHJhbmdlOnJhbmdlXTsKLSAgICAgICAgICAgIENHQ29s
b3JSZWxlYXNlKGNnQ29sb3IpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIFthdHRy
U3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotfQotCi1zdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nLCBOU1N0cmluZyogYXR0cmlidXRlLCBOU051bWJlciogbnVtYmVyLCBO
U1JhbmdlIHJhbmdlKQotewotICAgIGlmICghQVhBdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc1ZhbGlk
KGF0dHJTdHJpbmcsIHJhbmdlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChudW1i
ZXIpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6bnVt
YmVyIHJhbmdlOnJhbmdlXTsKLSAgICBlbHNlCi0gICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0
dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotfQotCi1zdGF0aWMgdm9pZCBBWEF0dHJp
YnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcs
IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgUmVuZGVyU3R5
bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgCi0gICAgLy8gc2V0IGJhc2ljIGZv
bnQgaW5mbwotICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9udChhdHRyU3RyaW5nLCBOU0FjY2Vz
c2liaWxpdHlGb250VGV4dEF0dHJpYnV0ZSwgc3R5bGUtPmZvbnQoKS5wcmltYXJ5Rm9udCgpLT5n
ZXROU0ZvbnQoKSwgcmFuZ2UpOwotICAgIAotICAgIC8vIHNldCBiYXNpYyBjb2xvcnMKLSAgICBB
WEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZvcmVn
cm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSksIHJhbmdlKTsKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRy
aWJ1dGUsIG5zQ29sb3Ioc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikpLCByYW5nZSk7Ci0gICAgCi0gICAgLy8gc2V0IHN1cGVyL3N1YiBzY3Jp
cHRpbmcKLSAgICBFVmVydGljYWxBbGlnbiBhbGlnbm1lbnQgPSBzdHlsZS0+dmVydGljYWxBbGln
bigpOwotICAgIGlmIChhbGlnbm1lbnQgPT0gU1VCKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmlu
Z1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRy
aWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoSW50OigtMSldLCByYW5nZSk7Ci0gICAgZWxzZSBp
ZiAoYWxpZ25tZW50ID09IFNVUEVSKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJl
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIFtO
U051bWJlciBudW1iZXJXaXRoSW50OjFdLCByYW5nZSk7Ci0gICAgZWxzZQotICAgICAgICBbYXR0
clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0
cmlidXRlIHJhbmdlOnJhbmdlXTsKLSAgICAKLSAgICAvLyBzZXQgc2hhZG93Ci0gICAgaWYgKHN0
eWxlLT50ZXh0U2hhZG93KCkpCi0gICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVNoYWRvd1RleHRBdHRyaWJ1dGUsIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdLCByYW5nZSk7Ci0gICAgZWxzZQotICAgICAgICBbYXR0clN0cmlu
ZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2hhZG93VGV4dEF0dHJpYnV0ZSByYW5n
ZTpyYW5nZV07Ci0gICAgCi0gICAgLy8gc2V0IHVuZGVybGluZSBhbmQgc3RyaWtldGhyb3VnaAot
ICAgIGludCBkZWNvciA9IHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIGlm
ICgoZGVjb3IgJiBVTkRFUkxJTkUpID09IDApIHsKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3Zl
QXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFu
Z2VdOwotICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5
VW5kZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKChkZWNvciAmIExJTkVfVEhST1VHSCkgPT0gMCkgewotICAgICAgICBbYXR0clN0cmlu
ZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1
dGUgcmFuZ2U6cmFuZ2VdOwotICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNB
Y2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07
Ci0gICAgfQotICAgIAotICAgIGlmICgoZGVjb3IgJiAoVU5ERVJMSU5FIHwgTElORV9USFJPVUdI
KSkgIT0gMCkgewotICAgICAgICAvLyBmaW5kIGNvbG9ycyB1c2luZyBxdWlyayBtb2RlIGFwcHJv
YWNoIChzdHJpY3QgbW9kZSB3b3VsZCB1c2UgY3VycmVudAotICAgICAgICAvLyBjb2xvciBmb3Ig
YWxsIGJ1dCB0aGUgcm9vdCBsaW5lIGJveCwgd2hpY2ggd291bGQgdXNlIGdldFRleHREZWNvcmF0
aW9uQ29sb3JzKQotICAgICAgICBDb2xvciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3Vn
aDsKLSAgICAgICAgcmVuZGVyZXItPmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY29yLCB1bmRl
cmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoKGRl
Y29yICYgVU5ERVJMSU5FKSAhPSAwKSB7Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRl
LCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwotICAgICAgICAgICAgQVhB
dHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxp
bmVDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lKSwgcmFuZ2UpOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoKGRlY29yICYgTElORV9USFJPVUdIKSAhPSAwKSB7
Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0Fj
Y2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldp
dGhCb29sOllFU10sIHJhbmdlKTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29s
b3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJp
YnV0ZSwgbnNDb2xvcihsaW5ldGhyb3VnaCksIHJhbmdlKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICAvLyBJbmRpY2F0ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodGluZy4KLSAgICBmb3IgKE5v
ZGUqIG5vZGUgPSByZW5kZXJlci0+bm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKG1hcmtUYWcpKQotICAgICAgICAg
ICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgQCJBWEhpZ2hsaWdodCIs
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCByYW5nZSk7Ci0gICAgfQotfQotCi1zdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jhbmdl
IHJhbmdlKQotewotICAgIGlmICghQVhBdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc1ZhbGlkKGF0dHJT
dHJpbmcsIHJhbmdlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iaiA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9y
Q3JlYXRlKHJlbmRlcmVyKTsKLSAgICBpbnQgcXVvdGVMZXZlbCA9IG9iai0+YmxvY2txdW90ZUxl
dmVsKCk7Ci0gICAgCi0gICAgaWYgKHF1b3RlTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFk
ZEF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgdmFsdWU6
W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cXVvdGVMZXZlbF0gcmFuZ2U6cmFuZ2VdOwotICAgIGVs
c2UKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJs
b2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci19Ci0KLXN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clN0cmluZywgTm9kZSogbm9kZSwgY29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgY2hhckxlbmd0aCwg
TlNSYW5nZSByYW5nZSkKLXsKLSAgICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChub2Rl
LT5kb2N1bWVudCgpLT5mcmFtZSgpKSkgewotICAgICAgICAvLyBDaGVjayB0aGUgc3BlbGxpbmcg
ZGlyZWN0bHkgc2luY2UgZG9jdW1lbnQtPm1hcmtlcnNGb3JOb2RlKCkgZG9lcyBub3Qgc3RvcmUg
dGhlIG1pc3NwZWxsZWQgbWFya2luZyB3aGVuIHRoZSBjdXJzb3IgaXMgaW4gYSB3b3JkLgotICAg
ICAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1l
KCktPmVkaXRvcigpLT50ZXh0Q2hlY2tlcigpOwotICAgICAgICAKLSAgICAgICAgLy8gY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxl
bWVudGVkIGluIFdLMSBhbmQgV0syCi0gICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IHJlc3VsdHM7Ci0gICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNoZWNrZXIsIGNoYXJzLCBj
aGFyTGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIHJlc3VsdHMpOwotICAgICAgICAK
LSAgICAgICAgc2l6ZV90IHNpemUgPSByZXN1bHRzLnNpemUoKTsKLSAgICAgICAgTlNOdW1iZXIq
IHRydWVWYWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdOwotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBjb25zdCBUZXh0
Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07Ci0gICAgICAgICAgICBBWEF0dHJp
YnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVk
VGV4dEF0dHJpYnV0ZSwgdHJ1ZVZhbHVlLCBOU01ha2VSYW5nZShyZXN1bHQubG9jYXRpb24gKyBy
YW5nZS5sb2NhdGlvbiwgcmVzdWx0Lmxlbmd0aCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgCi0gICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7Ci0gICAgd2hpbGUg
KGNoYXJMZW5ndGggPiAwKSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJz
ICsgY3VycmVudFBvc2l0aW9uOwotICAgICAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9
IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50ZXh0Q2hlY2tlcigpOwotICAg
ICAgICAKLSAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKLSAgICAgICAgaW50
IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKLSAgICAgICAgY2hlY2tlci0+Y2hlY2tTcGVsbGluZ09m
U3RyaW5nKGNoYXJEYXRhLCBjaGFyTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3Nw
ZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPT0gLTEgfHwg
IW1pc3NwZWxsaW5nTGVuZ3RoKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAg
ICBOU1JhbmdlIHNwZWxsUmFuZ2UgPSBOU01ha2VSYW5nZShyYW5nZS5sb2NhdGlvbiArIGN1cnJl
bnRQb3NpdGlvbiArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmls
aXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNd
LCBzcGVsbFJhbmdlKTsKLSAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlv
biArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNz
cGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGgpOwotICAgIH0KLX0KLQotc3RhdGlj
IHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5n
ZSkKLXsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYg
KCFBWEF0dHJpYnV0ZWRTdHJpbmdSYW5nZUlzVmFsaWQoYXR0clN0cmluZywgcmFuZ2UpKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gU29tZXRpbWVzIHRoZXJlIGFyZSBvYmplY3RzIGJl
dHdlZW4gdGhlIHRleHQgYW5kIHRoZSBoZWFkaW5nLgotICAgIC8vIEluIHRob3NlIGNhc2VzIHRo
ZSBwYXJlbnQgaGllcmFyY2h5IHNob3VsZCBiZSBxdWVyaWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBh
IGhlYWRpbmcgbGV2ZWwuCi0gICAgaW50IHBhcmVudEhlYWRpbmdMZXZlbCA9IDA7Ci0gICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXItPnBhcmVudCgpKTsKLSAgICBmb3Ig
KDsgcGFyZW50T2JqZWN0OyBwYXJlbnRPYmplY3QgPSBwYXJlbnRPYmplY3QtPnBhcmVudE9iamVj
dCgpKSB7Ci0gICAgICAgIHBhcmVudEhlYWRpbmdMZXZlbCA9IHBhcmVudE9iamVjdC0+aGVhZGlu
Z0xldmVsKCk7Ci0gICAgICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHBhcmVudEhlYWRpbmdMZXZlbCkKLSAgICAgICAg
W2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHZhbHVlOltOU051bWJl
ciBudW1iZXJXaXRoSW50OnBhcmVudEhlYWRpbmdMZXZlbF0gcmFuZ2U6cmFuZ2VdOwotICAgIGVs
c2UKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwi
IHJhbmdlOnJhbmdlXTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVt
ZW50KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5TU3RyaW5nKiBhdHRy
aWJ1dGUsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgTlNSYW5nZSByYW5nZSkKLXsKLSAg
ICBpZiAoIUFYQXR0cmlidXRlZFN0cmluZ1JhbmdlSXNWYWxpZChhdHRyU3RyaW5nLCByYW5nZSkp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAob2JqZWN0ICYmIG9iamVjdC0+aXNBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpIHsKLSAgICAgICAgLy8gbWFrZSBhIHNlcmlhbGl6YWJs
ZSBBWCBvYmplY3QKLSAgICAgICAgCi0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4ob2JqZWN0KS0+cmVuZGVyZXIo
KTsKLSAgICAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Ci0gICAgICAgIERvY3VtZW50KiBkb2MgPSByZW5kZXJlci0+ZG9jdW1lbnQoKTsKLSAgICAgICAg
aWYgKCFkb2MpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBBWE9iamVj
dENhY2hlKiBjYWNoZSA9IGRvYy0+YXhPYmplY3RDYWNoZSgpOwotICAgICAgICBpZiAoIWNhY2hl
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgQVhVSUVsZW1lbnRSZWYg
YXhFbGVtZW50ID0gd2tDcmVhdGVBWFVJRWxlbWVudFJlZihvYmplY3QtPndyYXBwZXIoKSk7Ci0g
ICAgICAgIGlmIChheEVsZW1lbnQpIHsKLSAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJp
YnV0ZTphdHRyaWJ1dGUgdmFsdWU6KGlkKWF4RWxlbWVudCByYW5nZTpyYW5nZV07Ci0gICAgICAg
ICAgICBDRlJlbGVhc2UoYXhFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAg
ICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKLX0K
LQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOb2RlKiBub2RlLCBjb25zdCBVQ2hhciogY2hhcnMs
IGludCBsZW5ndGgpCi17Ci0gICAgLy8gc2tpcCBpbnZpc2libGUgdGV4dAotICAgIGlmICghbm9k
ZS0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIGVhc2llciB0byBj
YWxjdWxhdGUgdGhlIHJhbmdlIGJlZm9yZSBhcHBlbmRpbmcgdGhlIHN0cmluZwotICAgIE5TUmFu
Z2UgYXR0clN0cmluZ1JhbmdlID0gTlNNYWtlUmFuZ2UoW2F0dHJTdHJpbmcgbGVuZ3RoXSwgbGVu
Z3RoKTsKLSAgICAKLSAgICAvLyBhcHBlbmQgdGhlIHN0cmluZyBmcm9tIHRoaXMgbm9kZQotICAg
IFtbYXR0clN0cmluZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRTdHJpbmc6W05TU3RyaW5nIHN0cmlu
Z1dpdGhDaGFyYWN0ZXJzOmNoYXJzIGxlbmd0aDpsZW5ndGhdXTsKLSAgICAKLSAgICAvLyBhZGQg
bmV3IGF0dHJpYnV0ZXMgYW5kIHJlbW92ZSBpcnJlbGV2YW50IGluaGVyaXRlZCBvbmVzCi0gICAg
Ly8gTk9URTogY29sb3IgYXR0cmlidXRlcyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYmVjYXVzZSAt
W05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOiB2YWx1ZTogcmFuZ2U6XSBk
b2VzIG5vdCBtZXJnZQotICAgIC8vIGlkZW50aWNhbCBjb2xvcnMuICBXb3JrYXJvdW5kIGlzIHRv
IG5vdCByZXBsYWNlIGFuIGV4aXN0aW5nIGNvbG9yIGF0dHJpYnV0ZSBpZiBpdCBtYXRjaGVzIHdo
YXQgd2UgYXJlIGFkZGluZy4gIFRoaXMgYWxzbyBtZWFucwotICAgIC8vIHdlIGNhbm5vdCBqdXN0
IHByZS1yZW1vdmUgYWxsIGluaGVyaXRlZCBhdHRyaWJ1dGVzIG9uIHRoZSBhcHBlbmRlZCBzdHJp
bmcsIHNvIHdlIGhhdmUgdG8gcmVtb3ZlIHRoZSBpcnJlbGV2YW50IG9uZXMgaW5kaXZpZHVhbGx5
LgotICAgIAotICAgIC8vIHJlbW92ZSBpbmhlcml0ZWQgYXR0YWNobWVudCBmcm9tIHByaW9yIEFY
QXR0cmlidXRlZFN0cmluZ0FwcGVuZFJlcGxhY2VkCi0gICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0
cmlidXRlOk5TQWNjZXNzaWJpbGl0eUF0dGFjaG1lbnRUZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJT
dHJpbmdSYW5nZV07Ci0gICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJp
bGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07Ci0gICAg
Ci0gICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHls
ZShhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOwotICAgIEFY
QXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVy
KCksIGF0dHJTdHJpbmdSYW5nZSk7Ci0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3Rl
TGV2ZWwoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsKLSAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
TGlua1RleHRBdHRyaWJ1dGUsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2hvckVsZW1lbnRGb3JO
b2RlKG5vZGUpLCBhdHRyU3RyaW5nUmFuZ2UpOwotICAgIAotICAgIC8vIGRvIHNwZWxsaW5nIGxh
c3QgYmVjYXVzZSBpdCB0ZW5kcyB0byBicmVhayB1cCB0aGUgcmFuZ2UKLSAgICBBWEF0dHJpYnV0
ZVN0cmluZ1NldFNwZWxsaW5nKGF0dHJTdHJpbmcsIG5vZGUsIGNoYXJzLCBsZW5ndGgsIGF0dHJT
dHJpbmdSYW5nZSk7Ci19Ci0KLXN0YXRpYyBOU1N0cmluZyogbnNTdHJpbmdGb3JSZXBsYWNlZE5v
ZGUoTm9kZSogcmVwbGFjZWROb2RlKQotewotICAgIC8vIHdlIHNob3VsZCBhbHdheXMgYmUgZ2l2
ZW4gYSByZW5kZXJlZCBub2RlIGFuZCBhIHJlcGxhY2VkIG5vZGUsIGJ1dCBiZSBzYWZlCi0gICAg
Ly8gcmVwbGFjZWQgbm9kZXMgYXJlIGVpdGhlciBhdHRhY2htZW50cyAod2lkZ2V0cykgb3IgaW1h
Z2VzCi0gICAgaWYgKCFyZXBsYWNlZE5vZGUgfHwgIXJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSB8
fCAhcmVwbGFjZWROb2RlLT5yZW5kZXJlcigpLT5pc1JlcGxhY2VkKCkgfHwgcmVwbGFjZWROb2Rl
LT5pc1RleHROb2RlKCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIC8vIGNyZWF0ZSBhbiBBWCBvYmplY3QsIGJ1
dCBza2lwIGl0IGlmIGl0IGlzIG5vdCBzdXBwb3NlZCB0byBiZSBzZWVuCi0gICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKS0+ZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBsYWNlZE5vZGUtPnJlbmRlcmVy
KCkpOwotICAgIGlmIChvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICAvLyB1c2UgdGhlIGF0dGFjaG1lbnRDaGFyYWN0ZXIgdG8gcmVw
cmVzZW50IHRoZSByZXBsYWNlZCBub2RlCi0gICAgY29uc3QgVW5pQ2hhciBhdHRhY2htZW50Q2hh
ciA9IE5TQXR0YWNobWVudENoYXJhY3RlcjsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dp
dGhDaGFyYWN0ZXJzOiZhdHRhY2htZW50Q2hhciBsZW5ndGg6MV07Ci19Ci0KLS0gKE5TQXR0cmli
dXRlZFN0cmluZyopZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6KGlkKXRl
eHRNYXJrZXJSYW5nZQotewotICAgIGlmICghbV9vYmplY3QpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgLy8gZXh0cmFjdCB0aGUgc3RhcnQgYW5kIGVuZCBWaXNpYmxlUG9zaXRpb24K
LSAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRWaXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b25Gb3JTdGFydE9mVGV4dE1hcmtlclJhbmdlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRl
eHRNYXJrZXJSYW5nZSk7Ci0gICAgaWYgKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxl
UG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JFbmRPZlRleHRNYXJrZXJSYW5nZShtX29iamVj
dC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOwotICAgIGlmIChlbmRWaXNpYmxl
UG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRpb24s
IGVuZFZpc2libGVQb3NpdGlvbik7Ci0gICAgLy8gaXRlcmF0ZSBvdmVyIHRoZSByYW5nZSB0byBi
dWlsZCB0aGUgQVggYXR0cmlidXRlZCBzdHJpbmcKLSAgICBOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
XTsKLSAgICBUZXh0SXRlcmF0b3IgaXQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBl
bmRWaXNpYmxlUG9zaXRpb24pLmdldCgpKTsKLSAgICB3aGlsZSAoIWl0LmF0RW5kKCkpIHsKLSAg
ICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmFu
Z2UKLSAgICAgICAgaW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBpdC5y
YW5nZSgpLT5zdGFydENvbnRhaW5lcihleGNlcHRpb24pOwotICAgICAgICBBU1NFUlQobm9kZSA9
PSBpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoZXhjZXB0aW9uKSk7Ci0gICAgICAgIGludCBvZmZz
ZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldChleGNlcHRpb24pOwotICAgICAgICAKLSAgICAg
ICAgLy8gbm9uLXplcm8gbGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVh
bnMgcmVwbGFjZWQgbm9kZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCi0gICAgICAgIGlmIChp
dC5sZW5ndGgoKSAhPSAwKSB7Ci0gICAgICAgICAgICAvLyBBZGQgdGhlIHRleHQgb2YgdGhlIGxp
c3QgbWFya2VyIGl0ZW0gaWYgbmVjZXNzYXJ5LgotICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJr
ZXJUZXh0ID0gbV9vYmplY3QtPmxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKG5vZGUs
IFZpc2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKLSAgICAgICAg
ICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIEFYQXR0
cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgbm9kZSwgbGlzdE1hcmtlclRleHQu
Y2hhcmFjdGVycygpLCBsaXN0TWFya2VyVGV4dC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgbm9kZSwg
aXQuY2hhcmFjdGVycygpLCBpdC5sZW5ndGgoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBOb2RlKiByZXBsYWNlZE5vZGUgPSBub2RlLT5jaGlsZE5vZGUob2Zmc2V0KTsKLSAgICAg
ICAgICAgIE5TU3RyaW5nICphdHRhY2htZW50U3RyaW5nID0gbnNTdHJpbmdGb3JSZXBsYWNlZE5v
ZGUocmVwbGFjZWROb2RlKTsKLSAgICAgICAgICAgIGlmIChhdHRhY2htZW50U3RyaW5nKSB7Ci0g
ICAgICAgICAgICAgICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2UgPSBOU01ha2VSYW5nZShbYXR0
clN0cmluZyBsZW5ndGhdLCBbYXR0YWNobWVudFN0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAvLyBhcHBlbmQgdGhlIHBsYWNlaG9sZGVyIHN0cmluZwot
ICAgICAgICAgICAgICAgIFtbYXR0clN0cmluZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRTdHJpbmc6
YXR0YWNobWVudFN0cmluZ107Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8g
cmVtb3ZlIGFsbCBpbmhlcml0ZWQgYXR0cmlidXRlcwotICAgICAgICAgICAgICAgIFthdHRyU3Ry
aW5nIHNldEF0dHJpYnV0ZXM6bmlsIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgLy8gYWRkIHRoZSBhdHRhY2htZW50IGF0dHJpYnV0ZQot
ICAgICAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHJlcGxhY2VkTm9kZS0+
cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBs
YWNlZE5vZGUtPnJlbmRlcmVyKCkpOwotICAgICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5n
U2V0RWxlbWVudChhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50VGV4dEF0dHJp
YnV0ZSwgb2JqLCBhdHRyU3RyaW5nUmFuZ2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgICAgIGl0LmFkdmFuY2UoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFthdHRyU3RyaW5n
IGF1dG9yZWxlYXNlXTsKLX0KLQotc3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxl
UG9zaXRpb25zKEFYT2JqZWN0Q2FjaGUgKmNhY2hlLCBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3Np
dGlvbiwgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKQotewotICAgIGlkIHN0YXJ0VGV4dE1h
cmtlciA9IHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oY2FjaGUsIHN0YXJ0UG9zaXRpb24p
OwotICAgIGlkIGVuZFRleHRNYXJrZXIgPSB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGNh
Y2hlLCBlbmRQb3NpdGlvbik7Ci0gICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJz
KHN0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtlcik7Ci19Ci0KLS0gKGlkKXRleHRNYXJrZXJS
YW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOihWaXNpYmxlUG9zaXRpb24pc3RhcnRQb3NpdGlvbiBl
bmRQb3NpdGlvbjooVmlzaWJsZVBvc2l0aW9uKWVuZFBvc2l0aW9uCi17Ci0gICAgcmV0dXJuIHRl
eHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKG1fb2JqZWN0LT5heE9iamVjdENhY2hl
KCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLX0KLQotLSAoTlNBcnJheSopYWNjZXNz
aWJpbGl0eUFjdGlvbk5hbWVzCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5n
U3RvcmVdKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHN0YXRpYyBOU0FycmF5KiBh
Y3Rpb25FbGVtZW50QWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBO
U0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24s
IG5pbF07Ci0gICAgc3RhdGljIE5TQXJyYXkqIGRlZmF1bHRFbGVtZW50QWN0aW9ucyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlv
biwgbmlsXTsKLSAgICBzdGF0aWMgTlNBcnJheSogbWVudUVsZW1lbnRBY3Rpb25zID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbiwg
TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIG5pbF07Ci0gICAgc3RhdGljIE5TQXJyYXkqIHNs
aWRlckFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3Np
YmlsaXR5SW5jcmVtZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb24sIG5p
bF07Ci0gICAgCi0gICAgTlNBcnJheSAqYWN0aW9uczsKLSAgICBpZiAobV9vYmplY3QtPmFjdGlv
bkVsZW1lbnQoKSB8fCBtX29iamVjdC0+aXNCdXR0b24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFj
dGlvbkVsZW1lbnRBY3Rpb25zOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnVSZWxhdGVk
KCkpCi0gICAgICAgIGFjdGlvbnMgPSBtZW51RWxlbWVudEFjdGlvbnM7Ci0gICAgZWxzZSBpZiAo
bV9vYmplY3QtPmlzU2xpZGVyKCkpCi0gICAgICAgIGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOwot
ICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgYWN0aW9ucyA9
IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKLSAgICBl
bHNlCi0gICAgICAgIGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlvbnM7Ci0gICAgCi0gICAg
cmV0dXJuIGFjdGlvbnM7Ci19Ci0KLS0gKE5TQXJyYXkqKWFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5
QXR0cmlidXRlTmFtZXMKLXsKLSAgICBpZiAoIW1fb2JqZWN0KQotICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIE5TTXV0YWJsZUFycmF5ICphZGRpdGlvbmFsID0gW05TTXV0YWJsZUFycmF5
IGFycmF5XTsKLSAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzQVJJQU93bnMoKSkKLSAgICAgICAg
W2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOwotICAg
IAotICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBRXhwYW5kZWQoKSkKLSAgICAgICAgW2Fk
ZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRlXTsKLSAg
ICAKLSAgICBpZiAobV9vYmplY3QtPmlzU2Nyb2xsYmFyKCkpCi0gICAgICAgIFthZGRpdGlvbmFs
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgCi0g
ICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c0FSSUFEcmFnZ2luZygpKQotICAgICAgICBbYWRkaXRp
b25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV07Ci0gICAgCi0g
ICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c0FSSUFEcm9wcGluZygpKQotICAgICAgICBbYWRkaXRp
b25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOwotICAg
IAotICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAmJiBzdGF0aWNfY2Fz
dDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCktPnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkp
Ci0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJv
d3NBdHRyaWJ1dGVdOwotICAgIAotICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBTGl2ZVJl
Z2lvbigpKSB7Ci0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlB
UklBTGl2ZUF0dHJpYnV0ZV07Ci0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlBUklBUmVsZXZhbnRBdHRyaWJ1dGVdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9v
YmplY3QtPnNvcnREaXJlY3Rpb24oKSAhPSBTb3J0RGlyZWN0aW9uTm9uZSkKLSAgICAgICAgW2Fk
ZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGVd
OwotICAgIAotICAgIC8vIElmIGFuIG9iamVjdCBpcyBhIGNoaWxkIG9mIGEgbGl2ZSByZWdpb24s
IHRoZW4gYWRkIHRoZXNlCi0gICAgaWYgKG1fb2JqZWN0LT5pc0luc2lkZUFSSUFMaXZlUmVnaW9u
KCkpCi0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQXRv
bWljQXR0cmlidXRlXTsKLSAgICAvLyBBbGwgb2JqZWN0cyBzaG91bGQgZXhwb3NlIHRoZSBBUklB
IGJ1c3kgYXR0cmlidXRlIChBUklBIDEuMSB3aXRoIElTU1VFLTUzOCkuCi0gICAgW2FkZGl0aW9u
YWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFCdXN5QXR0cmlidXRlXTsKLSAgICAKLSAg
ICAvLyBQb3B1cCBidXR0b25zIG9uIHRoZSBNYWMgZXhwb3NlIHRoZSB2YWx1ZSBhdHRyaWJ1dGUu
Ci0gICAgaWYgKG1fb2JqZWN0LT5pc1BvcFVwQnV0dG9uKCkpCi0gICAgICAgIFthZGRpdGlvbmFs
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgCi0gICAgaWYg
KG1fb2JqZWN0LT5hcmlhSGFzUG9wdXAoKSkKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUhhc1BvcHVwQXR0cmlidXRlXTsKLSAgICAKLSAgICBpZiAobV9vYmpl
Y3QtPmlzTWF0aFJvb3QoKSkgewotICAgICAgICAvLyBUaGUgaW5kZXggb2YgYSBzcXVhcmUgcm9v
dCBpcyBhbHdheXMga25vd24sIHNvIHRoZXJlJ3Mgbm8gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBp
dC4KLSAgICAgICAgaWYgKCFtX29iamVjdC0+aXNNYXRoU3F1YXJlUm9vdCgpKQotICAgICAgICAg
ICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhSb290SW5kZXhBdHRy
aWJ1dGVdOwotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0
aFJvb3RSYWRpY2FuZEF0dHJpYnV0ZV07Ci0gICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNNYXRo
RnJhY3Rpb24oKSkgewotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5TWF0aEZyYWN0aW9uTnVtZXJhdG9yQXR0cmlidXRlXTsKLSAgICAgICAgW2FkZGl0aW9uYWwg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbkRlbm9taW5hdG9yQXR0cmlidXRl
XTsKLSAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgp
KSB7Ci0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoQmFz
ZUF0dHJpYnV0ZV07Ci0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlNYXRoU3Vic2NyaXB0QXR0cmlidXRlXTsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eU1hdGhTdXBlcnNjcmlwdEF0dHJpYnV0ZV07Ci0gICAgfSBlbHNlIGlm
IChtX29iamVjdC0+aXNNYXRoVW5kZXJPdmVyKCkpIHsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXTsKLSAgICAgICAgW2FkZGl0
aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhVbmRlckF0dHJpYnV0ZV07Ci0gICAg
ICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoT3ZlckF0dHJpYnV0
ZV07Ci0gICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkpIHsKLSAgICAgICAg
W2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmli
dXRlXTsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhG
ZW5jZWRDbG9zZUF0dHJpYnV0ZV07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBhZGRpdGlvbmFs
OwotfQotCi0tIChOU0FycmF5KilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKLXsKLSAgICBp
ZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKLSAg
ICAKLSAgICBzdGF0aWMgTlNBcnJheSogYXR0cmlidXRlcyA9IG5pbDsKLSAgICBzdGF0aWMgTlNB
cnJheSogYW5jaG9yQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHdlYkFyZWFBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGV4dEF0dHJzID0gbmlsOwotICAgIHN0YXRp
YyBOU0FycmF5KiBsaXN0QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGxpc3RCb3hB
dHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogcmFuZ2VBdHRycyA9IG5pbDsKLSAgICBz
dGF0aWMgTlNBcnJheSogY29tbW9uTWVudUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5
KiBtZW51QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG1lbnVCYXJBdHRycyA9IG5p
bDsKLSAgICBzdGF0aWMgTlNBcnJheSogbWVudUl0ZW1BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMg
TlNBcnJheSogbWVudUJ1dHRvbkF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBjb250
cm9sQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHRhYmxlQXR0cnMgPSBuaWw7Ci0g
ICAgc3RhdGljIE5TQXJyYXkqIHRhYmxlUm93QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJy
YXkqIHRhYmxlQ29sQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHRhYmxlQ2VsbEF0
dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBncm91cEF0dHJzID0gbmlsOwotICAgIHN0
YXRpYyBOU0FycmF5KiBpbnB1dEltYWdlQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkq
IHBhc3N3b3JkRmllbGRBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFiTGlzdEF0
dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBjb21ib0JveEF0dHJzID0gbmlsOwotICAg
IHN0YXRpYyBOU0FycmF5KiBvdXRsaW5lQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkq
IG91dGxpbmVSb3dBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogYnV0dG9uQXR0cnMg
PSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHNjcm9sbFZpZXdBdHRycyA9IG5pbDsKLSAgICBz
dGF0aWMgTlNBcnJheSogaW5jcmVtZW50b3JBdHRycyA9IG5pbDsKLSAgICBOU011dGFibGVBcnJh
eSogdGVtcEFycmF5OwotICAgIGlmIChhdHRyaWJ1dGVzID09IG5pbCkgewotICAgICAgICBhdHRy
aWJ1dGVzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0
eVJvbGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U3Vi
cm9sZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xl
RGVzY3JpcHRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5SGVscEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQ
YXJlbnRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9z
aXRpb25BdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2l6
ZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0
dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlv
bkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0
dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRy
aWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmli
dXRlLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgQCJBWFN0YXJ0VGV4dE1hcmtlciIsCi0gICAgICAgICAg
ICAgICAgICAgICAgQCJBWEVuZFRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAi
QVhWaXNpdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlMaW5rZWRV
SUVsZW1lbnRzQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBuaWxdOwotICAgIH0KLSAgICBpZiAoY29tbW9uTWVudUF0dHJzID09IG5pbCkgewotICAgICAg
ICBjb21tb25NZW51QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNB
Y2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgfQotICAgIGlmIChhbmNob3JB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9y
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAg
ICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHdlYkFyZWFBdHRycyA9PSBu
aWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExp
bmtVSUVsZW1lbnRzIl07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OkAiQVhMb2FkZWQi
XTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExheW91dENvdW50Il07Ci0gICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9ncmVzc0F0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVS
TEF0dHJpYnV0ZV07Ci0gICAgICAgIHdlYkFyZWFBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAg
IH0KLSAgICBpZiAodGV4dEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV07
Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluc2VydGlvblBv
aW50TGluZU51bWJlckF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwot
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmli
dXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vo
b2xkZXJWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2Vd
OwotICAgIH0KLSAgICBpZiAobGlzdEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAg
ICAgIGxpc3RBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXld
OwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAobGlzdEJveEF0
dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5Omxpc3RBdHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKLSAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAg
ICAgIGxpc3RCb3hBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJy
YXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAocmFuZ2VB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsK
LSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlw
dGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgcmFuZ2VBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5
IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAobWVudUJhckF0dHJzID09IG5pbCkgewotICAgICAg
ICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1v
bk1lbnVBdHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwotICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07
Ci0gICAgICAgIG1lbnVCYXJBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0
ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAo
bWVudUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107Ci0gICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwot
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRy
ZW5BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVBdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJl
bGVhc2VdOwotICAgIH0KLSAgICBpZiAobWVudUl0ZW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
dGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25N
ZW51QXR0cnNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlU
aXRsZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUhlbHBBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
OihOU1N0cmluZyopa0FYTWVudUl0ZW1DbWRDaGFyQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhNZW51SXRlbUNtZFZpcnR1YWxLZXlBdHRyaWJ1
dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWE1lbnVJdGVt
Q21kR2x5cGhBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJp
bmcqKWtBWE1lbnVJdGVtQ21kTW9kaWZpZXJzQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhNZW51SXRlbU1hcmtDaGFyQXR0cmlidXRlXTsKLSAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhNZW51SXRlbVByaW1hcnlV
SUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlTZXJ2ZXNBc1RpdGxlRm9yVUlFbGVtZW50c0F0dHJpYnV0ZV07Ci0gICAgICAgIG1l
bnVJdGVtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsK
LSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKG1lbnVCdXR0b25B
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgbWVudUJ1dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJp
YnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9u
QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2l6
ZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVdp
bmRvd0F0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eUVuYWJsZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2li
aWxpdHlGb2N1c2VkQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0Fj
Y2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwgbmlsXTsKLSAgICB9Ci0gICAgaWYgKGNvbnRy
b2xBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwot
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJp
YnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFs
aWRBdHRyaWJ1dGVdOwotICAgICAgICBjb250cm9sQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAg
ICB9Ci0gICAgaWYgKGluY3JlbWVudG9yQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJh
eSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEJ1dHRv
bkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eURlY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZV07Ci0gICAgICAgIGluY3JlbWVudG9yQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBB
cnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKGJ1dHRvbkF0dHJzID09IG5pbCkgewotICAg
ICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdOwotICAgICAgICAvLyBCdXR0b25zIHNob3VsZCBub3QgZXhwb3NlIEFYVmFsdWUu
Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0
cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0
bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwotICAgICAgICBidXR0b25BdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFy
cmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAoY29tYm9Cb3hBdHRycyA9PSBuaWwpIHsKLSAg
ICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpj
b250cm9sQXR0cnNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlFeHBhbmRlZEF0dHJpYnV0ZV07Ci0gICAgICAgIGNvbWJvQm94QXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxl
YXNlXTsKLSAgICB9Ci0gICAgaWYgKHRhYmxlQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBB
cnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107
Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1
dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxl
Um93c0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUNvbHVtbnNBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZV07Ci0gICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyAqKWtBWENvbHVtbkhlYWRlclVJRWxlbWVu
dHNBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAodGFibGVSb3dBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5SW5kZXhBdHRyaWJ1dGVdOwotICAgICAgICB0YWJsZVJvd0F0dHJzID0gW1tOU0FycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVs
ZWFzZV07Ci0gICAgfQotICAgIGlmICh0YWJsZUNvbEF0dHJzID09IG5pbCkgewotICAgICAgICB0
ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0
ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhl
YWRlckF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eVJvd3NBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlQ29sQXR0cnMgPSBb
W05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBB
cnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHRhYmxlQ2VsbEF0dHJzID09IG5pbCkgewot
ICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OmF0dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxl
Q2VsbEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChncm91cEF0dHJzID09
IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGdyb3VwQXR0cnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3Rl
bXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKGlucHV0SW1hZ2VBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTpidXR0b25BdHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJl
bGVhc2VdOwotICAgIH0KLSAgICBpZiAocGFzc3dvcmRGaWVsZEF0dHJzID09IG5pbCkgewotICAg
ICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlU
aXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwot
ICAgICAgICBwYXNzd29yZEZpZWxkQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAg
aWYgKHRhYkxpc3RBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKLSAg
ICAgICAgdGFiTGlzdEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBB
cnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChvdXRs
aW5lQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsK
LSAgICAgICAgb3V0bGluZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChv
dXRsaW5lUm93QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRyc107Ci0gICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdOwotICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRCeVJvd0F0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURp
c2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOwotICAgICAgICBvdXRsaW5lUm93
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAg
ICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHNjcm9sbFZpZXdBdHRycyA9
PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKLSAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJB
dHRyaWJ1dGVdOwotICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAg
ICB9Ci0gICAgCi0gICAgTlNBcnJheSAqb2JqZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Ci0g
ICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAgICAgb2JqZWN0
QXR0cmlidXRlcyA9IHBhc3N3b3JkRmllbGRBdHRyczsKLSAgICAKLSAgICBlbHNlIGlmIChtX29i
amVjdC0+aXNXZWJBcmVhKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB3ZWJBcmVhQXR0
cnM7Ci0gICAgCi0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IHRleHRBdHRyczsKLSAgICAKLSAgICBlbHNlIGlmIChtX29i
amVjdC0+aXNBbmNob3IoKSB8fCBtX29iamVjdC0+aXNJbWFnZSgpIHx8IG1fb2JqZWN0LT5pc0xp
bmsoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGFuY2hvckF0dHJzOwotICAgIAotICAg
IGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAgICBvYmpl
Y3RBdHRyaWJ1dGVzID0gdGFibGVBdHRyczsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJs
ZUNvbHVtbigpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRyczsKLSAg
ICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgb2JqZWN0QXR0cmli
dXRlcyA9IHRhYmxlQ2VsbEF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1RhYmxlUm93
KCkpIHsKLSAgICAgICAgLy8gQW4gQVJJQSB0YWJsZSByb3cgY2FuIGJlIGNvbGxhcHNlZCBhbmQg
ZXhwYW5kZWQsIHNvIGl0IG5lZWRzIHRoZSBleHRyYSBhdHRyaWJ1dGVzLgotICAgICAgICBpZiAo
bV9vYmplY3QtPmlzQVJJQVRyZWVHcmlkUm93KCkpCi0gICAgICAgICAgICBvYmplY3RBdHRyaWJ1
dGVzID0gb3V0bGluZVJvd0F0dHJzOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvYmplY3RB
dHRyaWJ1dGVzID0gdGFibGVSb3dBdHRyczsKLSAgICB9Ci0gICAgCi0gICAgZWxzZSBpZiAobV9v
YmplY3QtPmlzVHJlZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0bGluZUF0dHJz
OwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCi0gICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSBvdXRsaW5lUm93QXR0cnM7Ci0gICAgCi0gICAgZWxzZSBpZiAobV9vYmplY3Qt
PmlzTGlzdEJveCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbGlzdEJveEF0dHJzOwot
ICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0xpc3QoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRl
cyA9IGxpc3RBdHRyczsKLSAgICAKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNDb21ib0JveCgp
KQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gY29tYm9Cb3hBdHRyczsKLSAgICAKLSAgICBl
bHNlIGlmIChtX29iamVjdC0+aXNQcm9ncmVzc0luZGljYXRvcigpIHx8IG1fb2JqZWN0LT5pc1Ns
aWRlcigpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gcmFuZ2VBdHRyczsKLSAgICAKLSAg
ICAvLyBUaGVzZSBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJlY2F1c2UgYW4gaW5wdXQgaW1hZ2Ug
aXMgYSBidXR0b24sIGFuZCBhIGJ1dHRvbiBpcyBhIGNvbnRyb2wuCi0gICAgZWxzZSBpZiAobV9v
YmplY3QtPmlzSW5wdXRJbWFnZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gaW5wdXRJ
bWFnZUF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0J1dHRvbigpKQotICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gYnV0dG9uQXR0cnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlz
Q29udHJvbCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gY29udHJvbEF0dHJzOwotICAg
IAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0dyb3VwKCkgfHwgbV9vYmplY3QtPmlzTGlzdEl0
ZW0oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGdyb3VwQXR0cnM7Ci0gICAgZWxzZSBp
ZiAobV9vYmplY3QtPmlzVGFiTGlzdCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFi
TGlzdEF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1Njcm9sbFZpZXcoKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IHNjcm9sbFZpZXdBdHRyczsKLSAgICBlbHNlIGlmIChtX29i
amVjdC0+aXNTcGluQnV0dG9uKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBpbmNyZW1l
bnRvckF0dHJzOwotICAgIAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnUoKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVBdHRyczsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+
aXNNZW51QmFyKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51QmFyQXR0cnM7Ci0g
ICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTWVudUJ1dHRvbigpKQotICAgICAgICBvYmplY3RBdHRy
aWJ1dGVzID0gbWVudUJ1dHRvbkF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnVJ
dGVtKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51SXRlbUF0dHJzOwotICAgIAot
ICAgIE5TQXJyYXkgKmFkZGl0aW9uYWxBdHRyaWJ1dGVzID0gW3NlbGYgYWRkaXRpb25hbEFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVOYW1lc107Ci0gICAgaWYgKFthZGRpdGlvbmFsQXR0cmlidXRlcyBj
b3VudF0pCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBbb2JqZWN0QXR0cmlidXRlcyBhcnJh
eUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQXR0cmlidXRlc107Ci0gICAgCi0g
ICAgcmV0dXJuIG9iamVjdEF0dHJpYnV0ZXM7Ci19Ci0KLS0gKFZpc2libGVQb3NpdGlvblJhbmdl
KXZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOihpZCl0ZXh0TWFya2VyUmFu
Z2UKLXsKLSAgICBpZiAoIXRleHRNYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvblJhbmdlKCk7Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBtX29iamVjdC0+YXhP
YmplY3RDYWNoZSgpOwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9z
aXRpb25Gb3JTdGFydE9mVGV4dE1hcmtlclJhbmdlKGNhY2hlLCB0ZXh0TWFya2VyUmFuZ2UpLCB2
aXNpYmxlUG9zaXRpb25Gb3JFbmRPZlRleHRNYXJrZXJSYW5nZShjYWNoZSwgdGV4dE1hcmtlclJh
bmdlKSk7Ci19Ci0KLS0gKE5TQXJyYXkqKXJlbmRlcldpZGdldENoaWxkcmVuCi17Ci0gICAgV2lk
Z2V0KiB3aWRnZXQgPSBtX29iamVjdC0+d2lkZ2V0KCk7Ci0gICAgaWYgKCF3aWRnZXQpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFsod2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpKSBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6IE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlXTsKLX0KLQotLSAoaWQpcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdAotewotICAg
IGlmICghbV9vYmplY3QpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJh
bWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJl
dHVybiBmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0
KCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiB2ZWN0b3IpCi17
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gW2FycmF5IGNvdW50XTsKLSAgICB2ZWN0b3IucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBs
ZW5ndGg7ICsraSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBbW2FycmF5
IG9iamVjdEF0SW5kZXg6aV0gYWNjZXNzaWJpbGl0eU9iamVjdF07Ci0gICAgICAgIGlmIChvYmop
Ci0gICAgICAgICAgICB2ZWN0b3IuYXBwZW5kKG9iaik7Ci0gICAgfQotfQotCi1zdGF0aWMgTlNN
dXRhYmxlQXJyYXkqIGNvbnZlcnRUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiB2ZWN0b3IpCi17Ci0gICAgdW5zaWduZWQgbGVu
Z3RoID0gdmVjdG9yLnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6IGxlbmd0aF07Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyKiB3cmFwcGVyID0gdmVjdG9yW2ldLT53cmFwcGVyKCk7Ci0gICAgICAgIEFTU0VSVCh3
cmFwcGVyKTsKLSAgICAgICAgaWYgKHdyYXBwZXIpIHsKLSAgICAgICAgICAgIC8vIHdlIHdhbnQg
dG8gcmV0dXJuIHRoZSBhdHRhY2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJl
c2VudGluZyB0aGUgYXR0YWNobWVudC4KLSAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgZ2V0
IHBhbGluZHJvbWUgZXJyb3JzIGluIHRoZSBBWCBoaWVyYXJjaHkKLSAgICAgICAgICAgIGlmICh2
ZWN0b3JbaV0tPmlzQXR0YWNobWVudCgpICYmIFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSkKLSAg
ICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Olt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XV07
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDp3cmFw
cGVyXTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLS0gKGlkKXRl
eHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbgotewotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0
aW9uID0gbV9vYmplY3QtPnNlbGVjdGlvbigpOwotICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZy
b21WaXNpYmxlUG9zaXRpb25zOnNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSBlbmRQb3NpdGlvbjpz
ZWxlY3Rpb24udmlzaWJsZUVuZCgpXTsKLX0KLQotLSAoTlNWYWx1ZSAqKXBvc2l0aW9uCi17Ci0g
ICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJl
Y3QoKSk7Ci0gICAgTlNQb2ludCBwb2ludDsKLSAgICAKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmlldygpOwotICAgIAotICAgIC8vIFdlYktpdDEg
Y29kZSBwYXRoLi4uIHBsYXRmb3JtV2lkZ2V0KCkgZXhpc3RzLgotICAgIGlmIChmcmFtZVZpZXcg
JiYgZnJhbWVWaWV3LT5wbGF0Zm9ybVdpZGdldCgpKSB7Ci0gICAgICAgIAotICAgICAgICAvLyBU
aGUgQ29jb2EgYWNjZXNzaWJpbGl0eSBBUEkgd2FudHMgdGhlIGxvd2VyLWxlZnQgY29ybmVyLgot
ICAgICAgICBwb2ludCA9IE5TTWFrZVBvaW50KHJlY3QueCgpLCByZWN0Lm1heFkoKSk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAoZnJhbWVWaWV3KSB7Ci0gICAgICAgICAgICBOU1ZpZXcqIHZpZXcg
PSBmcmFtZVZpZXctPmRvY3VtZW50VmlldygpOwotICAgICAgICAgICAgcG9pbnQgPSBbW3ZpZXcg
d2luZG93XSBjb252ZXJ0QmFzZVRvU2NyZWVuOlt2aWV3IGNvbnZlcnRQb2ludDogcG9pbnQgdG9W
aWV3Om5pbF1dOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgCi0gICAgICAgIC8v
IEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBj
b250ZW50cyB0byB0aGUgd2luZG93LgotICAgICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0g
MDsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gMDsKLSAgICAgICAgZm9y
IChwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFy
ZW50LT5wYXJlbnRPYmplY3QoKSkgewotICAgICAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldygpKSB7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsVmlldyA9IHRvQWNj
ZXNzaWJpbGl0eVNjcm9sbFZpZXcocGFyZW50KS0+c2Nyb2xsVmlldygpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBp
ZiAoc2Nyb2xsVmlldykKLSAgICAgICAgICAgIHJlY3QgPSBzY3JvbGxWaWV3LT5jb250ZW50c1Rv
Um9vdFZpZXcocmVjdCk7Ci0gICAgICAgIAotICAgICAgICBQYWdlKiBwYWdlID0gbV9vYmplY3Qt
PnBhZ2UoKTsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgY2hyb21l
IGNsaWVudCAobGlrZSBTVkcpIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGUgcGFnZQotICAgICAgICAv
LyBvZiB0aGUgc2Nyb2xsIHZpZXcgcGFyZW50IHRvIGhlbHAgdXMgZ2V0IHRvIHRoZSBzY3JlZW4g
cmVjdC4KLSAgICAgICAgaWYgKHBhcmVudCAmJiBwYWdlICYmIHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+aXNFbXB0eUNocm9tZUNsaWVudCgpKQotICAgICAgICAgICAgcGFnZSA9IHBhcmVudC0+
cGFnZSgpOwotICAgICAgICAKLSAgICAgICAgaWYgKHBhZ2UpCi0gICAgICAgICAgICBwb2ludCA9
IHBhZ2UtPmNocm9tZSgpLT5yb290Vmlld1RvU2NyZWVuKHJlY3QpLmxvY2F0aW9uKCk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHBvaW50ID0gcmVjdC5sb2NhdGlvbigpOwotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6cG9pbnRdOwotfQotCi10eXBl
ZGVmIEhhc2hNYXA8aW50LCBOU1N0cmluZyo+IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwotCi1zdGF0
aWMgY29uc3QgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIGNyZWF0ZUFjY2Vzc2liaWxpdHlSb2xlTWFw
KCkKLXsKLSAgICBzdHJ1Y3QgUm9sZUVudHJ5IHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUg
dmFsdWU7Ci0gICAgICAgIE5TU3RyaW5nKiBzdHJpbmc7Ci0gICAgfTsKLSAgICAKLSAgICBzdGF0
aWMgY29uc3QgUm9sZUVudHJ5IHJvbGVzW10gPSB7Ci0gICAgICAgIHsgVW5rbm93blJvbGUsIE5T
QWNjZXNzaWJpbGl0eVVua25vd25Sb2xlIH0sCi0gICAgICAgIHsgQnV0dG9uUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5QnV0dG9uUm9sZSB9LAotICAgICAgICB7IFJhZGlvQnV0dG9uUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5UmFkaW9CdXR0b25Sb2xlIH0sCi0gICAgICAgIHsgQ2hlY2tCb3hSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlDaGVja0JveFJvbGUgfSwKLSAgICAgICAgeyBTbGlkZXJSb2xlLCBOU0FjY2Vz
c2liaWxpdHlTbGlkZXJSb2xlIH0sCi0gICAgICAgIHsgVGFiR3JvdXBSb2xlLCBOU0FjY2Vzc2li
aWxpdHlUYWJHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUZXh0RmllbGRSb2xlLCBOU0FjY2Vzc2li
aWxpdHlUZXh0RmllbGRSb2xlIH0sCi0gICAgICAgIHsgU3RhdGljVGV4dFJvbGUsIE5TQWNjZXNz
aWJpbGl0eVN0YXRpY1RleHRSb2xlIH0sCi0gICAgICAgIHsgVGV4dEFyZWFSb2xlLCBOU0FjY2Vz
c2liaWxpdHlUZXh0QXJlYVJvbGUgfSwKLSAgICAgICAgeyBTY3JvbGxBcmVhUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5U2Nyb2xsQXJlYVJvbGUgfSwKLSAgICAgICAgeyBQb3BVcEJ1dHRvblJvbGUsIE5T
QWNjZXNzaWJpbGl0eVBvcFVwQnV0dG9uUm9sZSB9LAotICAgICAgICB7IE1lbnVCdXR0b25Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlNZW51QnV0dG9uUm9sZSB9LAotICAgICAgICB7IFRhYmxlUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5VGFibGVSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25Sb2xlLCBO
U0FjY2Vzc2liaWxpdHlBcHBsaWNhdGlvblJvbGUgfSwKLSAgICAgICAgeyBHcm91cFJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFJhZGlvR3JvdXBSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlSYWRpb0dyb3VwUm9sZSB9LAotICAgICAgICB7IExpc3RSb2xlLCBOU0FjY2Vz
c2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IERpcmVjdG9yeVJvbGUsIE5TQWNjZXNzaWJp
bGl0eUxpc3RSb2xlIH0sCi0gICAgICAgIHsgU2Nyb2xsQmFyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
U2Nyb2xsQmFyUm9sZSB9LAotICAgICAgICB7IFZhbHVlSW5kaWNhdG9yUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5VmFsdWVJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgSW1hZ2VSb2xlLCBOU0FjY2Vz
c2liaWxpdHlJbWFnZVJvbGUgfSwKLSAgICAgICAgeyBNZW51QmFyUm9sZSwgTlNBY2Nlc3NpYmls
aXR5TWVudUJhclJvbGUgfSwKLSAgICAgICAgeyBNZW51Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVu
dVJvbGUgfSwKLSAgICAgICAgeyBNZW51SXRlbVJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVt
Um9sZSB9LAotICAgICAgICB7IENvbHVtblJvbGUsIE5TQWNjZXNzaWJpbGl0eUNvbHVtblJvbGUg
fSwKLSAgICAgICAgeyBSb3dSb2xlLCBOU0FjY2Vzc2liaWxpdHlSb3dSb2xlIH0sCi0gICAgICAg
IHsgVG9vbGJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eVRvb2xiYXJSb2xlIH0sCi0gICAgICAgIHsg
QnVzeUluZGljYXRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1c3lJbmRpY2F0b3JSb2xlIH0sCi0g
ICAgICAgIHsgUHJvZ3Jlc3NJbmRpY2F0b3JSb2xlLCBOU0FjY2Vzc2liaWxpdHlQcm9ncmVzc0lu
ZGljYXRvclJvbGUgfSwKLSAgICAgICAgeyBXaW5kb3dSb2xlLCBOU0FjY2Vzc2liaWxpdHlXaW5k
b3dSb2xlIH0sCi0gICAgICAgIHsgRHJhd2VyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5RHJhd2VyUm9s
ZSB9LAotICAgICAgICB7IFN5c3RlbVdpZGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlTeXN0ZW1XaWRl
Um9sZSB9LAotICAgICAgICB7IE91dGxpbmVSb2xlLCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9s
ZSB9LAotICAgICAgICB7IEluY3JlbWVudG9yUm9sZSwgTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50
b3JSb2xlIH0sCi0gICAgICAgIHsgQnJvd3NlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUJyb3dzZXJS
b2xlIH0sCi0gICAgICAgIHsgQ29tYm9Cb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlDb21ib0JveFJv
bGUgfSwKLSAgICAgICAgeyBTcGxpdEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3BsaXRHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBTcGxpdHRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0dGVy
Um9sZSB9LAotICAgICAgICB7IENvbG9yV2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNvbG9yV2Vs
bFJvbGUgfSwKLSAgICAgICAgeyBHcm93QXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3dBcmVh
Um9sZSB9LAotICAgICAgICB7IFNoZWV0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5U2hlZXRSb2xlIH0s
Ci0gICAgICAgIHsgSGVscFRhZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUhlbHBUYWdSb2xlIH0sCi0g
ICAgICAgIHsgTWF0dGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlNYXR0ZVJvbGUgfSwKLSAgICAgICAg
eyBSdWxlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVJ1bGVyUm9sZSB9LAotICAgICAgICB7IFJ1bGVy
TWFya2VyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UnVsZXJNYXJrZXJSb2xlIH0sCi0gICAgICAgIHsg
TGlua1JvbGUsIE5TQWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCi0gICAgICAgIHsgRGlzY2xvc3Vy
ZVRyaWFuZ2xlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZVRyaWFuZ2xlUm9sZSB9LAot
ICAgICAgICB7IEdyaWRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcmlkUm9sZSB9LAotICAgICAgICB7
IFdlYkNvcmVMaW5rUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlua1JvbGUgfSwKLSAgICAgICAgeyBJ
bWFnZU1hcExpbmtSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAotICAgICAgICB7IElt
YWdlTWFwUm9sZSwgQCJBWEltYWdlTWFwIiB9LAotICAgICAgICB7IExpc3RNYXJrZXJSb2xlLCBA
IkFYTGlzdE1hcmtlciIgfSwKLSAgICAgICAgeyBXZWJBcmVhUm9sZSwgQCJBWFdlYkFyZWEiIH0s
Ci0gICAgICAgIHsgU2VhbWxlc3NXZWJBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgSGVhZGluZ1JvbGUsIEAiQVhIZWFkaW5nIiB9LAotICAgICAgICB7IExp
c3RCb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IExpc3RCb3hP
cHRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotICAgICAgICB7IENl
bGxSb2xlLCBOU0FjY2Vzc2liaWxpdHlDZWxsUm9sZSB9LAotICAgICAgICB7IFRhYmxlSGVhZGVy
Q29udGFpbmVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUm93
SGVhZGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGVmaW5p
dGlvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERlc2NyaXB0
aW9uTGlzdERldGFpbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IERlc2NyaXB0aW9uTGlzdFRlcm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyBTbGlkZXJUaHVtYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5kaWNhdG9yUm9s
ZSB9LAotICAgICAgICB7IExhbmRtYXJrQXBwbGljYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya0Jhbm5lclJvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrQ29udGVudEluZm9Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya01haW5Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya05hdmlnYXRp
b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya1Nl
YXJjaFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0
aW9uQWxlcnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBs
aWNhdGlvbkFsZXJ0RGlhbG9nUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgQXBwbGljYXRpb25EaWFsb2dSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
LSAgICAgICAgeyBBcHBsaWNhdGlvbkxvZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAotICAgICAgICB7IEFwcGxpY2F0aW9uTWFycXVlZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uU3RhdHVzUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25UaW1lclJvbGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRG9jdW1lbnRBcnRpY2xlUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRG9jdW1lbnRNYXRoUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRG9jdW1lbnROb3RlUm9sZSwgTlNBY2Nlc3NpYmls
aXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRG9jdW1lbnRSZWdpb25Sb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRhYlJvbGUsIE5TQWNjZXNzaWJp
bGl0eVJhZGlvQnV0dG9uUm9sZSB9LAotICAgICAgICB7IFRhYkxpc3RSb2xlLCBOU0FjY2Vzc2li
aWxpdHlUYWJHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUYWJQYW5lbFJvbGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRyZWVSb2xlLCBOU0FjY2Vzc2liaWxpdHlPdXRs
aW5lUm9sZSB9LAotICAgICAgICB7IFRyZWVJdGVtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Um93Um9s
ZSB9LAotICAgICAgICB7IExpc3RJdGVtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgUGFyYWdyYXBoUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0g
ICAgICAgIHsgTGFiZWxSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAg
eyBEaXZSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBGb3JtUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU3BpbkJ1dHRvblJvbGUs
IE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9sZSB9LAotICAgICAgICB7IEZvb3RlclJvbGUs
IE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRvZ2dsZUJ1dHRvblJvbGUs
IE5TQWNjZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBDYW52YXNSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlJbWFnZVJvbGUgfSwKLSAgICAgICAgeyBTVkdSb290Um9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTWF0aEVsZW1lbnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfQotICAgIH07Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAq
bmV3IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIG51bVJv
bGVzID0gc2l6ZW9mKHJvbGVzKSAvIHNpemVvZihyb2xlc1swXSk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bVJvbGVzOyArK2kpCi0gICAgICAgIHJvbGVNYXAuc2V0KHJvbGVzW2ld
LnZhbHVlLCByb2xlc1tpXS5zdHJpbmcpOwotICAgIHJldHVybiByb2xlTWFwOwotfQotCi1zdGF0
aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUp
Ci17Ci0gICAgQVNTRVJUKHZhbHVlKTsKLSAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVJv
bGVNYXAmIHJvbGVNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCgpOwotICAgIHJldHVy
biByb2xlTWFwLmdldCh2YWx1ZSk7Ci19Ci0KLS0gKE5TU3RyaW5nKilyb2xlCi17Ci0gICAgaWYg
KG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2ht
ZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVB
dHRyaWJ1dGVdOwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBtX29iamVjdC0+cm9sZVZh
bHVlKCk7Ci0gICAgaWYgKHJvbGUgPT0gQ2FudmFzUm9sZSAmJiBtX29iamVjdC0+Y2FudmFzSGFz
RmFsbGJhY2tDb250ZW50KCkpCi0gICAgICAgIHJvbGUgPSBHcm91cFJvbGU7Ci0gICAgTlNTdHJp
bmcqIHN0cmluZyA9IHJvbGVWYWx1ZVRvTlNTdHJpbmcocm9sZSk7Ci0gICAgaWYgKHN0cmluZyAh
PSBuaWwpCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eVVua25vd25Sb2xlOwotfQotCi0tIChOU1N0cmluZyopc3Vicm9sZQotewotICAgIGlmIChtX29i
amVjdC0+aXNQYXNzd29yZEZpZWxkKCkpCi0gICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlT
ZWN1cmVUZXh0RmllbGRTdWJyb2xlOwotICAgIGlmIChtX29iamVjdC0+aXNTZWFyY2hGaWVsZCgp
KQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5U2VhcmNoRmllbGRTdWJyb2xlOwotICAg
IAotICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpIHsKLSAgICAgICAgTlNWaWV3KiBh
dHRhY2hWaWV3ID0gW3NlbGYgYXR0YWNobWVudFZpZXddOwotICAgICAgICBpZiAoW1thdHRhY2hW
aWV3IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHJldHVybiBbYXR0YWNoVmll
dyBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJp
YnV0ZV07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1NwaW5C
dXR0b25QYXJ0KCkpIHsKLSAgICAgICAgaWYgKHRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0
KG1fb2JqZWN0KS0+aXNJbmNyZW1lbnRvcigpKQotICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNz
aWJpbGl0eUluY3JlbWVudEFycm93U3Vicm9sZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBO
U0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBcnJvd1N1YnJvbGU7Ci0gICAgfQotICAgIAotICAgIGlm
IChtX29iamVjdC0+aXNGaWxlVXBsb2FkQnV0dG9uKCkpCi0gICAgICAgIHJldHVybiBAIkFYRmls
ZVVwbG9hZEJ1dHRvbiI7Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCi0g
ICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm93U3Vicm9sZTsKLSAgICAKLSAg
ICBpZiAobV9vYmplY3QtPmlzTGlzdCgpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlMaXN0KiBs
aXN0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUxpc3QqPihtX29iamVjdCk7Ci0g
ICAgICAgIGlmIChsaXN0T2JqZWN0LT5pc1Vub3JkZXJlZExpc3QoKSB8fCBsaXN0T2JqZWN0LT5p
c09yZGVyZWRMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Q29udGVu
dExpc3RTdWJyb2xlOwotICAgICAgICBpZiAobGlzdE9iamVjdC0+aXNEZXNjcmlwdGlvbkxpc3Qo
KSkKLSAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkxpc3RTdWJy
b2xlOwotICAgIH0KLSAgICAKLSAgICAvLyBBUklBIGNvbnRlbnQgc3Vicm9sZXMuCi0gICAgc3dp
dGNoIChtX29iamVjdC0+cm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBMYW5kbWFya0FwcGxp
Y2F0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtBcHBsaWNhdGlvbiI7
Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAi
QVhMYW5kbWFya0Jhbm5lciI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb21wbGVtZW50YXJ5IjsKLSAgICAg
ICAgICAgIC8vIEZvb3RlciByb2xlcyBzaG91bGQgYXBwZWFyIGFzIGNvbnRlbnQgaW5mbyB0eXBl
cy4KLSAgICAgICAgY2FzZSBGb290ZXJSb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrQ29udGVu
dEluZm9Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0NvbnRlbnRJbmZvIjsK
LSAgICAgICAgY2FzZSBMYW5kbWFya01haW5Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhM
YW5kbWFya01haW4iOwotICAgICAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAg
ICAgICAgICByZXR1cm4gQCJBWExhbmRtYXJrTmF2aWdhdGlvbiI7Ci0gICAgICAgIGNhc2UgTGFu
ZG1hcmtTZWFyY2hSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1NlYXJjaCI7
Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4g
QCJBWEFwcGxpY2F0aW9uQWxlcnQiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFs
b2dSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIjsK
LSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkRpYWxvZ1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4g
QCJBWEFwcGxpY2F0aW9uRGlhbG9nIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1JvbGU6
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uTG9nIjsKLSAgICAgICAgY2FzZSBB
cHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlv
bk1hcnF1ZWUiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKLSAgICAgICAg
ICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25TdGF0dXMiOwotICAgICAgICBjYXNlIEFwcGxpY2F0
aW9uVGltZXJSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvblRpbWVyIjsK
LSAgICAgICAgY2FzZSBEb2N1bWVudFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERvY3Vt
ZW50IjsKLSAgICAgICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgotICAgICAgICAgICAgcmV0
dXJuIEAiQVhEb2N1bWVudEFydGljbGUiOwotICAgICAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50TWF0aCI7Ci0gICAgICAgIGNhc2UgRG9j
dW1lbnROb3RlUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnROb3RlIjsKLSAg
ICAgICAgY2FzZSBEb2N1bWVudFJlZ2lvblJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERv
Y3VtZW50UmVnaW9uIjsKLSAgICAgICAgY2FzZSBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGU6Ci0g
ICAgICAgICAgICByZXR1cm4gQCJBWFVzZXJJbnRlcmZhY2VUb29sdGlwIjsKLSAgICAgICAgY2Fz
ZSBUYWJQYW5lbFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWFRhYlBhbmVsIjsKLSAgICAg
ICAgY2FzZSBEZWZpbml0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRGVmaW5pdGlv
biI7Ci0gICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0VGVybVJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWFRlcm0iOwotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERlc2NyaXB0aW9uIjsKLSAgICAgICAgICAgIC8vIERl
ZmF1bHQgZG9lc24ndCByZXR1cm4gYW55dGhpbmcsIHNvIHJvbGVzIGRlZmluZWQgYmVsb3cgY2Fu
IGJlIGNob3Nlbi4KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICAKLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IE1hdGhFbGVtZW50Um9sZSkg
ewotICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aEZyYWN0aW9uKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gQCJBWE1hdGhGcmFjdGlvbiI7Ci0gICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRmVu
Y2VkKCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhGZW5jZWQiOwotICAgICAgICBpZiAo
bV9vYmplY3QtPmlzTWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkpCi0gICAgICAgICAgICByZXR1
cm4gQCJBWE1hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCI7Ci0gICAgICAgIGlmIChtX29iamVjdC0+
aXNNYXRoUm93KCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhSb3ciOwotICAgICAgICBp
ZiAobV9vYmplY3QtPmlzTWF0aFVuZGVyT3ZlcigpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhN
YXRoVW5kZXJPdmVyIjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhTcXVhcmVSb290KCkp
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhTcXVhcmVSb290IjsKLSAgICAgICAgaWYgKG1f
b2JqZWN0LT5pc01hdGhSb290KCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhSb290IjsK
LSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhUZXh0KCkpCi0gICAgICAgICAgICByZXR1cm4g
QCJBWE1hdGhUZXh0IjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhOdW1iZXIoKSkKLSAg
ICAgICAgICAgIHJldHVybiBAIkFYTWF0aE51bWJlciI7Ci0gICAgICAgIGlmIChtX29iamVjdC0+
aXNNYXRoSWRlbnRpZmllcigpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoSWRlbnRpZmll
ciI7Ci0gICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoVGFibGUoKSkKLSAgICAgICAgICAgIHJl
dHVybiBAIkFYTWF0aFRhYmxlIjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhUYWJsZVJv
dygpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoVGFibGVSb3ciOwotICAgICAgICBpZiAo
bV9vYmplY3QtPmlzTWF0aFRhYmxlQ2VsbCgpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRo
VGFibGVDZWxsIjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGZW5jZU9wZXJhdG9yKCkp
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhGZW5jZU9wZXJhdG9yIjsKLSAgICAgICAgaWYg
KG1fb2JqZWN0LT5pc01hdGhTZXBhcmF0b3JPcGVyYXRvcigpKQotICAgICAgICAgICAgcmV0dXJu
IEAiQVhNYXRoU2VwYXJhdG9yT3BlcmF0b3IiOwotICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0
aE9wZXJhdG9yKCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhPcGVyYXRvciI7Ci0gICAg
fQotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNNZWRpYVRpbWVsaW5lKCkpCi0gICAgICAgIHJl
dHVybiBOU0FjY2Vzc2liaWxpdHlUaW1lbGluZVN1YnJvbGU7Ci0gICAgCi0gICAgcmV0dXJuIG5p
bDsKLX0KLQotLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgotewotICAgIGlmICghbV9vYmpl
Y3QpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gYXR0YWNobWVudHMgaGF2ZSB0
aGUgQVhJbWFnZSByb2xlLCBidXQgYSBkaWZmZXJlbnQgc3Vicm9sZQotICAgIGlmIChtX29iamVj
dC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXdd
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRp
b25BdHRyaWJ1dGVdOwotICAgIAotICAgIE5TU3RyaW5nKiBheFJvbGUgPSBbc2VsZiByb2xlXTsK
LSAgICAKLSAgICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlXSkgewotICAgICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSkgewotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5
Um9sZURlc2NyaXB0aW9uKE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSwgW3NlbGYgc3Vicm9sZV0p
OwotICAgICAgICAgICAgY2FzZSBMYW5kbWFya0FwcGxpY2F0aW9uUm9sZToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0FwcGxpY2F0
aW9uIik7Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0Jhbm5lciIp
OwotICAgICAgICAgICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQ29tcGxl
bWVudGFyeSIpOwotICAgICAgICAgICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFy
a0NvbnRlbnRJbmZvIik7Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtN
YWluIik7Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtOYXZp
Z2F0aW9uIik7Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya1NlYXJj
aCIpOwotICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbkFsZXJ0
Iik7Ci0gICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgotICAgICAg
ICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9u
QWxlcnREaWFsb2ciKTsKLSAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxp
Y2F0aW9uRGlhbG9nIik7Ci0gICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNh
dGlvbkxvZyIpOwotICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAg
ICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0
aW9uTWFycXVlZSIpOwotICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGlj
YXRpb25TdGF0dXMiKTsKLSAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGlj
YXRpb25UaW1lciIpOwotICAgICAgICAgICAgY2FzZSBEb2N1bWVudFJvbGU6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9jdW1lbnQiKTsKLSAg
ICAgICAgICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudEFydGljbGUiKTsKLSAgICAg
ICAgICAgIGNhc2UgRG9jdW1lbnRNYXRoUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhB
UklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudE1hdGgiKTsKLSAgICAgICAgICAgIGNh
c2UgRG9jdW1lbnROb3RlUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVu
dEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudE5vdGUiKTsKLSAgICAgICAgICAgIGNhc2UgRG9jdW1l
bnRSZWdpb25Sb2xlOgotICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KEAiQVJJQURvY3VtZW50UmVnaW9uIik7Ci0gICAgICAgICAgICBjYXNlIFVzZXJJbnRlcmZh
Y2VUb29sdGlwUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3Vw
VGV4dChAIkFSSUFVc2VySW50ZXJmYWNlVG9vbHRpcCIpOwotICAgICAgICAgICAgY2FzZSBUYWJQ
YW5lbFJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQo
QCJBUklBVGFiUGFuZWwiKTsKLSAgICAgICAgICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEFYRGVmaW5pdGlvblRleHQoKTsKLSAgICAgICAgICAgIGNhc2Ug
RGVzY3JpcHRpb25MaXN0VGVybVJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFYRGVzY3Jp
cHRpb25MaXN0VGVybVRleHQoKTsKLSAgICAgICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0
YWlsUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhEZXNjcmlwdGlvbkxpc3REZXRhaWxU
ZXh0KCk7Ci0gICAgICAgICAgICBjYXNlIEZvb3RlclJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIEFYRm9vdGVyUm9sZURlc2NyaXB0aW9uVGV4dCgpOwotICAgICAgICB9Ci0gICAgfQotICAg
IAotICAgIGlmIChbYXhSb2xlIGlzRXF1YWxUb1N0cmluZzpAIkFYV2ViQXJlYSJdKQotICAgICAg
ICByZXR1cm4gQVhXZWJBcmVhVGV4dCgpOwotICAgIAotICAgIGlmIChbYXhSb2xlIGlzRXF1YWxU
b1N0cmluZzpAIkFYTGluayJdKQotICAgICAgICByZXR1cm4gQVhMaW5rVGV4dCgpOwotICAgIAot
ICAgIGlmIChbYXhSb2xlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGlzdE1hcmtlciJdKQotICAgICAg
ICByZXR1cm4gQVhMaXN0TWFya2VyVGV4dCgpOwotICAgIAotICAgIGlmIChbYXhSb2xlIGlzRXF1
YWxUb1N0cmluZzpAIkFYSW1hZ2VNYXAiXSkKLSAgICAgICAgcmV0dXJuIEFYSW1hZ2VNYXBUZXh0
KCk7Ci0gICAgCi0gICAgaWYgKFtheFJvbGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhIZWFkaW5nIl0p
Ci0gICAgICAgIHJldHVybiBBWEhlYWRpbmdUZXh0KCk7Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0
LT5pc0ZpbGVVcGxvYWRCdXR0b24oKSkKLSAgICAgICAgcmV0dXJuIEFYRmlsZVVwbG9hZEJ1dHRv
blRleHQoKTsKLSAgICAKLSAgICAvLyBBcHBLaXQgYWxzbyByZXR1cm5zIEFYVGFiIGZvciB0aGUg
cm9sZSBkZXNjcmlwdGlvbiBmb3IgYSB0YWIgaXRlbS4KLSAgICBpZiAobV9vYmplY3QtPmlzVGFi
SXRlbSgpKQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKEAi
QVhUYWIiLCBuaWwpOwotICAgIAotICAgIC8vIFdlIHNob3VsZCB0cnkgdGhlIHN5c3RlbSBkZWZh
dWx0IHJvbGUgZGVzY3JpcHRpb24gZm9yIGFsbCBvdGhlciByb2xlcy4KLSAgICAvLyBJZiB3ZSBn
ZXQgdGhlIHNhbWUgc3RyaW5nIGJhY2ssIHRoZW4gYXMgYSBsYXN0IHJlc29ydCwgcmV0dXJuIHVu
a25vd24uCi0gICAgTlNTdHJpbmcqIGRlZmF1bHRSb2xlRGVzY3JpcHRpb24gPSBOU0FjY2Vzc2li
aWxpdHlSb2xlRGVzY3JpcHRpb24oYXhSb2xlLCBbc2VsZiBzdWJyb2xlXSk7Ci0gICAgCi0gICAg
Ly8gT24gZWFybGllciBNYWMgdmVyc2lvbnMgKExpb24pLCB1c2luZyBhIG5vbi1zdGFuZGFyZCBz
dWJyb2xlIHdvdWxkIHJlc3VsdCBpbiBhIHJvbGUgZGVzY3JpcHRpb24KLSAgICAvLyBiZWluZyBy
ZXR1cm5lZCB0aGF0IGxvb2tlZCBsaWtlIEFYUm9sZTpBWFN1YnJvbGUuIFRvIG1ha2UgYWxsIHBs
YXRmb3JtcyBoYXZlIHRoZSBzYW1lIHJvbGUgZGVzY3JpcHRpb25zCi0gICAgLy8gd2Ugc2hvdWxk
IGZhbGxiYWNrIG9uIGEgcm9sZSBkZXNjcmlwdGlvbiBpZ25vcmluZyB0aGUgc3Vicm9sZSBpbiB0
aGVzZSBjYXNlcy4KLSAgICBpZiAoW2RlZmF1bHRSb2xlRGVzY3JpcHRpb24gaXNFcXVhbFRvU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6JUAiLCBheFJvbGUsIFtzZWxmIHN1
YnJvbGVdXV0pCi0gICAgICAgIGRlZmF1bHRSb2xlRGVzY3JpcHRpb24gPSBOU0FjY2Vzc2liaWxp
dHlSb2xlRGVzY3JpcHRpb24oYXhSb2xlLCBuaWwpOwotICAgIAotICAgIGlmICghW2RlZmF1bHRS
b2xlRGVzY3JpcHRpb24gaXNFcXVhbFRvU3RyaW5nOmF4Um9sZV0pCi0gICAgICAgIHJldHVybiBk
ZWZhdWx0Um9sZURlc2NyaXB0aW9uOwotICAgIAotICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlS
b2xlRGVzY3JpcHRpb24oTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGUsIG5pbCk7Ci19Ci0KLS0g
KGlkKXNjcm9sbFZpZXdQYXJlbnQKLXsKLSAgICBpZiAoIW1fb2JqZWN0IHx8ICFtX29iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAot
ICAgIC8vIElmIHRoaXMgc2Nyb2xsIHZpZXcgcHJvdmlkZXMgaXQncyBwYXJlbnQgb2JqZWN0IChi
ZWNhdXNlIGl0J3MgYSBzdWItZnJhbWUpLCB0aGVuCi0gICAgLy8gd2Ugc2hvdWxkIG5vdCBmaW5k
IHRoZSByZW1vdGVBY2Nlc3NpYmlsaXR5UGFyZW50LgotICAgIGlmIChtX29iamVjdC0+cGFyZW50
T2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcqIHNjcm9sbFZpZXcgPSB0b0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KG1fb2JqZWN0
KTsKLSAgICBTY3JvbGxWaWV3KiBzY3JvbGwgPSBzY3JvbGxWaWV3LT5zY3JvbGxWaWV3KCk7Ci0g
ICAgaWYgKCFzY3JvbGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKHNjcm9s
bC0+cGxhdGZvcm1XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdu
b3JlZEFuY2VzdG9yKHNjcm9sbC0+cGxhdGZvcm1XaWRnZXQoKSk7Ci0gICAgCi0gICAgcmV0dXJu
IFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOwotfQotCi0vLyBGSVhNRTog
RGlmZmVyZW50IGtpbmRzIG9mIGVsZW1lbnRzIGFyZSBwdXR0aW5nIHRoZSB0aXRsZSB0YWcgdG8g
dXNlIGluIGRpZmZlcmVudAotLy8gQVggZmllbGRzLiBUaGlzIHNob3VsZCBiZSByZWN0aWZpZWQs
IGJ1dCBpbiB0aGUgaW5pdGlhbCBwYXRjaCBJIHdhbnQgdG8gYWNoaWV2ZQotLy8gcGFyaXR5IHdp
dGggZXhpc3RpbmcgYmVoYXZpb3IuCi0tIChCT09MKXRpdGxlVGFnU2hvdWxkQmVVc2VkSW5EZXNj
cmlwdGlvbkZpZWxkCi17Ci0gICAgcmV0dXJuIChtX29iamVjdC0+aXNMaW5rKCkgJiYgIW1fb2Jq
ZWN0LT5pc0ltYWdlTWFwTGluaygpKSB8fCBtX29iamVjdC0+aXNJbWFnZSgpOwotfQotCi0vLyBU
aGlzIHNob3VsZCBiZSB0aGUgInZpc2libGUiIHRleHQgdGhhdCdzIGFjdHVhbGx5IG9uIHRoZSBz
Y3JlZW4gaWYgcG9zc2libGUuCi0vLyBJZiB0aGVyZSdzIGFsdGVybmF0aXZlIHRleHQsIHRoYXQg
Y2FuIG92ZXJyaWRlIHRoZSB0aXRsZS4KLS0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVRpdGxl
Ci17Ci0gICAgLy8gU3RhdGljIHRleHQgb2JqZWN0cyBzaG91bGQgbm90IGhhdmUgYSB0aXRsZS4g
SXRzIGNvbnRlbnQgaXMgY29tbXVuaWNhdGVkIGluIGl0cyBBWFZhbHVlLgotICAgIGlmIChtX29i
amVjdC0+cm9sZVZhbHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCi0gICAgICAgIHJldHVybiBbTlNT
dHJpbmcgc3RyaW5nXTsKLSAgICAKLSAgICAvLyBBIGZpbGUgdXBsb2FkIGJ1dHRvbiBwcmVzZW50
cyBhIGNoYWxsZW5nZSBiZWNhdXNlIGl0IGhhcyBidXR0b24gdGV4dCBhbmQgYSB2YWx1ZSwgYnV0
IHRoZQotICAgIC8vIEFQSSBkb2Vzbid0IHN1cHBvcnQgdGhpcyBwYXJhZGlnbS4KLSAgICAvLyBU
aGUgY29tcHJvbWlzZSBpcyB0byByZXR1cm4gdGhlIGJ1dHRvbiB0eXBlIGluIHRoZSByb2xlIGRl
c2NyaXB0aW9uIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGZpbGUgcGF0aCBpbiB0aGUgdGl0bGUKLSAg
ICBpZiAobV9vYmplY3QtPmlzRmlsZVVwbG9hZEJ1dHRvbigpKQotICAgICAgICByZXR1cm4gbV9v
YmplY3QtPnN0cmluZ1ZhbHVlKCk7Ci0gICAgCi0gICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0
PiB0ZXh0T3JkZXI7Ci0gICAgbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRleHRPcmRlcik7
Ci0gICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dE9yZGVyLnNpemUoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKLSAgICAgICAgY29uc3QgQWNjZXNz
aWJpbGl0eVRleHQmIHRleHQgPSB0ZXh0T3JkZXJba107Ci0gICAgICAgIAotICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGFsdGVybmF0aXZlIHRleHQsIHRoZW4gd2Ugc2hvdWxkIG5vdCBleHBvc2UgYSB0
aXRsZS4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBbHRlcm5hdGl2ZVRleHQpCi0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgCi0gICAgICAgIC8vIE9uY2Ugd2UgZW5jb3VudGVy
IHZpc2libGUgdGV4dCwgb3IgdGhlIHRleHQgZnJvbSBvdXIgY2hpbGRyZW4gdGhhdCBzaG91bGQg
YmUgdXNlZCBmb3JlbW9zdC4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBWaXNpYmxl
VGV4dCB8fCB0ZXh0LnRleHRTb3VyY2UgPT0gQ2hpbGRyZW5UZXh0KQotICAgICAgICAgICAgcmV0
dXJuIHRleHQudGV4dDsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZWxlbWVu
dCB0aGF0IGxhYmVscyB0aGlzIG9iamVjdCBhbmQgaXQncyBub3QgZXhwb3NlZCwgdGhlbiB3ZSBz
aG91bGQgdXNlCi0gICAgICAgIC8vIHRoYXQgdGV4dCBhcyBvdXIgdGl0bGUuCi0gICAgICAgIGlm
ICh0ZXh0LnRleHRTb3VyY2UgPT0gTGFiZWxCeUVsZW1lbnRUZXh0ICYmICFtX29iamVjdC0+ZXhw
b3Nlc1RpdGxlVUlFbGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwotICAg
ICAgICAKLSAgICAgICAgLy8gRklYTUU6IFRoZSB0aXRsZSB0YWcgaXMgdXNlZCBpbiBjZXJ0YWlu
IGNhc2VzIGZvciB0aGUgdGl0bGUuIFRoaXMgdXNhZ2Ugc2hvdWxkCi0gICAgICAgIC8vIHByb2Jh
Ymx5IGJlIGluIHRoZSBkZXNjcmlwdGlvbiBmaWVsZCBzaW5jZSBpdCdzIG5vdCAidmlzaWJsZSIu
Ci0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmICFbc2VsZiB0
aXRsZVRhZ1Nob3VsZEJlVXNlZEluRGVzY3JpcHRpb25GaWVsZF0pCi0gICAgICAgICAgICByZXR1
cm4gdGV4dC50ZXh0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107
Ci19Ci0KLS0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uCi17Ci0gICAgLy8g
U3RhdGljIHRleHQgb2JqZWN0cyBzaG91bGQgbm90IGhhdmUgYSBkZXNjcmlwdGlvbi4gSXRzIGNv
bnRlbnQgaXMgY29tbXVuaWNhdGVkIGluIGl0cyBBWFZhbHVlLgotICAgIC8vIE9uZSBleGNlcHRp
b24gaXMgdGhlIG1lZGlhIGNvbnRyb2wgbGFiZWxzIHRoYXQgaGF2ZSBhIHZhbHVlIGFuZCBhIGRl
c2NyaXB0aW9uLiBUaG9zZSBhcmUgc2V0IHByb2dyYW1hdGljYWxseS4KLSAgICBpZiAobV9vYmpl
Y3QtPnJvbGVWYWx1ZSgpID09IFN0YXRpY1RleHRSb2xlICYmICFtX29iamVjdC0+aXNNZWRpYUNv
bnRyb2xMYWJlbCgpKQotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107Ci0gICAgCi0g
ICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7Ci0gICAgbV9vYmplY3QtPmFj
Y2Vzc2liaWxpdHlUZXh0KHRleHRPcmRlcik7Ci0gICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoID0g
dGV4dE9yZGVyLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyBr
KyspIHsKLSAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eVRleHQmIHRleHQgPSB0ZXh0T3JkZXJb
a107Ci0gICAgICAgIAotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFsdGVybmF0aXZl
VGV4dCkKLSAgICAgICAgICAgIHJldHVybiB0ZXh0LnRleHQ7Ci0gICAgICAgIAotICAgICAgICBp
ZiAodGV4dC50ZXh0U291cmNlID09IFRpdGxlVGFnVGV4dCAmJiBbc2VsZiB0aXRsZVRhZ1Nob3Vs
ZEJlVXNlZEluRGVzY3JpcHRpb25GaWVsZF0pCi0gICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0
OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107Ci19Ci0KLS0gKE5T
U3RyaW5nICopYWNjZXNzaWJpbGl0eUhlbHBUZXh0Ci17Ci0gICAgVmVjdG9yPEFjY2Vzc2liaWxp
dHlUZXh0PiB0ZXh0T3JkZXI7Ci0gICAgbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRleHRP
cmRlcik7Ci0gICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dE9yZGVyLnNpemUoKTsKLSAg
ICBib29sIGRlc2NyaXB0aXZlVGV4dEF2YWlsYWJsZSA9IGZhbHNlOwotICAgIGZvciAodW5zaWdu
ZWQgayA9IDA7IGsgPCBsZW5ndGg7IGsrKykgewotICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5
VGV4dCYgdGV4dCA9IHRleHRPcmRlcltrXTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0ZXh0LnRl
eHRTb3VyY2UgPT0gSGVscFRleHQgfHwgdGV4dC50ZXh0U291cmNlID09IFN1bW1hcnlUZXh0KQot
ICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4dDsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIGFu
IGVsZW1lbnQgZG9lcyBOT1QgaGF2ZSBvdGhlciBkZXNjcmlwdGl2ZSB0ZXh0IHRoZSB0aXRsZSB0
YWcgc2hvdWxkIGJlIHVzZWQgYXMgaXRzIGRlc2NyaXB0aXZlIHRleHQuCi0gICAgICAgIC8vIEJ1
dCwgaWYgdGhvc2UgQVJFIGF2YWlsYWJsZSwgdGhlbiB0aGUgdGl0bGUgdGFnIHNob3VsZCBiZSB1
c2VkIGZvciBoZWxwIHRleHQgaW5zdGVhZC4KLSAgICAgICAgc3dpdGNoICh0ZXh0LnRleHRTb3Vy
Y2UpIHsKLSAgICAgICAgICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0OgotICAgICAgICAgICAgY2Fz
ZSBWaXNpYmxlVGV4dDoKLSAgICAgICAgICAgIGNhc2UgQ2hpbGRyZW5UZXh0OgotICAgICAgICAg
ICAgY2FzZSBMYWJlbEJ5RWxlbWVudFRleHQ6Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpdmVU
ZXh0QXZhaWxhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3Vy
Y2UgPT0gVGl0bGVUYWdUZXh0ICYmIGRlc2NyaXB0aXZlVGV4dEF2YWlsYWJsZSkKLSAgICAgICAg
ICAgIHJldHVybiB0ZXh0LnRleHQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBbTlNTdHJpbmcg
c3RyaW5nXTsKLX0KLQotLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0
ZXIgd2F5LgotLy8gc3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0dHJp
YnV0ZSBuYW1lcyB0byBmdW5jdGlvbiBjYWxscywKLS8vIG9yIG1heWJlIHBvaW50ZXJzIHRvIG1l
bWJlciBmdW5jdGlvbnMKLS0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJp
bmcqKWF0dHJpYnV0ZU5hbWUKLXsKLSAgICBpZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tpbmdT
dG9yZV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0pCi0gICAgICAg
IHJldHVybiBbc2VsZiByb2xlXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSkKLSAgICAgICAgcmV0
dXJuIFtzZWxmIHN1YnJvbGVdOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pCi0gICAg
ICAgIHJldHVybiBbc2VsZiByb2xlRGVzY3JpcHRpb25dOwotICAgIAotICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgCi0gICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHBhcmVudCBvZiB0
aGUgQVhXZWJBcmVhLCBpZiB0aGlzIGlzIGEgd2ViIGFyZWEuCi0gICAgICAgIGlkIHNjcm9sbFZp
ZXdQYXJlbnQgPSBbc2VsZiBzY3JvbGxWaWV3UGFyZW50XTsKLSAgICAgICAgaWYgKHNjcm9sbFZp
ZXdQYXJlbnQpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsVmlld1BhcmVudDsKLSAgICAgICAg
Ci0gICAgICAgIC8vIFRyZWUgaXRlbSAoY2hhbmdlZCB0byBBWFJvd3MpIGNhbiBvbmx5IHJlcG9y
dCB0aGUgdHJlZSAoQVhPdXRsaW5lKSBhcyBpdHMgcGFyZW50LgotICAgICAgICBpZiAobV9vYmpl
Y3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgICAgICAgICAgd2hp
bGUgKHBhcmVudCkgewotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZSgpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7Ci0gICAgICAgICAgICAg
ICAgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFy
ZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgICAgICBpZiAoIXBh
cmVudCkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAvLyBJbiBX
ZWJLaXQxLCB0aGUgc2Nyb2xsIHZpZXcgaXMgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSAodGhlIGF0
dGFjaG1lbnQgdmlldyksIHNvIHRoZSBwYXJlbnQKLSAgICAgICAgLy8gc2hvdWxkIGJlIHJlcG9y
dGVkIGRpcmVjdGx5IGFzIHN1Y2guCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkg
JiYgcGFyZW50LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBbcGFyZW50LT53
cmFwcGVyKCkgYXR0YWNobWVudFZpZXddOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHBhcmVu
dC0+d3JhcHBlcigpOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAg
aWYgKG1fb2JqZWN0LT5jaGlsZHJlbigpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJh
eSogY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0gICAgICAgICAgICBp
ZiAoY2hpbGRyZW4gIT0gbmlsKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gVGhlIHRyZWUncyAoQVhPdXRsaW5lKSBjaGls
ZHJlbiBhcmUgc3VwcG9zZWQgdG8gYmUgaXRzIHJvd3MgYW5kIGNvbHVtbnMuCi0gICAgICAgIC8v
IFRoZSBBUklBIHNwZWMgZG9lc24ndCBoYXZlIGNvbHVtbnMsIHNvIHdlIGp1c3QgbmVlZCByb3dz
LgotICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpKQotICAgICAgICAgICAgcmV0dXJuIFtz
ZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmli
dXRlXTsKLSAgICAgICAgCi0gICAgICAgIC8vIEEgdHJlZSBpdGVtIHNob3VsZCBvbmx5IGV4cG9z
ZSBpdHMgY29udGVudCBhcyBpdHMgY2hpbGRyZW4gKG5vdCBpdHMgcm93cykKLSAgICAgICAgaWYg
KG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50Q29weTsKLSAgICAgICAgICAg
IG1fb2JqZWN0LT5hcmlhVHJlZUl0ZW1Db250ZW50KGNvbnRlbnRDb3B5KTsKLSAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRDb3B5KTsKLSAgICAgICAgfQotICAgICAg
ICAKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkobV9vYmplY3QtPmNoaWxkcmVuKCkp
OwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAo
bV9vYmplY3QtPmlzTGlzdEJveCgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7Ci0gICAg
ICAgICAgICBtX29iamVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7
Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29w
eSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNo
aWxkcmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmlzTGlzdEJveCgpKSB7
Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgdmlzaWJsZUNoaWxkcmVuQ29weTsKLSAgICAgICAgICAgIG1fb2JqZWN0LT52aXNpYmxl
Q2hpbGRyZW4odmlzaWJsZUNoaWxkcmVuQ29weSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheSh2aXNpYmxlQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IGlmIChtX29iamVjdC0+aXNMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm4gW3NlbGYgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsK
LSAgICAgICAgCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIAotICAgIGlm
IChtX29iamVjdC0+aXNXZWJBcmVhKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpAIkFYTGlua1VJRWxlbWVudHMiXSkgewotICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtzOwotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KG1fb2JqZWN0KS0+
Z2V0RG9jdW1lbnRMaW5rcyhsaW5rcyk7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNB
cnJheShsaW5rcyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYTG9hZGVkIl0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc0xvYWRlZCgpXTsKLSAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYTGF5b3V0Q291bnQiXSkKLSAgICAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+bGF5b3V0Q291bnQoKV07Ci0g
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
TG9hZGluZ1Byb2dyZXNzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aERvdWJsZTptX29iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCldOwot
ICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkgewotICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlOdW1i
ZXJPZkNoYXJhY3RlcnNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBpbnQgbGVuZ3RoID0gbV9v
YmplY3QtPnRleHRMZW5ndGgoKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKQotICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhVbnNpZ25lZEludDpsZW5ndGhdOwotICAgICAgICB9Ci0gICAgICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJp
YnV0ZV0pIHsKLSAgICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBtX29iamVjdC0+c2Vs
ZWN0ZWRUZXh0KCk7Ci0gICAgICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gKE5TU3RyaW5nKilz
ZWxlY3RlZFRleHQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdKSB7
Ci0gICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+c2VsZWN0
ZWRUZXh0UmFuZ2UoKTsKLSAgICAgICAgICAgIGlmICh0ZXh0UmFuZ2UuaXNOdWxsKCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKDAs
IDApXTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VS
YW5nZSh0ZXh0UmFuZ2Uuc3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsKLSAgICAgICAgfQotICAg
ICAgICAvLyBUT0RPOiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80
NzEyMTAxPgotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQotICAgICAgICAgICAg
cmV0dXJuIG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVl
V2l0aFJhbmdlOiBOU01ha2VSYW5nZSgwLCBtX29iamVjdC0+dGV4dExlbmd0aCgpKV07Ci0gICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUlu
c2VydGlvblBvaW50TGluZU51bWJlckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIC8vIGlmIHNl
bGVjdGlvbkVuZCA+IDAsIHRoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgdGV4dCBhbmQgdGhpcyBxdWVz
dGlvbiBzaG91bGQgbm90IGJlIGFuc3dlcmVkCi0gICAgICAgICAgICBpZiAobV9vYmplY3QtPmlz
UGFzc3dvcmRGaWVsZCgpIHx8IG1fb2JqZWN0LT5zZWxlY3Rpb25FbmQoKSA+IDApCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogZm9jdXNlZE9iamVjdCA9IG1fb2JqZWN0LT5mb2N1c2VkVUlFbGVtZW50KCk7
Ci0gICAgICAgICAgICBpZiAoZm9jdXNlZE9iamVjdCAhPSBtX29iamVjdCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWaXNpYmxlUG9zaXRp
b24gZm9jdXNlZFBvc2l0aW9uID0gZm9jdXNlZE9iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5k
ZXgoZm9jdXNlZE9iamVjdC0+c2VsZWN0aW9uU3RhcnQoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBp
bnQgbGluZU51bWJlciA9IG1fb2JqZWN0LT5saW5lRm9yUG9zaXRpb24oZm9jdXNlZFBvc2l0aW9u
KTsKLSAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmlsOwotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhJbnQ6bGluZU51bWJlcl07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRl
XSkgewotICAgICAgICBLVVJMIHVybCA9IG1fb2JqZWN0LT51cmwoKTsKLSAgICAgICAgaWYgKHVy
bC5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVybiAoTlNV
UkwqKXVybDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1NwaW5CdXR0b24oKSkg
ewotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUluY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gdG9BY2Nl
c3NpYmlsaXR5U3BpbkJ1dHRvbihtX29iamVjdCktPmluY3JlbWVudEJ1dHRvbigpLT53cmFwcGVy
KCk7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5RGVjcmVtZW50QnV0dG9uQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiB0b0Fj
Y2Vzc2liaWxpdHlTcGluQnV0dG9uKG1fb2JqZWN0KS0+ZGVjcmVtZW50QnV0dG9uKCktPndyYXBw
ZXIoKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogQCJBWFZpc2l0ZWQiXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDogbV9vYmplY3QtPmlzVmlzaXRlZCgpXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0pIHsKLSAgICAg
ICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewotICAgICAgICAgICAgaWYgKFtbW3Nl
bGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdKQotICAgICAgICAgICAgICAgIHJl
dHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIHJldHVybiBbc2VsZiBhY2Nlc3NpYmlsaXR5VGl0bGVdOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkg
ewotICAgICAgICAgICAgaWYgKFtbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25B
dHRyaWJ1dGVdKQotICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXdd
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0
dHJpYnV0ZV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbl07Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSkgewotICAgICAgICBpZiAo
bV9vYmplY3QtPmlzQXR0YWNobWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoW1tbc2VsZiBhdHRh
Y2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpO
U0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtb
c2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9vYmplY3Qt
PnN1cHBvcnRzUmFuZ2VWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnZhbHVlRm9yUmFuZ2UoKV07Ci0gICAgICAgIGlmIChtX29i
amVjdC0+cm9sZVZhbHVlKCkgPT0gU2xpZGVyVGh1bWJSb2xlKQotICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnBhcmVudE9iamVjdCgpLT52YWx1
ZUZvclJhbmdlKCldOwotICAgICAgICBpZiAobV9vYmplY3QtPmlzSGVhZGluZygpKQotICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5oZWFkaW5nTGV2
ZWwoKV07Ci0gICAgICAgIAotICAgICAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2tib3hPclJhZGlv
KCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVl
KCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT2ZmOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF07Ci0gICAgICAgICAgICAg
ICAgY2FzZSBCdXR0b25TdGF0ZU9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6MV07Ci0gICAgICAgICAgICAgICAgY2FzZSBCdXR0b25TdGF0ZU1p
eGVkOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
Ml07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIHJhZGlv
IGdyb3VwcyByZXR1cm4gdGhlIHNlbGVjdGVkIHJhZGlvIGJ1dHRvbiBhcyB0aGUgQVhWYWx1ZQot
ICAgICAgICBpZiAobV9vYmplY3QtPmlzUmFkaW9Hcm91cCgpKSB7Ci0gICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiByYWRpb0J1dHRvbiA9IG1fb2JqZWN0LT5zZWxlY3RlZFJhZGlvQnV0
dG9uKCk7Ci0gICAgICAgICAgICBpZiAoIXJhZGlvQnV0dG9uKQotICAgICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gcmFkaW9CdXR0b24tPndyYXBwZXIoKTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkgewot
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdGFiSXRlbSA9IG1fb2JqZWN0LT5zZWxl
Y3RlZFRhYkl0ZW0oKTsKLSAgICAgICAgICAgIGlmICghdGFiSXRlbSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgICAgICAgICAgcmV0dXJuIHRhYkl0ZW0tPndyYXBwZXIoKTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkl0ZW0oKSkKLSAg
ICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+aXNTZWxl
Y3RlZCgpXTsKLSAgICAgICAgCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNDb2xvcldlbGwoKSkg
ewotICAgICAgICAgICAgaW50IHIsIGcsIGI7Ci0gICAgICAgICAgICBtX29iamVjdC0+Y29sb3JW
YWx1ZShyLCBnLCBiKTsKLSAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAInJnYiAlNy41ZiAlNy41ZiAlNy41ZiAxIiwgciAvIDI1NS4sIGcgLyAyNTUuLCBiIC8g
MjU1Ll07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBtX29iamVjdC0+c3Ry
aW5nVmFsdWUoKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdKQotICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+bWluVmFsdWVGb3JSYW5nZSgp
XTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vz
c2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEZsb2F0Om1fb2JqZWN0LT5tYXhWYWx1ZUZvclJhbmdlKCldOwotICAgIAotICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUhlbHBBdHRy
aWJ1dGVdKQotICAgICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eUhlbHBUZXh0XTsKLSAg
ICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlGb2N1c2VkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDogbV9vYmplY3QtPmlzRm9jdXNlZCgpXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlXSkKLSAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogbV9vYmplY3QtPmlzRW5hYmxl
ZCgpXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0Fj
Y2Vzc2liaWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAgICBJbnRTaXplIHMgPSBtX29iamVj
dC0+cGl4ZWxTbmFwcGVkU2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
U2l6ZTogTlNNYWtlU2l6ZShzLndpZHRoKCksIHMuaGVpZ2h0KCkpXTsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5UG9z
aXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW3NlbGYgcG9zaXRpb25dOwotICAgIAot
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVdp
bmRvd0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
OiBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV0pIHsKLSAgICAgICAg
Ci0gICAgICAgIGlkIHJlbW90ZVBhcmVudCA9IFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJl
bnRPYmplY3RdOwotICAgICAgICBpZiAocmVtb3RlUGFyZW50KQotICAgICAgICAgICAgcmV0dXJu
IFtyZW1vdGVQYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZU5hbWVd
OwotICAgICAgICAKLSAgICAgICAgRnJhbWVWaWV3KiBmdiA9IG1fb2JqZWN0LT5kb2N1bWVudEZy
YW1lVmlldygpOwotICAgICAgICBpZiAoZnYpCi0gICAgICAgICAgICByZXR1cm4gW2Z2LT5wbGF0
Zm9ybVdpZGdldCgpIHdpbmRvd107Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAot
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QWNj
ZXNzS2V5QXR0cmlidXRlXSkgewotICAgICAgICBBdG9taWNTdHJpbmcgYWNjZXNzS2V5ID0gbV9v
YmplY3QtPmFjY2Vzc0tleSgpOwotICAgICAgICBpZiAoYWNjZXNzS2V5LmlzTnVsbCgpKQotICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIGFjY2Vzc0tleTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlUYWJzQXR0cmlidXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmlzVGFiTGlzdCgpKSB7
Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5W
ZWN0b3IgdGFic0NoaWxkcmVuOwotICAgICAgICAgICAgbV9vYmplY3QtPnRhYkNoaWxkcmVuKHRh
YnNDaGlsZHJlbik7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJzQ2hp
bGRyZW4pOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdKSB7Ci0gICAg
ICAgIC8vIFRoZSBjb250ZW50cyBvZiBhIHRhYiBsaXN0IGFyZSBhbGwgdGhlIGNoaWxkcmVuIGV4
Y2VwdCB0aGUgdGFicy4KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkgewotICAg
ICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7Ci0gICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOwotICAg
ICAgICAgICAgbV9vYmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBjb250ZW50czsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoaWxkcmVuU2l6ZSA9IGNo
aWxkcmVuLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjaGls
ZHJlblNpemU7ICsraykgewotICAgICAgICAgICAgICAgIGlmICh0YWJzQ2hpbGRyZW4uZmluZChj
aGlsZHJlbltrXSkgPT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGVu
dHMuYXBwZW5kKGNoaWxkcmVuW2tdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRzKTsKLSAgICAgICAgfSBlbHNlIGlmIChtX29iamVj
dC0+aXNTY3JvbGxWaWV3KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigp
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBIHNjcm9sbFZpZXcncyBjb250ZW50cyBh
cmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIHNjcm9sbCBiYXJzLgotICAgICAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRlbnRzOwotICAg
ICAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXplID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxkcmVuU2l6ZTsgKytrKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFjaGlsZHJlbltrXS0+aXNTY3JvbGxiYXIoKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGVudHMuYXBwZW5kKGNoaWxkcmVuW2tdKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRzKTsKLSAgICAgICAgfQot
ICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpIHsK
LSAgICAgICAgLy8gVE9ETzogZGlzdGluZ3Vpc2ggYmV0d2VlbiB2aXNpYmxlIGFuZCBub24tdmlz
aWJsZSByb3dzCi0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgICAgIFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsK
LSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZSo+KG1fb2JqZWN0KS0+cm93cygpKTsKLSAgICAgICAgfQotICAgICAgICAvLyBU
T0RPOiBkaXN0aW5ndWlzaCBiZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMK
LSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDb2x1bW5zQXR0cmlidXRlXSB8fAotICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkgewotICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlKj4obV9vYmplY3QpLT5jb2x1bW5zKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNl
bGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsKLSAgICAg
ICAgICAgIG1fb2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsK
LSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3Vw
cG9ydCB0aGVzZQotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQ29sdW1uc0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgICAgIFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENlbGxz
QXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtBWENvbHVtbkhl
YWRlclVJRWxlbWVudHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVhZGVyczsKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KG1fb2JqZWN0KS0+Y29sdW1uSGVh
ZGVycyhjb2x1bW5IZWFkZXJzKTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KGNvbHVtbkhlYWRlcnMpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlckNvbnRhaW5lciA9IHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KG1fb2JqZWN0KS0+aGVhZGVyQ29udGFpbmVy
KCk7Ci0gICAgICAgICAgICBpZiAoaGVhZGVyQ29udGFpbmVyKQotICAgICAgICAgICAgICAgIHJl
dHVybiBoZWFkZXJDb250YWluZXItPndyYXBwZXIoKTsKLSAgICAgICAgICAgIHJldHVybiBuaWw7
Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsK
LSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciByb3dIZWFkZXJzOwotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRh
YmxlKj4obV9vYmplY3QpLT5yb3dIZWFkZXJzKHJvd0hlYWRlcnMpOwotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkocm93SGVhZGVycyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
VmlzaWJsZUNlbGxzQXR0cmlidXRlXSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzOwotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4obV9vYmplY3QpLT5jZWxscyhjZWxscyk7Ci0gICAg
ICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjZWxscyk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RhYmxlQ29sdW1uKCkpIHsKLSAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJp
YnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKj4obV9vYmplY3QpLT5jb2x1bW5JbmRleCgp
XTsKLSAgICAgICAgCi0gICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0
aGUgbGlzdCBvZiBhbGwgdGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93Ci0g
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
Um93c0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgICAgIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNv
bHVtbio+KG1fb2JqZWN0KS0+Y2hpbGRyZW4oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1
dGVdKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4qPihtX29iamVjdCktPmhlYWRlck9iamVjdCgp
OwotICAgICAgICAgICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAgICAgICAgIHJldHVybiBoZWFkZXItPndyYXBwZXIoKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzVGFibGVDZWxsKCkpIHsKLSAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dJbmRleFJhbmdl
QXR0cmlidXRlXSkgewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7Ci0gICAg
ICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9vYmplY3QpLT5y
b3dJbmRleFJhbmdlKHJvd1JhbmdlKTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1
ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93UmFuZ2Uuc2Vjb25kKV07
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlDb2x1bW5JbmRleFJhbmdlQXR0cmlidXRlXSkgewotICAgICAgICAgICAg
cGFpcjxpbnQsIGludD4gY29sdW1uUmFuZ2U7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsKj4obV9vYmplY3QpLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJh
bmdlKTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VS
YW5nZShjb2x1bW5SYW5nZS5maXJzdCwgY29sdW1uUmFuZ2Uuc2Vjb25kKV07Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSkgewotICAgICAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93
c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsKLSAgICAgICAgICAgIG1f
b2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVJvd3NBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7Ci0gICAgICAgICAgICBtX29i
amVjdC0+YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0
VG9OU0FycmF5KHJvd3NDb3B5KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gVHJl
ZVJvbGVzIGRvIG5vdCBzdXBwb3J0IGNvbHVtbnMsIGJ1dCBNYWMgQVggZXhwZWN0cyB0byBiZSBh
YmxlIHRvIGFzayBhYm91dCBjb2x1bW5zIGF0IHRoZSBsZWFzdC4KLSAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRl
XSkKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07Ci0gICAgfQotICAgIAotICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhB
dHRyaWJ1dGVdKSB7Ci0gICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKSB7Ci0gICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2Jq
ZWN0KCk7Ci0gICAgICAgICAgICBmb3IgKDsgcGFyZW50ICYmICFwYXJlbnQtPmlzVHJlZSgpOyBw
YXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKQotICAgICAgICAgICAgeyB9Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoaXMg
aXRlbSBieSBpdGVyYXRpbmcgdGhlIHBhcmVudHMuCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7Ci0gICAgICAgICAg
ICBwYXJlbnQtPmFyaWFUcmVlUm93cyhyb3dzQ29weSk7Ci0gICAgICAgICAgICBzaXplX3QgY291
bnQgPSByb3dzQ29weS5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IGNvdW50OyArK2spCi0gICAgICAgICAgICAgICAgaWYgKHJvd3NDb3B5W2tdLT53cmFwcGVyKCkg
PT0gc2VsZikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6a107Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYmxlUm93KCkpIHsKLSAgICAgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5k
ZXhBdHRyaWJ1dGVdKQotICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludDpzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3cqPihtX29iamVjdCktPnJvd0lu
ZGV4KCldOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIFRoZSByb3dzIHRoYXQgYXJl
IGNvbnNpZGVyZWQgaW5zaWRlIHRoaXMgcm93LgotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dzQ29weTsKLSAgICAg
ICAgICAgIG1fb2JqZWN0LT5hcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKHJvd3NDb3B5KTsKLSAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJvd3NDb3B5KTsKLSAgICAgICAgfSBl
bHNlIGlmIChtX29iamVjdC0+aXNBUklBVHJlZUdyaWRSb3coKSkgewotICAgICAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5Owot
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Kj4obV9vYmpl
Y3QpLT5kaXNjbG9zZWRSb3dzKHJvd3NDb3B5KTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0
VG9OU0FycmF5KHJvd3NDb3B5KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBUaGUg
cm93IHRoYXQgY29udGFpbnMgdGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUg
Zmlyc3QgcGFyZW50IHRoYXQgaXMgYSB0cmVlaXRlbS4KLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXSkg
ewotICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOwotICAg
ICAgICAgICAgd2hpbGUgKHBhcmVudCkgewotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlz
VHJlZUl0ZW0oKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigp
OwotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgdGhlIHRyZWUgaXRzZWxmLCB0
aGVuIHRoaXMgdmFsdWUgPT0gbmlsLgotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJl
ZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgICAgIHBh
cmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgICAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FSSUFUcmVlR3Jp
ZFJvdygpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cqPihtX29iamVjdCktPmRpc2Nsb3NlZEJ5Um93
KCk7Ci0gICAgICAgICAgICBpZiAoIXJvdykKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwot
ICAgICAgICAgICAgcmV0dXJuIHJvdy0+d3JhcHBlcigpOwotICAgICAgICB9Ci0gICAgfQotICAg
IAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RGlzY2xvc3VyZUxldmVsQXR0cmlidXRlXSkgewotICAgICAgICAvLyBDb252ZXJ0IGZyb20gMS1i
YXNlZCBsZXZlbCAoZnJvbSBhcmlhLWxldmVsIHNwZWMpIHRvIDAtYmFzZWQgbGV2ZWwgKE1hYykK
LSAgICAgICAgaW50IGxldmVsID0gbV9vYmplY3QtPmhpZXJhcmNoaWNhbExldmVsKCk7Ci0gICAg
ICAgIGlmIChsZXZlbCA+IDApCi0gICAgICAgICAgICBsZXZlbCAtPSAxOwotICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGV2ZWxdOwotICAgIH0KLSAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1
dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5p
c0V4cGFuZGVkKCldOwotICAgIAotICAgIGlmICgobV9vYmplY3QtPmlzTGlzdEJveCgpIHx8IG1f
b2JqZWN0LT5pc0xpc3QoKSkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIE5TQWNjZXNz
aWJpbGl0eVZlcnRpY2FsT3JpZW50YXRpb25WYWx1ZTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiXSkKLSAg
ICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbl07Ci0gICAgCi0g
ICAgaWYgKG1fb2JqZWN0LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTdGFydFRleHRNYXJrZXIiXSkKLSAgICAgICAgICAgIHJl
dHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnN0YXJ0T2ZEb2N1bWVudCht
X29iamVjdC0+cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSldOwotICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYRW5kVGV4dE1hcmtlciJdKQotICAgICAgICAgICAg
cmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246ZW5kT2ZEb2N1bWVudCht
X29iamVjdC0+cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKSldOwotICAgIH0KLSAgICAKLSAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVM
ZXZlbEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpt
X29iamVjdC0+YmxvY2txdW90ZUxldmVsKCldOwotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWFRhYmxlTGV2ZWwiXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoSW50Om1fb2JqZWN0LT50YWJsZUxldmVsKCldOwotICAgIAotICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVu
dHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBsaW5rZWRVSUVsZW1lbnRzOwotICAgICAgICBtX29iamVjdC0+bGlu
a2VkVUlFbGVtZW50cyhsaW5rZWRVSUVsZW1lbnRzKTsKLSAgICAgICAgaWYgKGxpbmtlZFVJRWxl
bWVudHMuc2l6ZSgpID09IDApCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShsaW5rZWRVSUVsZW1lbnRzKTsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1f
b2JqZWN0LT5pc1NlbGVjdGVkKCldOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0
cmlidXRlXSAmJiBtX29iamVjdC0+aXNNZW51QnV0dG9uKCkpIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogdWlFbGVtZW50ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdCo+KG1fb2JqZWN0KS0+bWVudUZvck1lbnVCdXR0b24oKTsKLSAgICAgICAgaWYgKHVpRWxl
bWVudCkKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dWlFbGVt
ZW50LT53cmFwcGVyKCldOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXSkgewot
ICAgICAgICBpZiAoIW1fb2JqZWN0LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmogPSBtX29iamVjdC0+dGl0bGVVSUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKG9iaikKLSAgICAg
ICAgICAgIHJldHVybiBvYmotPndyYXBwZXIoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlWYWx1ZURlc2NyaXB0aW9uQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0
LT52YWx1ZURlc2NyaXB0aW9uKCk7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0pIHsKLSAgICAg
ICAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIGVsZW1lbnRPcmllbnRhdGlvbiA9IG1fb2JqZWN0
LT5vcmllbnRhdGlvbigpOwotICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vz
c2liaWxpdHlPcmllbnRhdGlvblZlcnRpY2FsKQotICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNz
aWJpbGl0eVZlcnRpY2FsT3JpZW50YXRpb25WYWx1ZTsKLSAgICAgICAgaWYgKGVsZW1lbnRPcmll
bnRhdGlvbiA9PSBBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsKQotICAgICAgICAg
ICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxPcmllbnRhdGlvblZhbHVlOwotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVd
KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5z
Y3JvbGxCYXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbCk7Ci0gICAgICAgIGlm
IChzY3JvbGxCYXIpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsQmFyLT53cmFwcGVyKCk7Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxC
YXIoQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGljYWwpOwotICAgICAgICBpZiAoc2Nyb2xs
QmFyKQotICAgICAgICAgICAgcmV0dXJuIHNjcm9sbEJhci0+d3JhcHBlcigpOwotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGVdKSB7Ci0gICAgICAg
IHN3aXRjaCAobV9vYmplY3QtPnNvcnREaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgY2FzZSBT
b3J0RGlyZWN0aW9uQXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2li
aWxpdHlBc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFsdWU7Ci0gICAgICAgICAgICBjYXNlIFNvcnRE
aXJlY3Rpb25EZXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxp
dHlEZXNjZW5kaW5nU29ydERpcmVjdGlvblZhbHVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blNvcnREaXJlY3Rpb25W
YWx1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlXSkKLSAgICAgICAg
cmV0dXJuIG1fb2JqZWN0LT5sYW5ndWFnZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdKQotICAg
ICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc0V4cGFuZGVk
KCldOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc1JlcXVpcmVkKCldOwotICAgIAotICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0
ZV0pCi0gICAgICAgIHJldHVybiBtX29iamVjdC0+aW52YWxpZFN0YXR1cygpOwotICAgIAotICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3duc0F0
dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yIGFyaWFPd25zOwotICAgICAgICBtX29iamVjdC0+YXJpYU93bnNFbGVtZW50
cyhhcmlhT3ducyk7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGFyaWFPd25zKTsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDptX29iamVjdC0+aXNBUklBR3JhYmJlZCgpXTsKLSAgICAKLSAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3Rz
QXR0cmlidXRlXSkgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBkcm9wRWZmZWN0czsKLSAgICAg
ICAgbV9vYmplY3QtPmRldGVybWluZUFSSUFEcm9wRWZmZWN0cyhkcm9wRWZmZWN0cyk7Ci0gICAg
ICAgIHNpemVfdCBsZW5ndGggPSBkcm9wRWZmZWN0cy5zaXplKCk7Ci0gICAgICAgIAotICAgICAg
ICBOU011dGFibGVBcnJheSogZHJvcEVmZmVjdHNBcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTpsZW5ndGhdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKQotICAgICAgICAgICAgW2Ryb3BFZmZlY3RzQXJyYXkgYWRkT2JqZWN0OmRyb3BF
ZmZlY3RzW2ldXTsKLSAgICAgICAgcmV0dXJuIGRyb3BFZmZlY3RzQXJyYXk7Ci0gICAgfQotICAg
IAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBtX29iamVjdC0+cGxh
Y2Vob2xkZXJWYWx1ZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5hcmlhSGFzUG9wdXAoKV07Ci0gICAg
Ci0gICAgLy8gQVJJQSBMaXZlIHJlZ2lvbiBhdHRyaWJ1dGVzLgotICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUxpdmVBdHRyaWJ1dGVdKQot
ICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uU3RhdHVzKCk7Ci0gICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBUmVsZXZh
bnRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uUmVs
ZXZhbnQoKTsKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUFSSUFBdG9taWNBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOm1fb2JqZWN0LT5hcmlhTGl2ZVJlZ2lvbkF0b21pYygpXTsKLSAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFCdXN5QXR0
cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVj
dC0+YXJpYUxpdmVSZWdpb25CdXN5KCldOwotICAgIAotICAgIC8vIE1hdGhNTCBBdHRyaWJ1dGVz
LgotICAgIGlmIChtX29iamVjdC0+aXNNYXRoRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RJbmRleEF0
dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoUm9vdEluZGV4T2Jq
ZWN0KCkpID8gbV9vYmplY3QtPm1hdGhSb290SW5kZXhPYmplY3QoKS0+d3JhcHBlcigpIDogMDsK
LSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlNYXRoUm9vdFJhZGljYW5kQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiAobV9vYmpl
Y3QtPm1hdGhSYWRpY2FuZE9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRoUmFkaWNhbmRPYmplY3Qo
KS0+d3JhcHBlcigpIDogMDsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoRnJhY3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdKQotICAg
ICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aE51bWVyYXRvck9iamVjdCgpKSA/IG1fb2Jq
ZWN0LT5tYXRoTnVtZXJhdG9yT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7Ci0gICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9u
RGVub21pbmF0b3JBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0
aERlbm9taW5hdG9yT2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhEZW5vbWluYXRvck9iamVjdCgp
LT53cmFwcGVyKCkgOiAwOwotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVy
biAobV9vYmplY3QtPm1hdGhCYXNlT2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhCYXNlT2JqZWN0
KCktPndyYXBwZXIoKSA6IDA7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZV0pCi0gICAgICAgICAg
ICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoU3Vic2NyaXB0T2JqZWN0KCkpID8gbV9vYmplY3QtPm1h
dGhTdWJzY3JpcHRPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKLSAgICAgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoU3VwZXJzY3JpcHRBdHRy
aWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aFN1cGVyc2NyaXB0T2Jq
ZWN0KCkpID8gbV9vYmplY3QtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgpLT53cmFwcGVyKCkgOiAw
OwotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eU1hdGhVbmRlckF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5t
YXRoVW5kZXJPYmplY3QoKSkgPyBtX29iamVjdC0+bWF0aFVuZGVyT2JqZWN0KCktPndyYXBwZXIo
KSA6IDA7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5TWF0aE92ZXJBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIChtX29iamVj
dC0+bWF0aE92ZXJPYmplY3QoKSkgPyBtX29iamVjdC0+bWF0aE92ZXJPYmplY3QoKS0+d3JhcHBl
cigpIDogMDsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4g
bV9vYmplY3QtPm1hdGhGZW5jZWRPcGVuU3RyaW5nKCk7Ci0gICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3NlQXR0cmli
dXRlXSkKLSAgICAgICAgICAgIHJldHVybiBtX29iamVjdC0+bWF0aEZlbmNlZENsb3NlU3RyaW5n
KCk7Ci0gICAgfQotICAgIAotICAgIC8vIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJU
cmVlIGZvciB0ZXN0aW5nCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpA
IkFYQ2xpY2tQb2ludCJdKQotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6
bV9vYmplY3QtPmNsaWNrUG9pbnQoKV07Ci0gICAgCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IERS
VCB0byB2ZXJpZnkgQ1NTMyBzcGVlY2ggd29ya3MuCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpAIkFYRFJUU3BlZWNoQXR0cmlidXRlIl0pIHsKLSAgICAgICAgRVNwZWFr
IHNwZWFrUHJvcGVydHkgPSBtX29iamVjdC0+c3BlYWtQcm9wZXJ0eSgpOwotICAgICAgICBzd2l0
Y2ggKHNwZWFrUHJvcGVydHkpIHsKLSAgICAgICAgICAgIGNhc2UgU3BlYWtOb25lOgotICAgICAg
ICAgICAgICAgIHJldHVybiBAIm5vbmUiOwotICAgICAgICAgICAgY2FzZSBTcGVha1NwZWxsT3V0
OgotICAgICAgICAgICAgICAgIHJldHVybiBAInNwZWxsLW91dCI7Ci0gICAgICAgICAgICBjYXNl
IFNwZWFrRGlnaXRzOgotICAgICAgICAgICAgICAgIHJldHVybiBAImRpZ2l0cyI7Ci0gICAgICAg
ICAgICBjYXNlIFNwZWFrTGl0ZXJhbFB1bmN0dWF0aW9uOgotICAgICAgICAgICAgICAgIHJldHVy
biBAImxpdGVyYWwtcHVuY3R1YXRpb24iOwotICAgICAgICAgICAgY2FzZSBTcGVha05vUHVuY3R1
YXRpb246Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEAibm8tcHVuY3R1YXRpb24iOwotICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNhc2UgU3BlYWtOb3JtYWw6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEAibm9ybWFsIjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBV
c2VkIGJ5IERSVCB0byBmaW5kIGFuIGFjY2Vzc2libGUgbm9kZSBieSBpdHMgZWxlbWVudCBpZC4K
LSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhEUlRFbGVtZW50SWRB
dHRyaWJ1dGUiXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5nZXRBdHRyaWJ1dGUoaWRBdHRy
KTsKLSAgICAKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNl
ZFVJRWxlbWVudAotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVj
dD4gZm9jdXNlZE9iaiA9IG1fb2JqZWN0LT5mb2N1c2VkVUlFbGVtZW50KCk7Ci0gICAgCi0gICAg
aWYgKCFmb2N1c2VkT2JqKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBm
b2N1c2VkT2JqLT53cmFwcGVyKCk7Ci19Ci0KLS0gKGlkKWFjY2Vzc2liaWxpdHlIaXRUZXN0OihO
U1BvaW50KXBvaW50Ci17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVd
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIG1fb2JqZWN0LT51cGRhdGVDaGlsZHJl
bklmTmVjZXNzYXJ5KCk7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4T2JqZWN0
ID0gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7Ci0gICAg
aWYgKGF4T2JqZWN0KQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5j
ZXN0b3IoYXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVu
aWdub3JlZEFuY2VzdG9yKHNlbGYpOwotfQotCi0tIChCT09MKWFjY2Vzc2liaWxpdHlJc0F0dHJp
YnV0ZVNldHRhYmxlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQotewotICAgIGlmICghW3NlbGYg
dXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UiXSkKLSAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlXSkK
LSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRGb2N1c0F0dHJpYnV0ZSgpOwotICAgIAot
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZh
bHVlQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJp
YnV0ZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0
LT5jYW5TZXRTZWxlY3RlZEF0dHJpYnV0ZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1
dGVdKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRy
aWJ1dGUoKTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9vYmpl
Y3QtPmNhblNldEV4cGFuZGVkQXR0cmlidXRlKCk7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVd
KQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV0gfHwKLSAg
ICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRSYW5nZUF0dHJpYnV0ZV0gfHwKLSAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVd
KQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKTsK
LSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJp
bGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHJl
dHVybiBOTzsKLX0KLQotLy8gYWNjZXNzaWJpbGl0eVNob3VsZFVzZVVuaXF1ZUlkIGlzIGFuIEFw
cEtpdCBtZXRob2Qgd2Ugb3ZlcnJpZGUgc28gdGhhdAotLy8gb2JqZWN0cyB3aWxsIGJlIGdpdmVu
IGEgdW5pcXVlIElELCBhbmQgdGhlcmVmb3JlIGFsbG93IEFwcEtpdCB0byBrbm93IHdoZW4gdGhl
eQotLy8gYmVjb21lIG9ic29sZXRlIChlLmcuIHdoZW4gdGhlIHVzZXIgbmF2aWdhdGVzIHRvIGEg
bmV3IHdlYiBwYWdlLCBtYWtpbmcgdGhpcyBvbmUKLS8vIHVucmVuZGVyZWQgYnV0IG5vdCBkZWFs
bG9jYXRlZCBiZWNhdXNlIGl0IGlzIGluIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUpLgotLy8gSXQg
aXMgaW1wb3J0YW50IHRvIGNhbGwgTlNBY2Nlc3NpYmlsaXR5VW5yZWdpc3RlclVuaXF1ZUlkRm9y
VUlFbGVtZW50IGluIHRoZQotLy8gYXBwcm9wcmlhdGUgcGxhY2UgKGUuZy4gZGVhbGxvYykgdG8g
cmVtb3ZlIHRoZXNlIG5vbi1yZXRhaW5lZCByZWZlcmVuY2VzIGZyb20KLS8vIEFwcEtpdCdzIGlk
IG1hcHBpbmcgdGFibGVzLiBXZSBkbyB0aGlzIGluIGRldGFjaCBieSBjYWxsaW5nIHVucmVnaXN0
ZXJVbmlxdWVJZEZvclVJRWxlbWVudC4KLS8vCi0vLyBSZWdpc3RlcmluZyBhbiBvYmplY3QgaXMg
YWxzbyByZXF1aXJlZCBmb3Igb2JzZXJ2aW5nIG5vdGlmaWNhdGlvbnMuIE9ubHkgcmVnaXN0ZXJl
ZCBvYmplY3RzIGNhbiBiZSBvYnNlcnZlZC4KLS0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZAotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAg
cmV0dXJuIFlFUzsKLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKQotICAg
ICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVk
XTsKLSAgICByZXR1cm4gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKLX0KLQot
LSAoTlNBcnJheSogKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMKLXsK
LSAgICBpZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAKLSAgICBzdGF0aWMgTlNBcnJheSogcGFyYW1BdHRycyA9IG5pbDsK
LSAgICBzdGF0aWMgTlNBcnJheSogdGV4dFBhcmFtQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5T
QXJyYXkqIHRhYmxlUGFyYW1BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogd2ViQXJl
YVBhcmFtQXR0cnMgPSBuaWw7Ci0gICAgaWYgKHBhcmFtQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAg
IHBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKLSAgICAgICAg
ICAgICAgICAgICAgICBAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAg
ICAgICAgICAgQCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIsCi0gICAgICAgICAgICAg
ICAgICAgICAgQCJBWExpbmVGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBA
IkFYVGV4dE1hcmtlclJhbmdlRm9yTGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFRleHRN
YXJrZXJGb3JQb3NpdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWEJvdW5kc0ZvclRl
eHRNYXJrZXJSYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWEF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhUZXh0TWFy
a2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAg
QCJBWE5leHRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAg
QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAg
ICAgIEAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiLAotICAgICAgICAg
ICAgICAgICAgICAgIEAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwK
LSAgICAgICAgICAgICAgICAgICAgICBAIkFYTGVmdExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYUmlnaHRMaW5lVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFNlbnRlbmNlVGV4
dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFBh
cmFncmFwaFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAg
ICAgIEAiQVhOZXh0V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAg
ICAgICAgICAgICBAIkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIs
Ci0gICAgICAgICAgICAgICAgICAgICAgQCJBWE5leHRMaW5lRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhQcmV2aW91c0xpbmVTdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYTmV4dFNlbnRl
bmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAi
QVhQcmV2aW91c1NlbnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAg
ICAgICAgICAgICAgICAgQCJBWE5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFN0eWxlVGV4
dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWExl
bmd0aEZvclRleHRNYXJrZXJSYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlLAotICAgICAgICAgICAg
ICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRzRm9y
U2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICBuaWxdOwotICAgIH0KLSAgICAKLSAgICBpZiAodGV4dFBhcmFtQXR0cnMgPT0gbmlsKSB7
Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0cnNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDooTlNTdHJpbmcqKWtBWExpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwot
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWFJhbmdlRm9yTGluZVBh
cmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNT
dHJpbmcqKWtBWFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYUmFuZ2VGb3JQb3NpdGlvblBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJp
bmcqKWtBWFJhbmdlRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtB
WFJURkZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0OihOU1N0cmluZyopa0FYQXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyop
a0FYU3R5bGVSYW5nZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRl
eHRQYXJhbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07
Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmICh0YWJsZVBhcmFt
QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1wQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0cnNdOwotICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFy
YW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlUGFyYW1BdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJl
bGVhc2VdOwotICAgIH0KLSAgICBpZiAoIXdlYkFyZWFQYXJhbUF0dHJzKSB7Ci0gICAgICAgIE5T
TXV0YWJsZUFycmF5KiB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OnBhcmFtQXR0cnNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlUZXh0TWFya2VyRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0g
ICAgICAgIHdlYkFyZWFQYXJhbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIAot
ICAgIGlmIChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpCi0gICAgICAgIHJldHVybiBbTlNB
cnJheSBhcnJheV07Ci0gICAgCi0gICAgaWYgKCFtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBwYXJhbUF0dHJzOwotICAgIAotICAgIGlmICht
X29iamVjdC0+aXNUZXh0Q29udHJvbCgpKQotICAgICAgICByZXR1cm4gdGV4dFBhcmFtQXR0cnM7
Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAg
ICByZXR1cm4gdGFibGVQYXJhbUF0dHJzOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNNZW51
UmVsYXRlZCgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChtX29iamVjdC0+
aXNXZWJBcmVhKCkpCi0gICAgICAgIHJldHVybiB3ZWJBcmVhUGFyYW1BdHRyczsKLSAgICAKLSAg
ICByZXR1cm4gcGFyYW1BdHRyczsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVBy
ZXNzQWN0aW9uCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkK
LSAgICAgICAgW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlv
bjpOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbl07Ci0gICAgZWxzZQotICAgICAgICBtX29iamVj
dC0+cHJlc3MoKTsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFj
dGlvbgotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAg
ICAgIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNB
Y2Nlc3NpYmlsaXR5SW5jcmVtZW50QWN0aW9uXTsKLSAgICBlbHNlCi0gICAgICAgIG1fb2JqZWN0
LT5pbmNyZW1lbnQoKTsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybURlY3JlbWVu
dEFjdGlvbgotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCi0g
ICAgICAgIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246
TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QWN0aW9uXTsKLSAgICBlbHNlCi0gICAgICAgIG1fb2Jq
ZWN0LT5kZWNyZW1lbnQoKTsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dN
ZW51QWN0aW9uCi17Ci0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBDb21ib0JveFJv
bGUpCi0gICAgICAgIG1fb2JqZWN0LT5zZXRJc0V4cGFuZGVkKHRydWUpOwotICAgIGVsc2Ugewot
ICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBpbiBhbiBpdGVyYXRpb24gb2Yg
dGhlIHJ1biBsb29wIHRoYXQgZGlkIG5vdCBzdGFydCBmcm9tIGFuIEFYIGNhbGwuCi0gICAgICAg
IC8vIElmIGl0J3MgdGhlIHNhbWUgcnVuIGxvb3AgaXRlcmF0aW9uLCB0aGUgbWVudSBvcGVuIG5v
dGlmaWNhdGlvbiB3b24ndCBiZSBzZW50Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpA
c2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudSkgd2l0aE9iamVjdDpuaWwgYWZ0
ZXJEZWxheTowLjBdOwotICAgIH0KLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5U2hvd0NvbnRl
eHRNZW51Ci17Ci0gICAgUGFnZSogcGFnZSA9IG1fb2JqZWN0LT5wYWdlKCk7Ci0gICAgaWYgKCFw
YWdlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFw
cGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7Ci0gICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBtX29iamVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKLSAgICAKLSAgICAvLyBPbiBX
SzIsIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhlIHNjcm9sbCBwb3NpdGlvbi4KLSAgICAvLyBP
biBXSzEsIHRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBpdCdzIHRha2VuIGNhcmUgb2YgYnkgdGhlIGF0
dGFjaG1lbnQgdmlld3MuCi0gICAgaWYgKGZyYW1lVmlldyAmJiAhZnJhbWVWaWV3LT5wbGF0Zm9y
bVdpZGdldCgpKSB7Ci0gICAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3
IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50cyB0byB0aGUgd2luZG93LgotICAgICAgICBm
b3IgKEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3Qo
KTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgICAg
ICBpZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpIHsKLSAgICAgICAgICAg
ICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gdG9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhw
YXJlbnQpLT5zY3JvbGxWaWV3KCk7Ci0gICAgICAgICAgICAgICAgcmVjdCA9IHNjcm9sbFZpZXct
PmNvbnRlbnRzVG9Sb290VmlldyhyZWN0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwYWdlLT5jb250ZXh0TWVudUNv
bnRyb2xsZXIoKS0+c2hvd0NvbnRleHRNZW51QXQocGFnZS0+bWFpbkZyYW1lKCksIHJlY3QuY2Vu
dGVyKCkpOwotfQotCi0tICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOihOU1N0cmlu
ZyopYWN0aW9uCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKFthY3Rpb24gaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uXSkKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBl
cmZvcm1QcmVzc0FjdGlvbl07Ci0gICAgCi0gICAgZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dKQotICAgICAgICBbc2VsZiBhY2Nl
c3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uXTsKLSAgICAKLSAgICBlbHNlIGlmIChbYWN0
aW9uIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb25dKQotICAg
ICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjdGlvbl07Ci0gICAgCi0g
ICAgZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGVjcmVt
ZW50QWN0aW9uXSkKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRB
Y3Rpb25dOwotfQotCi0tICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9y
QXR0cmlidXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQotewotICAgIGlmICghW3NlbGYgdXBk
YXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlkIHRl
eHRNYXJrZXJSYW5nZSA9IG5pbDsKLSAgICBOU051bWJlciogICAgICAgICAgICAgICBudW1iZXIg
PSBuaWw7Ci0gICAgTlNTdHJpbmcqICAgICAgICAgICAgICAgc3RyaW5nID0gbmlsOwotICAgIE5T
UmFuZ2UgICAgICAgICAgICAgICAgIHJhbmdlID0gezAsIDB9OwotICAgIE5TQXJyYXkqICAgICAg
ICAgICAgICAgIGFycmF5ID0gbmlsOwotICAgIAotICAgIC8vIGRlY29kZSB0aGUgcGFyYW1ldGVy
Ci0gICAgaWYgKEFYT2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UodmFsdWUpKQotICAgICAgICB0ZXh0
TWFya2VyUmFuZ2UgPSB2YWx1ZTsKLSAgICAKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZD
bGFzczpbTlNOdW1iZXIgc2VsZl1dKQotICAgICAgICBudW1iZXIgPSB2YWx1ZTsKLSAgICAKLSAg
ICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQotICAgICAg
ICBzdHJpbmcgPSB2YWx1ZTsKLSAgICAKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNWYWx1ZSBzZWxmXV0pCi0gICAgICAgIHJhbmdlID0gW3ZhbHVlIHJhbmdlVmFsdWVdOwot
ICAgIAotICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IHNlbGZdXSkK
LSAgICAgICAgYXJyYXkgPSB2YWx1ZTsKLSAgICAKLSAgICAvLyBoYW5kbGUgdGhlIGNvbW1hbmQK
LSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0
TWFya2VyUmFuZ2UiXSkgewotICAgICAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKLSAgICAg
ICAgbV9vYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoW3NlbGYgdmlzaWJs
ZVBvc2l0aW9uUmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdlXSk7Ci0gICAg
fSBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0
eUZvY3VzZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFTU0VSVChudW1iZXIpOwotICAgICAgICBt
X29iamVjdC0+c2V0Rm9jdXNlZChbbnVtYmVyIGludFZhbHVlXSAhPSAwKTsKLSAgICB9IGVsc2Ug
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmFsdWVB
dHRyaWJ1dGVdKSB7Ci0gICAgICAgIGlmIChudW1iZXIgJiYgbV9vYmplY3QtPmNhblNldE51bWVy
aWNWYWx1ZSgpKQotICAgICAgICAgICAgbV9vYmplY3QtPnNldFZhbHVlKFtudW1iZXIgZmxvYXRW
YWx1ZV0pOwotICAgICAgICBlbHNlIGlmIChzdHJpbmcpCi0gICAgICAgICAgICBtX29iamVjdC0+
c2V0VmFsdWUoc3RyaW5nKTsKLSAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIGlm
ICghbnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX29iamVjdC0+c2V0U2Vs
ZWN0ZWQoW251bWJlciBib29sVmFsdWVdKTsKLSAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0
ZV0pIHsKLSAgICAgICAgaWYgKCFhcnJheSB8fCBtX29iamVjdC0+cm9sZVZhbHVlKCkgIT0gTGlz
dEJveFJvbGUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwotICAgICAg
ICBjb252ZXJ0VG9WZWN0b3IoYXJyYXksIHNlbGVjdGVkQ2hpbGRyZW4pOwotICAgICAgICBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdEJveCo+KG1fb2JqZWN0KS0+c2V0U2VsZWN0ZWRDaGls
ZHJlbihzZWxlY3RlZENoaWxkcmVuKTsKLSAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc1RleHRD
b250cm9sKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRlXSkgewotICAgICAgICAgICAgbV9v
YmplY3QtPnNldFNlbGVjdGVkVGV4dChzdHJpbmcpOwotICAgICAgICB9IGVsc2UgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFu
Z2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRUZXh0UmFu
Z2UoUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCkpOwotICAgICAg
ICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5VmlzaWJsZUNoYXJhY3RlclJhbmdlQXR0cmlidXRlXSkgewotICAgICAgICAgICAgbV9vYmpl
Y3QtPm1ha2VSYW5nZVZpc2libGUoUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdl
Lmxlbmd0aCkpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV0pCi0gICAgICAg
IG1fb2JqZWN0LT5zZXRJc0V4cGFuZGVkKFtudW1iZXIgYm9vbFZhbHVlXSk7Ci0gICAgZWxzZSBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
Um93c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkUm93czsKLSAgICAgICAgY29udmVydFRvVmVjdG9y
KGFycmF5LCBzZWxlY3RlZFJvd3MpOwotICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8
IG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAgICAgICAgbV9vYmplY3Qt
PnNldFNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3MpOwotICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQot
ICAgICAgICBtX29iamVjdC0+c2V0QVJJQUdyYWJiZWQoW251bWJlciBib29sVmFsdWVdKTsKLX0K
LQotc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KE5TVmlldyogdmlldykKLXsK
LSAgICBpZiAoIVt2aWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woV2ViQ29yZUZyYW1l
VmlldyldKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBOU1ZpZXc8V2ViQ29yZUZyYW1l
Vmlldz4qIGZyYW1lVmlldyA9IChOU1ZpZXc8V2ViQ29yZUZyYW1lVmlldz4qKXZpZXc7Ci0gICAg
RnJhbWUqIGZyYW1lID0gW2ZyYW1lVmlldyBfd2ViX2ZyYW1lXTsKLSAgICBpZiAoIWZyYW1lKQot
ICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBOb2RlKiBub2RlID0gZnJhbWUtPmRvY3VtZW50
KCktPm93bmVyRWxlbWVudCgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgCi0gICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7Ci19Ci0KLS0gKGlkKV9hY2Nlc3NpYmls
aXR5UGFyZW50Rm9yU3VidmlldzooTlNWaWV3KilzdWJ2aWV3Ci17Ci0gICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IHJlbmRlcmVyRm9yVmlldyhzdWJ2aWV3KTsKLSAgICBpZiAoIXJlbmRlcmVy
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
aiA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJl
bmRlcmVyKTsKLSAgICBpZiAob2JqKQotICAgICAgICByZXR1cm4gb2JqLT5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKS0+d3JhcHBlcigpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TU3RyaW5n
KilhY2Nlc3NpYmlsaXR5QWN0aW9uRGVzY3JpcHRpb246KE5TU3RyaW5nKilhY3Rpb24KLXsKLSAg
ICAvLyB3ZSBoYXZlIG5vIGN1c3RvbSBhY3Rpb25zCi0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eUFjdGlvbkRlc2NyaXB0aW9uKGFjdGlvbik7Ci19Ci0KLS8vIFRoZSBDRkF0dHJpYnV0ZWRTdHJp
bmdUeXBlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFj
Y2Vzc2liaWxpdHkKLS8vIG9iamVjdCB0aGF0IGlzIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gcmFu
Z2UuCi0tIChOU0F0dHJpYnV0ZWRTdHJpbmcqKWRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2U6
KE5TUmFuZ2UpcmFuZ2UKLXsKLSAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBQbGFpblRl
eHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKLSAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSB2aXNpYmxlUG9zUmFuZ2UgPSBtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uUmFuZ2VG
b3JSYW5nZSh0ZXh0UmFuZ2UpOwotICAgIHJldHVybiBbc2VsZiBkb0FYQXR0cmlidXRlZFN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZTpbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0
aW9uczp2aXNpYmxlUG9zUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dmlzaWJsZVBvc1JhbmdlLmVu
ZF1dOwotfQotCi0tIChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSopcmFuZ2UKLXsK
LSAgICBOU1JhbmdlIHJlc3VsdCA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwotICAgIGlm
ICghcmFuZ2UgfHwgIXJhbmdlLT5zdGFydENvbnRhaW5lcigpKQotICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5kb2N1bWVudCgp
OwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgCi0gICAg
c2l6ZV90IGxvY2F0aW9uOwotICAgIHNpemVfdCBsZW5ndGg7Ci0gICAgVGV4dEl0ZXJhdG9yOjpn
ZXRMb2NhdGlvbkFuZExlbmd0aEZyb21SYW5nZShkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCks
IHJhbmdlLCBsb2NhdGlvbiwgbGVuZ3RoKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSBsb2NhdGlv
bjsKLSAgICByZXN1bHQubGVuZ3RoID0gbGVuZ3RoOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS0gKE5TSW50ZWdlcilfaW5kZXhGb3JUZXh0TWFya2VyOihpZCltYXJrZXIKLXsKLSAg
ICBpZiAoIW1hcmtlcikKLSAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7Ci0gICAgCi0gICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtl
cjptYXJrZXJdKTsKLSAgICByZXR1cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6c2VsZWN0aW9u
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCldLmxvY2F0aW9uOwotfQotCi0tIChpZClfdGV4dE1h
cmtlckZvckluZGV4OihOU0ludGVnZXIpdGV4dEluZGV4Ci17Ci0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9vYmplY3QtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiB0ZXh0UmFuZ2UgPSBUZXh0
SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LT5kb2N1bWVudEVs
ZW1lbnQoKSwgdGV4dEluZGV4LCAwKTsKLSAgICBpZiAoIXRleHRSYW5nZSB8fCAhdGV4dFJhbmdl
LT5ib3VuZGFyeVBvaW50c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
VmlzaWJsZVBvc2l0aW9uIHBvc2l0aW9uKHRleHRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjpwb3NpdGlvbl07Ci19
Ci0KLS8vIFRoZSBSVEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQgYXNzb2NpYXRlZCB3aXRo
IHRoaXMgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCBpcwotLy8gc3BlY2lmaWVkIGJ5IHRoZSBn
aXZlbiByYW5nZS4KLS0gKE5TRGF0YSopZG9BWFJURkZvclJhbmdlOihOU1JhbmdlKXJhbmdlCi17
Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nID0gW3NlbGYgZG9BWEF0dHJpYnV0
ZWRTdHJpbmdGb3JSYW5nZTpyYW5nZV07Ci0gICAgcmV0dXJuIFthdHRyU3RyaW5nIFJURkZyb21S
YW5nZTogTlNNYWtlUmFuZ2UoMCwgW2F0dHJTdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1
dGVzOiBuaWxdOwotfQotCi0tIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3Ry
aW5nKilhdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOihpZClwYXJhbWV0ZXIKLXsKLSAgICBpZCB0ZXh0
TWFya2VyID0gbmlsOwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IG5pbDsKLSAgICBOU051bWJl
ciogbnVtYmVyID0gbmlsOwotICAgIE5TQXJyYXkqIGFycmF5ID0gbmlsOwotICAgIE5TRGljdGlv
bmFyeSogZGljdGlvbmFyeSA9IG5pbDsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
dWlFbGVtZW50ID0gMDsKLSAgICBOU1BvaW50IHBvaW50ID0gTlNaZXJvUG9pbnQ7Ci0gICAgYm9v
bCBwb2ludFNldCA9IGZhbHNlOwotICAgIE5TUmFuZ2UgcmFuZ2UgPSB7MCwgMH07Ci0gICAgYm9v
bCByYW5nZVNldCA9IGZhbHNlOwotICAgIAotICAgIC8vIGJhc2ljIHBhcmFtZXRlciB2YWxpZGF0
aW9uCi0gICAgaWYgKCFtX29iamVjdCB8fCAhYXR0cmlidXRlIHx8ICFwYXJhbWV0ZXIpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5n
U3RvcmVdKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIC8vIGNvbW1vbiBwYXJhbWV0
ZXIgdHlwZSBjaGVjay9jYXN0aW5nLiAgTmlsIGNoZWNrcyBpbiBoYW5kbGVycyBjYXRjaCB3cm9u
ZyB0eXBlIGNhc2UuCi0gICAgLy8gTk9URTogVGhpcyBhc3N1bWVzIG5pbCBpcyBub3QgYSB2YWxp
ZCBwYXJhbWV0ZXIsIGJlY2F1c2UgaXQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbQotICAgIC8v
IGEgcGFyYW1ldGVyIG9mIHRoZSB3cm9uZyB0eXBlLgotICAgIGlmIChBWE9iamVjdElzVGV4dE1h
cmtlcihwYXJhbWV0ZXIpKQotICAgICAgICB0ZXh0TWFya2VyID0gcGFyYW1ldGVyOwotICAgIAot
ICAgIGVsc2UgaWYgKEFYT2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UocGFyYW1ldGVyKSkKLSAgICAg
ICAgdGV4dE1hcmtlclJhbmdlID0gcGFyYW1ldGVyOwotICAgIAotICAgIGVsc2UgaWYgKFtwYXJh
bWV0ZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZl1d
KQotICAgICAgICB1aUVsZW1lbnQgPSBbKFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilw
YXJhbWV0ZXIgYWNjZXNzaWJpbGl0eU9iamVjdF07Ci0gICAgCi0gICAgZWxzZSBpZiAoW3BhcmFt
ZXRlciBpc0tpbmRPZkNsYXNzOltOU051bWJlciBzZWxmXV0pCi0gICAgICAgIG51bWJlciA9IHBh
cmFtZXRlcjsKLSAgICAKLSAgICBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05T
QXJyYXkgc2VsZl1dKQotICAgICAgICBhcnJheSA9IHBhcmFtZXRlcjsKLSAgICAKLSAgICBlbHNl
IGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBzZWxmXV0pCi0gICAg
ICAgIGRpY3Rpb25hcnkgPSBwYXJhbWV0ZXI7Ci0gICAgCi0gICAgZWxzZSBpZiAoW3BhcmFtZXRl
ciBpc0tpbmRPZkNsYXNzOltOU1ZhbHVlIHNlbGZdXSAmJiBzdHJjbXAoWyhOU1ZhbHVlKilwYXJh
bWV0ZXIgb2JqQ1R5cGVdLCBAZW5jb2RlKE5TUG9pbnQpKSA9PSAwKSB7Ci0gICAgICAgIHBvaW50
U2V0ID0gdHJ1ZTsKLSAgICAgICAgcG9pbnQgPSBbKE5TVmFsdWUqKXBhcmFtZXRlciBwb2ludFZh
bHVlXTsKLSAgICAgICAgCi0gICAgfSBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6
W05TVmFsdWUgc2VsZl1dICYmIHN0cmNtcChbKE5TVmFsdWUqKXBhcmFtZXRlciBvYmpDVHlwZV0s
IEBlbmNvZGUoTlNSYW5nZSkpID09IDApIHsKLSAgICAgICAgcmFuZ2VTZXQgPSB0cnVlOwotICAg
ICAgICByYW5nZSA9IFsoTlNWYWx1ZSopcGFyYW1ldGVyIHJhbmdlVmFsdWVdOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIC8vIEF0dHJpYnV0ZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIEFsbG93IHN1
cGVyIHRvIGhhbmRsZS4KLSAgICAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6YXR0cmlidXRlIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwotICAgIH0KLSAgICAK
LSAgICAvLyBkaXNwYXRjaAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSAwOwot
ICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU3RhcnRFbGVtZW50Il0g
aXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZl1dKQotICAg
ICAgICAgICAgc3RhcnRPYmplY3QgPSBbKFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilb
ZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGFjY2Vzc2liaWxpdHlP
YmplY3RdOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBz
ZWFyY2hEaXJlY3Rpb24gPSBTZWFyY2hEaXJlY3Rpb25OZXh0OwotICAgICAgICBpZiAoW1tkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYRGlyZWN0aW9uIl0gaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgc2VsZl1dKQotICAgICAgICAgICAgc2VhcmNoRGlyZWN0aW9uID0gKFsoTlNTdHJpbmcqKVtk
aWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYRGlyZWN0aW9uIl0gaXNFcXVhbFRvU3RyaW5nOkAi
QVhEaXJlY3Rpb25OZXh0Il0pID8gU2VhcmNoRGlyZWN0aW9uTmV4dCA6IFNlYXJjaERpcmVjdGlv
blByZXZpb3VzOwotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFy
Y2hLZXkgPSBBbnlUeXBlU2VhcmNoS2V5OwotICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVj
dEZvcktleTpAIkFYU2VhcmNoS2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQot
ICAgICAgICAgICAgc2VhcmNoS2V5ID0gYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZygo
Q0ZTdHJpbmdSZWYpW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXSk7Ci0g
ICAgICAgIAotICAgICAgICBTdHJpbmcgc2VhcmNoVGV4dDsKLSAgICAgICAgaWYgKFtbZGljdGlv
bmFyeSBvYmplY3RGb3JLZXk6QCJBWFNlYXJjaFRleHQiXSBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBzZWxmXV0pCi0gICAgICAgICAgICBzZWFyY2hUZXh0ID0gKENGU3RyaW5nUmVmKVtkaWN0aW9u
YXJ5IG9iamVjdEZvcktleTpAIkFYU2VhcmNoVGV4dCJdOwotICAgICAgICAKLSAgICAgICAgdW5z
aWduZWQgcmVzdWx0c0xpbWl0ID0gMDsKLSAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6QCJBWFJlc3VsdHNMaW1pdCJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIHNlbGZdXSkK
LSAgICAgICAgICAgIHJlc3VsdHNMaW1pdCA9IFsoTlNOdW1iZXIqKVtkaWN0aW9uYXJ5IG9iamVj
dEZvcktleTpAIkFYUmVzdWx0c0xpbWl0Il0gdW5zaWduZWRJbnRWYWx1ZV07Ci0gICAgICAgIAot
ICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3JpdGVyaWEgPSB7c3RhcnRPYmpl
Y3QsIHNlYXJjaERpcmVjdGlvbiwgc2VhcmNoS2V5LCAmc2VhcmNoVGV4dCwgcmVzdWx0c0xpbWl0
fTsKLSAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciByZXN1bHRzOwotICAgICAgICBtX29iamVjdC0+ZmluZE1hdGNoaW5nT2Jq
ZWN0cygmY3JpdGVyaWEsIHJlc3VsdHMpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGNvbnZl
cnRUb05TQXJyYXkocmVzdWx0cyk7Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySXNWYWxpZFBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSBbc2VsZiB2aXNp
YmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwotICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOiFwb3MuaXNOdWxsKCldOwotICAgIH0KLSAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhGb3JUZXh0TWFya2Vy
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoSW50ZWdlcjpbc2VsZiBfaW5kZXhGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdXTsKLSAg
ICB9Ci0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIHJldHVy
biBbc2VsZiBfdGV4dE1hcmtlckZvckluZGV4OltudW1iZXIgaW50ZWdlclZhbHVlXV07Ci0gICAg
fQotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50
Rm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0g
W3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IG1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5
T2JqZWN0Rm9yUG9zaXRpb24odmlzaWJsZVBvcyk7Ci0gICAgICAgIGlmICghYXhPYmplY3QpCi0g
ICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gYXhPYmplY3QtPndyYXBwZXIo
KTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhU
ZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2cFJhbmdlID0gdWlFbGVtZW50LmdldCgpLT52aXNpYmxlUG9zaXRpb25SYW5nZSgpOwot
ICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6
dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0gICAgfQotICAgIAotICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGluZUZvclRleHRNYXJrZXIiXSkg
ewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6bV9vYmplY3QtPmxpbmVGb3JQb3NpdGlvbih2aXNpYmxl
UG9zKV07Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpA
IkFYVGV4dE1hcmtlclJhbmdlRm9yTGluZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKFtudW1i
ZXIgaW50VmFsdWVdKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21W
aXNpYmxlUG9zaXRpb25zOnZwUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dnBSYW5nZS5lbmRdOwot
ICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZp
c2libGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJh
bmdlOnRleHRNYXJrZXJSYW5nZV07Ci0gICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nRm9y
VmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc1JhbmdlKTsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyRm9yUG9zaXRpb24i
XSkgewotICAgICAgICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludCk7Ci0g
ICAgICAgIHJldHVybiBwb2ludFNldCA/IFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRp
b246bV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCldIDogbmls
OwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEJv
dW5kc0ZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdl
IHZpc2libGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtl
clJhbmdlOnRleHRNYXJrZXJSYW5nZV07Ci0gICAgICAgIE5TUmVjdCByZWN0ID0gbV9vYmplY3Qt
PmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NSYW5nZSk7Ci0gICAgICAg
IHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSZWN0OnJlY3RdOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Qm91bmRzRm9yUmFu
Z2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3Rh
cnQgPSBtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgocmFuZ2UubG9jYXRpb24pOwot
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5kID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZv
ckluZGV4KHJhbmdlLmxvY2F0aW9uK3JhbmdlLmxlbmd0aCk7Ci0gICAgICAgIGlmIChzdGFydC5p
c051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAg
ICBOU1JlY3QgcmVjdCA9IG1fb2JqZWN0LT5ib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShW
aXNpYmxlUG9zaXRpb25SYW5nZShzdGFydCwgZW5kKSk7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0OnJlY3RdOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVk
QXR0cmlidXRlXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBtX29iamVjdC0+
dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgocmFuZ2UubG9jYXRpb24pOwotICAgICAgICBWaXNpYmxl
UG9zaXRpb24gZW5kID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLmxv
Y2F0aW9uK3JhbmdlLmxlbmd0aCk7Ci0gICAgICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQu
aXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gbV9vYmpl
Y3QtPnN0cmluZ0ZvclZpc2libGVQb3NpdGlvblJhbmdlKFZpc2libGVQb3NpdGlvblJhbmdlKHN0
YXJ0LCBlbmQpKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIl0pCi0gICAgICAgIHJl
dHVybiBbc2VsZiBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFy
a2VyUmFuZ2VdOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFY
VGV4dE1hcmtlclJhbmdlRm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiXSkgewotICAgICAgICBpZiAo
W2FycmF5IGNvdW50XSA8IDIpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAKLSAg
ICAgICAgaWQgdGV4dE1hcmtlcjEgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDowXTsKLSAgICAgICAg
aWQgdGV4dE1hcmtlcjIgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDoxXTsKLSAgICAgICAgaWYgKCFB
WE9iamVjdElzVGV4dE1hcmtlcih0ZXh0TWFya2VyMSkgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2Vy
KHRleHRNYXJrZXIyKSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvczEgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JU
ZXh0TWFya2VyOih0ZXh0TWFya2VyMSldOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvczIgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyMild
OwotICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnZpc2li
bGVQb3NpdGlvblJhbmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKHZpc2libGVQb3MxLCB2aXNpYmxl
UG9zMik7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBv
c2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9
IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAg
ICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPm5l
eHRWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcyldOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2li
bGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtz
ZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPnByZXZpb3VzVmlzaWJs
ZVBvc2l0aW9uKHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIi
XSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQ
b3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdnBSYW5nZSA9IG1fb2JqZWN0LT5wb3NpdGlvbk9mTGVmdFdvcmQodmlzaWJsZVBv
cyk7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0
aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAg
Ci0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSaWdodFdvcmRUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07
Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cG9zaXRp
b25PZlJpZ2h0V29yZCh2aXNpYmxlUG9zKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJr
ZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOnZwUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dnBS
YW5nZS5lbmRdOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWExlZnRMaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAg
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4
dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJh
bmdlID0gbV9vYmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvcyk7
Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9u
czp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSaWdodExpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0g
ICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cmlnaHRMaW5l
VmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvcyk7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0
ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0
aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewot
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdnBSYW5nZSA9IG1fb2JqZWN0LT5zZW50ZW5jZUZvclBvc2l0aW9uKHZpc2libGVQb3MpOwot
ICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6
dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0gICAgfQotICAgIAotICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
ID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAg
ICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnBhcmFncmFwaEZv
clBvc2l0aW9uKHZpc2libGVQb3MpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJh
bmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdl
LmVuZF07Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpA
IkFYTmV4dFdvcmRFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2li
bGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtl
cjoodGV4dE1hcmtlcildOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2li
bGVQb3NpdGlvbjptX29iamVjdC0+bmV4dFdvcmRFbmQodmlzaWJsZVBvcyldOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzV29yZFN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJr
ZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246
bV9vYmplY3QtPnByZXZpb3VzV29yZFN0YXJ0KHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0g
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0TGluZUVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Mg
PSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAg
ICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5u
ZXh0TGluZUVuZFBvc2l0aW9uKHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQcmV2aW91c0xpbmVTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBb
c2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5wcmV2
aW91c0xpbmVTdGFydFBvc2l0aW9uKHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0g
W3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjptX29iamVjdC0+bmV4
dFNlbnRlbmNlRW5kUG9zaXRpb24odmlzaWJsZVBvcyldOwotICAgIH0KLSAgICAKLSAgICBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQ
b3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0g
ICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0
LT5wcmV2aW91c1NlbnRlbmNlU3RhcnRQb3NpdGlvbih2aXNpYmxlUG9zKV07Ci0gICAgfQotICAg
IAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFBhcmFncmFwaEVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZp
c2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2Vy
KV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1f
b2JqZWN0LT5uZXh0UGFyYWdyYXBoRW5kUG9zaXRpb24odmlzaWJsZVBvcyldOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzUGFyYWdy
YXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4
dE1hcmtlcildOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3Np
dGlvbjptX29iamVjdC0+cHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKHZpc2libGVQb3Mp
XTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhT
dHlsZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRl
eHRNYXJrZXIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1fb2Jq
ZWN0LT5zdHlsZVJhbmdlRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7Ci0gICAgICAgIHJldHVybiBb
c2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVu
ZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhMZW5ndGhGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAg
ICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zUmFuZ2UgPSBbc2VsZiB2aXNpYmxlUG9z
aXRpb25SYW5nZUZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwotICAgICAgICBp
bnQgbGVuZ3RoID0gbV9vYmplY3QtPmxlbmd0aEZvclZpc2libGVQb3NpdGlvblJhbmdlKHZpc2li
bGVQb3NSYW5nZSk7Ci0gICAgICAgIGlmIChsZW5ndGggPCAwKQotICAgICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Omxlbmd0aF07Ci0g
ICAgfQotICAgIAotICAgIC8vIFVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSAoc28gZmFyKS4K
LSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdl
OnRleHRNYXJrZXJSYW5nZV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlz
aWJsZVBvc2l0aW9uOnZpc2libGVQb3NSYW5nZS5zdGFydF07Ci0gICAgfQotICAgIAotICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5n
ZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJr
ZXJSYW5nZV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0
aW9uOnZpc2libGVQb3NSYW5nZS5lbmRdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3Qt
PmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVk
QXR0cmlidXRlXSkgewotICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkgY291
bnRdICE9IDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlUYWJsZUNlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUq
PihtX29iamVjdCktPmNlbGxGb3JDb2x1bW5BbmRSb3coW1thcnJheSBvYmplY3RBdEluZGV4OjBd
IHVuc2lnbmVkSW50VmFsdWVdLCBbW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gdW5zaWduZWRJbnRW
YWx1ZV0pOwotICAgICAgICAgICAgaWYgKCFjZWxsKQotICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBjZWxsLT53cmFwcGVyKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RleHRDb250cm9sKCkp
IHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcgKilr
QVhMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewotICAgICAgICAgICAgaW50
IGxpbmVOdW1iZXIgPSBtX29iamVjdC0+ZG9BWExpbmVGb3JJbmRleChbbnVtYmVyIGludFZhbHVl
XSk7Ci0gICAgICAgICAgICBpZiAobGluZU51bWJlciA8IDApCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVk
SW50OmxpbmVOdW1iZXJdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyAqKWtBWFJhbmdlRm9yTGluZVBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2Ug
PSBtX29iamVjdC0+ZG9BWFJhbmdlRm9yTGluZShbbnVtYmVyIGludFZhbHVlXSk7Ci0gICAgICAg
ICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5n
ZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyopa0FYU3RyaW5nRm9y
UmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewotICAgICAgICAgICAgUGxhaW5UZXh0UmFu
Z2UgcGxhaW5UZXh0UmFuZ2UgPSBQbGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2Uu
bGVuZ3RoKTsKLSAgICAgICAgICAgIHJldHVybiByYW5nZVNldCA/IChpZCkobV9vYmplY3QtPmRv
QVhTdHJpbmdGb3JSYW5nZShwbGFpblRleHRSYW5nZSkpIDogbmlsOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyop
a0FYUmFuZ2VGb3JQb3NpdGlvblBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAg
ICBpZiAoIXBvaW50U2V0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAg
ICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludCk7Ci0gICAgICAgICAgICBQ
bGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+ZG9BWFJhbmdlRm9yUG9zaXRpb24o
d2ViQ29yZVBvaW50KTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5n
ZTogTlNNYWtlUmFuZ2UodGV4dFJhbmdlLnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzog
KE5TU3RyaW5nKilrQVhSYW5nZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IG1fb2JqZWN0LT5kb0FYUmFuZ2VG
b3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7Ci0gICAgICAgICAgICByZXR1cm4gW05TVmFsdWUg
dmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdlLmxl
bmd0aCldOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6IChOU1N0cmluZyopa0FYQm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0
cmlidXRlXSkgewotICAgICAgICAgICAgaWYgKCFyYW5nZVNldCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbmlsOwotICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2UgPSBQ
bGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKLSAgICAgICAgICAg
IE5TUmVjdCByZWN0ID0gbV9vYmplY3QtPmRvQVhCb3VuZHNGb3JSYW5nZShwbGFpblRleHRSYW5n
ZSk7Ci0gICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKLSAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
OiAoTlNTdHJpbmcqKWtBWFJURkZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pCi0gICAg
ICAgICAgICByZXR1cm4gcmFuZ2VTZXQgPyBbc2VsZiBkb0FYUlRGRm9yUmFuZ2U6cmFuZ2VdIDog
bmlsOwotICAgICAgICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAo
TlNTdHJpbmcqKWtBWEF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVdKQotICAgICAgICAgICAgcmV0dXJuIHJhbmdlU2V0ID8gW3NlbGYgZG9BWEF0dHJpYnV0ZWRT
dHJpbmdGb3JSYW5nZTpyYW5nZV0gOiBuaWw7Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyopa0FYU3R5bGVSYW5nZUZvckluZGV4UGFy
YW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRS
YW5nZSA9IG1fb2JqZWN0LT5kb0FYU3R5bGVSYW5nZUZvckluZGV4KFtudW1iZXIgaW50VmFsdWVd
KTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTogTlNNYWtlUmFu
Z2UodGV4dFJhbmdlLnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgCi0gICAgLy8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRs
ZXMgdGhhdCBhcmUgbm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVs
ZW1lbnQncyBhdHRyaWJ1dGVzLgotICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3Nl
ZCB0byBzdXBlci4KLSAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07Ci19Ci0KLS0gKEJPT0wpYWNjZXNz
aWJpbGl0eVN1cHBvcnRzT3ZlcnJpZGRlbkF0dHJpYnV0ZXMKLXsKLSAgICByZXR1cm4gWUVTOwot
fQotCi0tIChCT09MKWFjY2Vzc2liaWxpdHlTaG91bGRVc2VVbmlxdWVJZAotewotICAgIC8vIEFs
bCBBWCBvYmplY3Qgd3JhcHBlcnMgc2hvdWxkIHVzZSB1bmlxdWUgSUQncyBiZWNhdXNlIGl0J3Mg
ZmFzdGVyIHdpdGhpbiBBcHBLaXQgdG8gbG9vayB0aGVtIHVwLgotICAgIHJldHVybiBZRVM7Ci19
Ci0KLS8vIEFQSSB0aGF0IEFwcEtpdCB1c2VzIGZvciBmYXN0ZXIgYWNjZXNzCi0tIChOU1VJbnRl
Z2VyKWFjY2Vzc2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkCi17Ci0gICAgaWYgKCFbc2Vs
ZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsK
LSAgICAKLSAgICAvLyBUcmVlIG9iamVjdHMgcmV0dXJuIHRoZWlyIHJvd3MgYXMgdGhlaXIgY2hp
bGRyZW4uIFdlIGNhbiB1c2UgdGhlIG9yaWdpbmFsIG1ldGhvZAotICAgIC8vIGhlcmUsIGJlY2F1
c2Ugd2Ugd29uJ3QgZ2FpbiBhbnkgc3BlZWQgdXAuCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUo
KSkKLSAgICAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOmNoaWxk
XTsKLSAgICAKLSAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7Ci0gICAgCi0gICAg
aWYgKGNoaWxkcmVuLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiByZW5kZXJXaWRn
ZXRDaGlsZHJlbl0gaW5kZXhPZk9iamVjdDpjaGlsZF07Ci0gICAgCi0gICAgdW5zaWduZWQgY291
bnQgPSBjaGlsZHJlbi5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNvdW50
OyArK2spIHsKLSAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIg
PSBjaGlsZHJlbltrXS0+d3JhcHBlcigpOwotICAgICAgICBpZiAod3JhcHBlciA9PSBjaGlsZCB8
fCAoY2hpbGRyZW5ba10tPmlzQXR0YWNobWVudCgpICYmIFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3
XSA9PSBjaGlsZCkpCi0gICAgICAgICAgICByZXR1cm4gazsKLSAgICB9Ci0gICAgCi0gICAgcmV0
dXJuIE5TTm90Rm91bmQ7Ci19Ci0KLS0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0
cmlidXRlQ291bnQ6KE5TU3RyaW5nICopYXR0cmlidXRlCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRh
dGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1
dGVdKSB7Ci0gICAgICAgIC8vIFRyZWUgaXRlbXMgb2JqZWN0IHJldHVybnMgYSBkaWZmZXJlbnQg
c2V0IG9mIGNoaWxkcmVuIHRoYW4gdGhvc2UgdGhhdCBhcmUgaW4gY2hpbGRyZW4oKQotICAgICAg
ICAvLyBiZWNhdXNlIGFuIEFYT3V0bGluZSAodGhlIG1hYyByb2xlIGlzIGJlY29tZXMpIGhhcyBz
b21lIG9kZCBzdGlwdWxhdGlvbnMuCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlKCkgfHwg
bV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkKLSAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBj
b3VudF07Ci0gICAgICAgIAotICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7
Ci0gICAgICAgIGlmIChjaGlsZHJlbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gW1tz
ZWxmIHJlbmRlcldpZGdldENoaWxkcmVuXSBjb3VudF07Ci0gICAgICAgIAotICAgICAgICByZXR1
cm4gY2hpbGRyZW4uc2l6ZSgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gW3N1cGVyIGFjY2Vz
c2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OmF0dHJpYnV0ZV07Ci19Ci0KLS0gKE5TQXJyYXkg
KilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0cmlidXRl
IGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Ci17
Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5jaGls
ZHJlbigpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBbc2Vs
ZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0gICAgICAgICAgICBpZiAoIWNoaWxkcmVuKQotICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5TVUlu
dGVnZXIgY2hpbGRDb3VudCA9IFtjaGlsZHJlbiBjb3VudF07Ci0gICAgICAgICAgICBpZiAoaW5k
ZXggPj0gY2hpbGRDb3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBOU1VJbnRlZ2VyIGFycmF5TGVuZ3RoID0gbWluKGNoaWxkQ291bnQg
LSBpbmRleCwgbWF4Q291bnQpOwotICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbiBzdWJhcnJh
eVdpdGhSYW5nZTpOU01ha2VSYW5nZShpbmRleCwgYXJyYXlMZW5ndGgpXTsKLSAgICAgICAgfSBl
bHNlIGlmIChtX29iamVjdC0+aXNUcmVlKCkpIHsKLSAgICAgICAgICAgIC8vIFRyZWUgb2JqZWN0
cyByZXR1cm4gdGhlaXIgcm93cyBhcyB0aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3Jp
Z2luYWwgbWV0aG9kIGluIHRoaXMgY2FzZS4KLSAgICAgICAgICAgIHJldHVybiBbc3VwZXIgYWNj
ZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOmF0dHJpYnV0ZSBpbmRleDppbmRleCBtYXhD
b3VudDptYXhDb3VudF07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4gPSBt
X29iamVjdC0+Y2hpbGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRDb3VudCA9IGNoaWxk
cmVuLnNpemUoKTsKLSAgICAgICAgaWYgKGluZGV4ID49IGNoaWxkQ291bnQpCi0gICAgICAgICAg
ICByZXR1cm4gbmlsOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gbWlu
KGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOwotICAgICAgICAKLSAgICAgICAgTlNNdXRh
YmxlQXJyYXkgKnN1YmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmF2
YWlsYWJsZV07Ci0gICAgICAgIGZvciAodW5zaWduZWQgYWRkZWQgPSAwOyBhZGRlZCA8IGF2YWls
YWJsZTsgKytpbmRleCwgKythZGRlZCkgewotICAgICAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIqIHdyYXBwZXIgPSBjaGlsZHJlbltpbmRleF0tPndyYXBwZXIoKTsKLSAgICAg
ICAgICAgIGlmICh3cmFwcGVyKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGF0dGFjaG1lbnQg
dmlldyBzaG91bGQgYmUgcmV0dXJuZWQsIG90aGVyd2lzZSBBWCBwYWxpbmRyb21lIGVycm9ycyBv
Y2N1ci4KLSAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5baW5kZXhdLT5pc0F0dGFjaG1lbnQo
KSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAgICAgIFtzdWJh
cnJheSBhZGRPYmplY3Q6W3dyYXBwZXIgYXR0YWNobWVudFZpZXddXTsKLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBzdWJh
cnJheTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXJyYXlB
dHRyaWJ1dGVWYWx1ZXM6YXR0cmlidXRlIGluZGV4OmluZGV4IG1heENvdW50Om1heENvdW50XTsK
LX0KLQotQGVuZAotCi0jZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1t
CShyZXZpc2lvbiAxNDMxMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9B
WE9iamVjdENhY2hlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgot
I2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKKyNpbXBvcnQgIldl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAKICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01MSw3ICs1MSw3IEBA
CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmopCiB7Ci0gICAgUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiB3
cmFwcGVyKEFkb3B0TlMsIFtbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMgYWxsb2Nd
IGluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDpvYmpdKTsKKyAgICBSZXRhaW5QdHI8V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI+IHdyYXBwZXIoQWRvcHROUywgW1tXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhbGxvY10gaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0Om9ial0p
OwogICAgIG9iai0+c2V0V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIApJbmRleDogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgJKHJldmlzaW9uIDE0MzEzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTUgQEAKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCi0jZGVmaW5l
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKKyNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlX2gKKyNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlX2gKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVj
dDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIH0KIAotQGludGVyZmFjZSBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciA6IE5TT2JqZWN0IHsKK0BpbnRlcmZhY2UgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlIDogTlNPYmplY3QgewogICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3QqIG1fb2JqZWN0OwogfQogIApAQCAtNDksNCArNDksNCBAQAogCiBAZW5kCiAKLSNl
bmRpZiAvLyBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCisjZW5kaWYgLy8gV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0MzEzNikKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjE5LDggKzIxOSw4IEBACiAJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAv
KiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJl
c291cmNlLmNwcCAqLzsgfTsKIAkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5RDQx
NDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8qIFNW
R0ltYWdlQ2FjaGUuY3BwICovOyB9OwotCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZH
SW1hZ2VDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEY4NTlENDE0NjNGOUNE
MDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTM0IC8qIFNW
R0ltYWdlRm9yQ29udGFpbmVyLmNwcCAqLzsgfTsKKwkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTMz
IC8qIFNWR0ltYWdlQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5RDUx
NDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzQg
LyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwOEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmli
dXRlVG9Qcm9wZXJ0eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5jcHAgKi87IH07CiAJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRy
aWJ1dGVUb1Byb3BlcnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwOEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9w
ZXJ0eU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC03NzgsOCArNzc4LDggQEAKIAkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vz
c2liaWxpdHlMaXN0Qm94T3B0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyOUE4MTIyNDBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uaCAqLzsgfTsKIAkJMjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vz
c2liaWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOUE4MTIyNTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3gu
aCAqLzsgfTsKIAkJMjlBODEyNDgwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmpl
Y3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OUE4MTI0NDBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSAqLzsg
fTsKLQkJMjlBODEyNDkwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
OUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
aCAqLzsgfTsKLQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLm1tICovOyB9OworCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLmggKi87IH07CisJCTI5QTgxMjRBMEZCQjlDQTkwMDUxMDI5
MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NjBGQkI5Q0E5MDA1MTAyOTMg
LyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tICovOyB9OwogCQkyOUE4MTI0
QjBGQkI5Q0E5MDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QTgxMjQ3MEZCQjlDQTkwMDUxMDI5MyAv
KiBBWE9iamVjdENhY2hlTWFjLm1tICovOyB9OwogCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNBNUYg
LyogQWNjZXNzaWJpbGl0eU1vY2tPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUNCMjExMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdC5oICovOyB9OwogCQkyOUFDQjIxNDE0M0U3NDk4MDA2QkNBNUYgLyogQWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjlBQ0IyMTMxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlN
b2NrT2JqZWN0LmNwcCAqLzsgfTsKQEAgLTM3MDgsNyArMzcwOCw2IEBACiAJCTk3QjhGRkQxMTZB
RTdGOTYwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0I4RkZDRjE2QUU3Rjky
MDAzODM4OEQgLyogQ2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oICovOyB9OwogCQk5
N0JDNjlEQTE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ2MTUwNUYwNzYwMDFC
NzRBQyAvKiBEYXRhYmFzZUJhY2tlbmQuY3BwICovOyB9OwogCQk5N0JDNjlEQjE1MDVGMDc2MDAx
Qjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNr
ZW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJ
RkUzNkZEMTUxNkM3ODI2NTAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxMTE2Qzc4MjY0MDBG
ODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJOTdCQzY5REMxNTA1RjA3NjAw
MUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFu
Z2VWZXJzaW9uV3JhcHBlci5jcHAgKi87IH07CiAJCTk3QkM2OUREMTUwNUYwNzYwMDFCNzRBQyAv
KiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25X
cmFwcGVyLmggKi87IH07CiAJCTk3QkM2QTIwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlE
RTE1MDVGMDgxMDAxQjc0QUMgLyogRGF0YWJhc2UuY3BwICovOyB9OwpAQCAtMzc0MiwyNyArMzc0
MSwxOCBAQAogCQk5N0JDNkE0NTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMUmVzdWx0U2V0Um93TGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZB
MDMxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuaCAqLzsgfTsKIAkJOTdC
QzZBNDcxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkEwNTE1MDVGMDgxMDAxQjc0QUMg
LyogU1FMU3RhdGVtZW50LmNwcCAqLzsgfTsKIAkJOTdCQzZBNDgxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTdCQzZBMDYxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5oICovOyB9Owot
CQlGRThBNjc0NzE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRThBNjc0NTE2Q0RE
MTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgKi87IH07Ci0JCUZFOEE2NzQ4
MTZDREQxOUUwMDkzMEJGOCAvKiBTUUxTdGF0ZW1lbnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRThBNjc0NjE2Q0REMTlFMDA5MzBCRjgg
LyogU1FMU3RhdGVtZW50QmFja2VuZC5oICovOyB9OwogCQk5N0JDNkE0OTE1MDVGMDgxMDAxQjc0
QUMgLyogU1FMU3RhdGVtZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2QTA3MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1l
bnRDYWxsYmFjay5oICovOyB9OwogCQk5N0JDNkE0QjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTdCQzZBMDkxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudEVycm9y
Q2FsbGJhY2suaCAqLzsgfTsKIAkJOTdCQzZBNEQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRl
bWVudFN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdCQzZBMEIxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudFN5bmMuY3BwICovOyB9
OwogCQk5N0JDNkE0RTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50U3luYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMEMxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudFN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBNEYxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2QTBEMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFu
c2FjdGlvbi5jcHAgKi87IH07CiAJCTk3QkM2QTUwMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFu
c2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdCQzZBMEUxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uLmggKi87IH07Ci0JCUZF
RTE4MTEzMTZDMzE5RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVFMTgxMTExNkMzMTlF
ODAwMDg0ODQ5IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgKi87IH07Ci0JCUZFRTE4MTE0
MTZDMzE5RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTE4MTEyMTZDMzE5RTgwMDA4NDg0
OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCAqLzsgfTsKLQkJRkVBRDdEODcxNkMzMzlFRTAw
RDQ2NzBCIC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODUxNkMzMzlFRTAwRDQ2NzBCIC8q
IFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwICovOyB9OwotCQlGRUFEN0Q4ODE2QzMzOUVF
MDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODYxNkMzMzlFRTAwRDQ2NzBCIC8q
IFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBNTIxNTA1RjA4MTAw
MUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2QTEwMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrLmggKi87IH07CiAJCTk3QkM2QTU0MTUwNUYwODEwMDFCNzRBQyAv
KiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkExMjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rp
b25DbGllbnQuY3BwICovOyB9OwogCQk5N0JDNkE1NTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJh
bnNhY3Rpb25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3QkM2QTEzMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5o
ICovOyB9OwogCQk5N0JDNkE1NjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0JDNkExNDE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHAgKi87IH07CiAJCTk3QkM2QTU3MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0JDNkExNTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5o
ICovOyB9OwogCQk5N0JDNkE1ODE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25FcnJv
ckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5N0JDNkExNjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
LmggKi87IH07Ci0JCUZFMzZGRDE4MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2
RkQxNDE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZS5oICovOyB9OwotCQlG
RTM2RkQxNjE2Qzc4MjY1MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNkZEMTIx
NkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCAqLzsgfTsK
LQkJRkUzNkZEMTcxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQx
MzE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAqLzsgfTsK
IAkJOTdCQzZBNUExNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkExODE1MDVG
MDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLzsgfTsKIAkJOTdCQzZBNUIx
NTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMTkxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFRyYW5zYWN0aW9uU3luYy5oICovOyB9OwogCQk5N0JDNkE1RDE1MDVGMDgxMDAxQjc0QUMg
LyogU1FMVHJhbnNhY3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2QTFCMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFu
c2FjdGlvblN5bmNDYWxsYmFjay5oICovOyB9OwpAQCAtNDY2Niw4ICs0NjU2LDggQEAKIAkJQUEy
QTVBRDUxNkE0ODYxNDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTJBNUFCRDE2QTQ4NUQ1MDA5NzVB
MjUgLyogU3BlZWNoU3ludGhlc2lzLmNwcCAqLzsgfTsKIAkJQUEyQTVBRDYxNkE0ODYxNjAwOTc1
QTI1IC8qIERPTVdpbmRvd1NwZWVjaFN5bnRoZXNpcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUEyQTVBQjkxNkE0ODVENTAwOTc1QTI1IC8qIERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcy5oICovOyB9OwogCQlBQTJBNUFENzE2QTQ4NjFBMDA5NzVBMjUg
LyogRE9NV2luZG93U3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBMkE1QUI4MTZBNDg1RDUwMDk3NUEyNSAvKiBET01XaW5k
b3dTcGVlY2hTeW50aGVzaXMuY3BwICovOyB9OwotCQlBQTQ3OEE3RjE2Q0Q3MEMzMDA3RDFCQjQg
LyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdEMTZDRDcwQzMwMDdEMUJCNCAvKiBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oICovOyB9OwotCQlBQTQ3OEE4MDE2Q0Q3
MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTQ3OEE3RTE2Q0Q3MEMz
MDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gKi87IH07CisJ
CUFBNDc4QTdGMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NzhB
N0QxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmggKi87
IH07CisJCUFBNDc4QTgwMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFBNDc4QTdFMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbSAqLzsgfTsKIAkJQUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3
NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUE0QzNBNzcw
QjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxl
RWxlbWVudC5oICovOyB9OwogCQlBQTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXplck1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFBRTI3Qjc1MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVjaFN5
bnRoZXNpemVyTW9jay5oICovOyB9OwpAQCAtNjU0MCwxNCArNjUzMCwxNCBAQAogCQlGQzU0RDA1
ODE2QTc2NzZFMDA1NzVFNEQgLyogSlNDU1NTdXBwb3J0c1J1bGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZDODQ4MDJFMTY3QUI0NDQwMDhDRDEwMCAv
KiBKU0NTU1N1cHBvcnRzUnVsZS5oICovOyB9OwogCQlGQzYzQkRCMzE2N0FBQkFDMDBGOTM4MEYg
LyogQ1NTU3VwcG9ydHNSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZDNjNCREIwMTY3QUFCQUMwMEY5MzgwRiAvKiBDU1NTdXBwb3J0c1J1bGUu
Y3BwICovOyB9OwogCQlGQzdFNjZFOTE2ODBFRjFGMDAyODM3MTYgLyogSlNDU1NTdXBwb3J0c1J1
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkM4
NDgwMkQxNjdBQjQ0NDAwOENEMTAwIC8qIEpTQ1NTU3VwcG9ydHNSdWxlLmNwcCAqLzsgfTsKLQkJ
RkNEODgzMkExNkE0OUY4MjAwOTYyMjI3IC8qIERPTUNTU1N1cHBvcnRzUnVsZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkNEODgzMjgxNkE0OUY4MjAw
OTYyMjI3IC8qIERPTUNTU1N1cHBvcnRzUnVsZS5oICovOyB9OwotCQlGQ0Q4ODMyQjE2QTQ5Rjgy
MDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkNEODgzMjkxNkE0OUY4MjAwOTYyMjI3IC8qIERPTUNT
U1N1cHBvcnRzUnVsZS5tbSAqLzsgfTsKLQkJRkNEODgzMkMxNkE0OUZCMDAwOTYyMjI3IC8qIERP
TUNTU1N1cHBvcnRzUnVsZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkNEODgzMjgxNkE0OUY4MjAwOTYyMjI3IC8qIERPTUNT
U1N1cHBvcnRzUnVsZS5oICovOyB9OwotCQlGQ0VCQkFBQjE2QTQ5NjdBMDBGQTIwQTYgLyogRE9N
Q1NTU3VwcG9ydHNSdWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZDRUJCQUFBMTZBNDk2N0EwMEZBMjBBNiAvKiBET01DU1NTdXBwb3J0
c1J1bGVJbnRlcm5hbC5oICovOyB9OwogCQlGQzlBMEY3NDE2NDA5NENGMDAzRDZCOEQgLyogRE9N
V2luZG93Q1NTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZDOUEwRjcxMTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuY3BwICovOyB9Owog
CQlGQzlBMEY3NTE2NDA5NENGMDAzRDZCOEQgLyogRE9NV2luZG93Q1NTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzlBMEY3MjE2NDA5NENGMDAzRDZC
OEQgLyogRE9NV2luZG93Q1NTLmggKi87IH07CiAJCUZDOUUwRTREMTY0MTlDMUUwMDM5MkJFMyAv
KiBKU0RPTVdpbmRvd0NTUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkM5RTBFNEIxNjQxOUMxRTAwMzkyQkUzIC8qIEpTRE9NV2luZG93Q1NTLmggKi87
IH07CiAJCUZDOUUwRTUxMTY0MTlDN0YwMDM5MkJFMyAvKiBKU0RPTVdpbmRvd0NTUy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzlFMEU0QTE2NDE5
QzFFMDAzOTJCRTMgLyogSlNET01XaW5kb3dDU1MuY3BwICovOyB9OworCQlGQ0Q4ODMyQTE2QTQ5
RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQ0Q4ODMyODE2QTQ5RjgyMDA5NjIyMjcgLyogRE9N
Q1NTU3VwcG9ydHNSdWxlLmggKi87IH07CisJCUZDRDg4MzJCMTZBNDlGODIwMDk2MjIyNyAvKiBE
T01DU1NTdXBwb3J0c1J1bGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQ0Q4ODMyOTE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxl
Lm1tICovOyB9OworCQlGQ0Q4ODMyQzE2QTQ5RkIwMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNS
dWxlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQ0Q4ODMyODE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxl
LmggKi87IH07CisJCUZDRUJCQUFCMTZBNDk2N0EwMEZBMjBBNiAvKiBET01DU1NTdXBwb3J0c1J1
bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkNFQkJBQUExNkE0OTY3QTAwRkEyMEE2IC8qIERPTUNTU1N1cHBvcnRzUnVsZUludGVybmFs
LmggKi87IH07CiAJCUZEMDBEN0E0MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDBEN0Ey
MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNwcCAqLzsgfTsKIAkJRkQwMEQ3QTUx
NEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDBEN0EzMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5j
UmVzYW1wbGVyLmggKi87IH07CiAJCUZEMDZERkE1MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rl
c3RpbmF0aW9uTm9kZS5jcHAgKi87IH07CkBAIC02Nzg4LDYgKzY3NzgsMTAgQEAKIAkJRkUxNkNG
RDUxNjlEMURFRDAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNGRDExNjlEMURFQzAwRDNB
MEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwICovOyB9OwogCQlGRTE2Q0ZENjE2OUQxREVE
MDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNGRDIxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFi
YXNlQmFja2VuZFN5bmMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlGRTMzNzFBMjE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMzNzFB
MDE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUzNkZEMTUxNkM3ODI2NTAwRjg4
N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lv
bkRhdGEuaCAqLzsgfTsKKwkJRkUzNkZEMTYxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0
aW9uU3RhdGVNYWNoaW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFMzZGRDEyMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRl
TWFjaGluZS5jcHAgKi87IH07CisJCUZFMzZGRDE3MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFu
c2FjdGlvblN0YXRlTWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUzNkZEMTMxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3Rh
dGVNYWNoaW5lLmggKi87IH07CisJCUZFMzZGRDE4MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFu
c2FjdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTM2RkQxNDE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZS5oICov
OyB9OwogCQlGRTQ1NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3
N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OwogCQlGRTQ1NkYxOTE2
NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0
YWJhc2VNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkU2RjZBQUYxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRl
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2
RjZBQUQxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwICovOyB9
OwpAQCAtNjgwMyw2ICs2Nzk3LDggQEAKIAkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpT
R2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CiAJ
CUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07CiAJCUZFODBEQTcyMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9u
RXJyb3IuaCAqLzsgfTsKKwkJRkU4QTY3NDcxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVu
dEJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4QTY3NDUxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuY3BwICov
OyB9OworCQlGRThBNjc0ODE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4QTY3NDYx
NkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuaCAqLzsgfTsKIAkJRkVBRDdE
ODcxNkMzMzlFRTAwRDQ2NzBCIC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODUxNkMzMzlF
RTAwRDQ2NzBCIC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwICovOyB9OwogCQlGRUFE
N0Q4ODE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODYxNkMzMzlF
RTAwRDQ2NzBCIC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuaCAqLzsgfTsKIAkJRkVBRjY2
NTQxNjc5NzAzMjAwNjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyog
RGF0YWJhc2VTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNzUxNCw4ICs3NTEwLDggQEAKIAkJMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4
IC8qIFJlbmRlckltYWdlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTA4RjJGMDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8q
IFNWR0ltYWdlQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHSW1hZ2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4Rjg1OUQz
MTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0ltYWdlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhGODU5RDIxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ltYWdlRm9yQ29udGFpbmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGODU5RDMxNDYzRjlDRDAwNjdE
OTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHSW1hZ2VDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMzE0
NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VGb3JDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRv
UHJvcGVydHlNYXAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA4RkIzRjgzMTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlN
YXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzMsOCArODEyOSw4IEBACiAJ
CTI5QTgxMjI0MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TGlzdEJveE9w
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUE4MTIyNTBGQkI5QzFEMDA1
MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQWNjZXNzaWJpbGl0eUxpc3RCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMjlBODEyNDQwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5
T2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOUE4MTI0NTBGQkI5
Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8q
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QTgxMjQ1MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTI5QTgxMjQ2MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QTgxMjQ3MEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVj
dENhY2hlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVhP
YmplY3RDYWNoZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBQ0IyMTEx
NDNFNzEyODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI5QUNCMjEzMTQzRTc0OTgwMDZCQ0E1RiAvKiBBY2Nlc3Np
YmlsaXR5TW9ja09iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBBY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTE3Niw3ICsxMTE3Miw2IEBACiAJCTk3QjhGRkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBD
aGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENoYXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFj
a2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJh
Y2tlbmQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMg
LyogRGF0YWJhc2VCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERh
dGFiYXNlQmFja2VuZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tl
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzNkZEMTExNkM3ODI2NDAwRjg4
N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IENoYW5nZVZlcnNpb25EYXRhLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5n
ZVZlcnNpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ4MTUw
NUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNp
b25XcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENoYW5nZVZlcnNp
b25XcmFwcGVyLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFw
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OURFMTUwNUYwODEwMDFC
NzRBQyAvKiBEYXRhYmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBEYXRhYmFzZS5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExMjE3LDggKzExMjEyLDYgQEAKIAkJOTdC
QzZBMDQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgbmFtZSA9IFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxSZXN1bHRTZXRSb3dMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTdCQzZBMDUxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxTdGF0ZW1lbnQuY3BwOyBwYXRo
ID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5N0JDNkEwNjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFN0YXRlbWVudC5oOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRkU4QTY3NDUxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1FMU3RhdGVtZW50QmFj
a2VuZC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRThBNjc0NjE2Q0REMTlFMDA5MzBC
RjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTUUxTdGF0ZW1lbnRCYWNrZW5kLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFN0YXRlbWVudEJhY2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZB
MDcxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudENhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFN0YXRlbWVudENhbGxiYWNrLmg7IHBhdGggPSBNb2R1
bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudENhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3QkM2QTA4MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRDYWxs
YmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gU1FMU3RhdGVtZW50Q2FsbGJhY2suaWRs
OyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRDYWxsYmFjay5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2QTA5MTUwNUYwODEwMDFCNzRBQyAvKiBT
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTEyMjgsMTAgKzExMjIxLDYgQEAKIAkJOTdCQzZBMEQxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IFNRTFRyYW5zYWN0aW9uLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkEwRTE1MDVGMDgx
MDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU1FMVHJhbnNhY3Rpb24uaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJh
bnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMEYxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBT
UUxUcmFuc2FjdGlvbi5pZGw7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVFMTgxMTExNkMzMTlFODAw
MDg0ODQ5IC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQlGRUUxODExMjE2QzMxOUU4MDAwODQ4NDkgLyogU1FMVHJhbnNhY3Rpb25C
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9u
QmFja2VuZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tl
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVBRDdEODUxNkMzMzlFRTAwRDQ2
NzBCIC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGRUFEN0Q4NjE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJh
bnNhY3Rpb25CYWNrZW5kU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBT
UUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTdCQzZBMTAxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2QTExMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxU
cmFuc2FjdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2Fj
dGlvbkNhbGxiYWNrLmlkbDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rp
b25DYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2QTEyMTUw
NUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTExMjQwLDkgKzExMjI5LDYgQEAKIAkJOTdCQzZBMTUxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOyBwYXRoID0gTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2QTE2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0JDNkExNzE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNr
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2su
aWRsOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM2RkQxNDE2Qzc4MjY0MDBG
ODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTUUxUcmFuc2FjdGlvblN0YXRlLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNl
L1NRTFRyYW5zYWN0aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUz
NkZEMTIxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uU3RhdGVN
YWNoaW5lLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0
ZU1hY2hpbmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM2RkQxMzE2Qzc4
MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaDsgcGF0aCA9
IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMTgxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRy
YW5zYWN0aW9uU3luYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
UUxUcmFuc2FjdGlvblN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFu
c2FjdGlvblN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkExOTE1
MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uU3luYy5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTdCQzZBMUExNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gU1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEyMDY3LDggKzEyMDUzLDggQEAKIAkJQUEyQTVBQzYxNkE0ODVENTAwOTc1
QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmNwcDsgcGF0aCA9IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNp
c1ZvaWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUEyQTVBQzcxNkE0ODVE
NTAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmg7IHBhdGggPSBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNW
b2ljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTJBNUFDODE2QTQ4NUQ1MDA5
NzVBMjUgLyogU3BlZWNoU3ludGhlc2lzVm9pY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmlkbDsgcGF0aCA9IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQUE0NzhBN0QxNkNENzBDMzAwN0QxQkI0IC8q
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUFBNDc4QTdFMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2Rpbmcg
PSA0OyBwYXRoID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBNDc4QTdEMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBQTQ3OEE3RTE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUVsZW1lbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUE1RjNCOTAxNkNDNUJFQjAwNDU1RUIwIC8q
IENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNDI2MSwxNCArMTQyNDcsMTQgQEAKIAkJRkM2M0JEQjIxNjdBQUJBQzAwRjkzODBGIC8q
IENTU1N1cHBvcnRzUnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTU3VwcG9ydHNS
dWxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM4NDgwMkQxNjdBQjQ0NDAw
OENEMTAwIC8qIEpTQ1NTU3VwcG9ydHNSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ1NTU3VwcG9ydHNSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkM4NDgwMkUxNjdBQjQ0NDAwOENEMTAwIC8qIEpTQ1NTU3VwcG9ydHNSdWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NTU3VwcG9ydHNSdWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZDRDg4MzI4MTZBNDlGODIwMDk2MjIyNyAvKiBE
T01DU1NTdXBwb3J0c1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9N
Q1NTU3VwcG9ydHNSdWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZDRDg4MzI5
MTZBNDlGODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0c1J1bGUubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01DU1NTdXBwb3J0c1J1bGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZDRUJCQUFBMTZBNDk2N0EwMEZBMjBBNiAvKiBET01DU1NT
dXBwb3J0c1J1bGVJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01DU1NTdXBwb3J0c1J1bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGQzlBMEY3MTE2NDA5NENGMDAzRDZCOEQgLyogRE9NV2luZG93Q1NTLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0NTUy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZDOUEwRjcyMTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dD
U1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93Q1NTLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZDOUEwRjczMTY0MDk0Q0YwMDNENkI4RCAvKiBE
T01XaW5kb3dDU1MuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvd0NTUy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZDOUUwRTRBMTY0MTlDMUUwMDM5MkJFMyAv
KiBKU0RPTVdpbmRvd0NTUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0RPTVdpbmRvd0NTUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZDOUUw
RTRCMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTVdpbmRvd0NTUy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0RPTVdpbmRvd0NTUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGQ0Q4ODMyODE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNTU1N1cHBvcnRzUnVsZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQ0Q4ODMyOTE2QTQ5RjgyMDA5NjIyMjcgLyog
RE9NQ1NTU3VwcG9ydHNSdWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRE9NQ1NTU3VwcG9ydHNSdWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGQ0VCQkFBQTE2QTQ5NjdBMDBGQTIwQTYgLyogRE9NQ1NTU3VwcG9ydHNSdWxlSW50ZXJuYWwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTU3VwcG9ydHNSdWxlSW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkNFQkNENzExNjIzQTc5MTAw
Mjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0
aCA9IENTU0dyYW1tYXIueS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkNFQkNE
NzIxNjIzQTc5MTAwMjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbmNsdWRlcyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1tYXIueS5pbmNsdWRlczsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkQwMEQ3QTIxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2luY1Jlc2FtcGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUzOSw2ICsxNDUyNSwxMCBA
QAogCQlGRTE2Q0ZEMTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRTeW5j
LmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAv
KiBEYXRhYmFzZUJhY2tlbmRTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERhdGFiYXNlQmFja2VuZFN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMzNzFBMDE2
N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFzaWNUeXBlcy5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZUJhc2ljVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkUzNkZEMTExNkM3ODI2NDAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENoYW5nZVZlcnNpb25EYXRhLmg7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFMzZGRDEyMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0
YXRlTWFjaGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxU
cmFuc2FjdGlvblN0YXRlTWFjaGluZS5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NR
TFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkUzNkZEMTMxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5l
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uU3RhdGVN
YWNoaW5lLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3RhdGVN
YWNoaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzZGRDE0MTZDNzgyNjQw
MEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uU3RhdGUuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTQ1NkYxNjE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBhdGggPSBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmg7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNr
ZW5kQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRh
YmFzZUJhY2tlbmRDb250ZXh0LmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJh
c2VCYWNrZW5kQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDU1
NSw2ICsxNDU0NSw4IEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8q
IEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgw
REE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRThBNjc0NTE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2Vu
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxTdGF0ZW1lbnRC
YWNrZW5kLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2Vu
ZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOEE2NzQ2MTZDREQxOUUwMDkz
MEJGOCAvKiBTUUxTdGF0ZW1lbnRCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFNRTFN0YXRlbWVudEJhY2tlbmQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2Uv
U1FMU3RhdGVtZW50QmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUFE
N0Q4NTE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkJhY2tlbmRT
eW5jLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5k
U3luYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQUQ3RDg2MTZDMzM5RUUw
MEQ0NjcwQiAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuaDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuaDsg
cGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDI5LDEwICsxNTQyMSwxMCBAQAogCQkJY2hpbGRyZW4gPSAo
CiAJCQkJMjlBODEyNDQwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMu
bW0gKi8sCiAJCQkJMjlBODEyNDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVNYWMu
bW0gKi8sCi0JCQkJMjlBODEyNDUwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLmggKi8sCi0JCQkJMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tICovLAotCQkJCUFBNDc4QTdEMTZDRDcwQzMwMDdE
MUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oICovLAotCQkJCUFBNDc4
QTdFMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bSAqLywKKwkJCQkyOUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLmggKi8sCisJCQkJMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSAqLywKKwkJCQlBQTQ3OEE3RDE2Q0Q3
MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCAqLywKKwkJCQlB
QTQ3OEE3RTE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
bW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC0yNDk1NCw3ICsyNDk0Niw3IEBACiAJCQkJMUFFMkFCMjIwQTFDRTYzQjAwQjQyQjI1IC8q
IEpTSFRNTExhYmVsRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFCMjQwQTFDRTYz
QjAwQjQyQjI1IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RTJBQjI2MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAotCQkJCUFBNDc4QTdGMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUE0NzhBN0YxNkNENzBDMzAwN0QxQkI0
IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODBFN0IwRDBBMTlENjA2MDA3RkI4QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFBRTJBQjI4MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNYXBFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzQ5MUI3OTBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFy
cXVlZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjY0MTksNyArMjY0MTEsNyBAQAogCQkJ
CUZEN0YyOTk0MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRkQ3RjI5OTcxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZENTgxRkI1MTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFi
bGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTI5QTgxMjQ5MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjlBODEyNDkw
RkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QTgwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVGcmFt
ZVZpZXcuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQzY5RERBMTYzNzFGRDQwMDdDMzhERiAvKiBX
ZWJDb3JlRnVsbFNjcmVlblBsYWNlaG9sZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RD
NjlERDYxNjMyMDI2QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBp
biBIZWFkZXJzICovLApAQCAtMjkxOTQsNyArMjkxODYsNyBAQAogCQkJCTkzMUNCRDEwMTYxQTQ0
RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFGNjJGMjUxNERBRkU5RTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUY2MkYyNDE0REFGRTkxMDA0MTU1NkMgLyogU2Nyb2xsaW5nVGhyZWFkTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQUE0NzhBODAxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQUE0NzhB
ODAxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFBQUREQTMxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1Ry
ZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNDMzhDMDQxNjQ0NzNERDAwMDkxRUIyIC8qIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFBRERFMzE0REM4
QzhGMDBBRjY0QjMgLyogU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0y
OTYyNCw3ICsyOTYxNiw3IEBACiAJCQkJRkQ3RjI5OTMxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVT
aGFwZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEN0YyOTk2MTNENEMwQ0IwMEFEOTUz
NSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTgxRkI0
MTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjlB
ODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1t
IGluIFNvdXJjZXMgKi8sCisJCQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEN0UwNTIy
MTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQlDREM2OUREQjE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM2OURENzE2MzIwMjZDMDA3
QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSBpbiBTb3VyY2VzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188775</attachid>
            <date>2013-02-17 13:49:27 -0800</date>
            <delta_ts>2013-02-17 18:35:40 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>205814</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0MzEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDI0IEBACiAyMDEzLTAyLTE3ICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKKyAgICAgICAgQVg6IHJlbmFtZSBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0byBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ckJhc2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
MDA2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bmFtZSB0aGUgYmFzZSBhY2Nlc3NpYmlsaXR5IHdyYXBwZXIgY2xhc3Mgc28gdGhhdCB0aGUgaU9T
IGNsYXNzIGNhbiBzaGFyZSB0aGUgc2FtZSBuYW1lLgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphdHRhY2hX
cmFwcGVyKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5oOiBSZXBsYWNlZCB3aXRoIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmguCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW06IFJlcGxhY2VkIHdp
dGggU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0uCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJCYXNlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmguCisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlci5tbS4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oOiBSZW1vdmVkLgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOiBSZW1vdmVkLgor
CisyMDEzLTAyLTE3ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKICAg
ICAgICAgV2ViU3BlZWNoOiBwbHVtYiB0aHJvdWdoIGEgbWV0aG9kIHRvIGdlbmVyYXRlIGZha2Ug
c3BlZWNoIGpvYnMgZm9yIHRlc3RpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwNzM1MQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLm1tCShyZXZpc2lvbiAxNDMxMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNp
bXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgiCisjaW1wb3J0ICJXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCIKIAogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkK
IApAQCAtNzcsNyArNzcsNyBAQAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcgorQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZQog
CiAtIChpZClpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6KEFjY2Vzc2liaWxpdHlPYmplY3Qq
KWF4T2JqZWN0CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgJKHJldmlz
aW9uIDE0MzEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjX2gKLSNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWNfaAorI2lm
bmRlZiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCisjZGVmaW5lIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyX2gKIAotI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIuaCIKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIgog
Ci1AaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjIDogV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIKK0BpbnRlcmZhY2UgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgOiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UKIAogQGVuZAogCi0jZW5k
aWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWNfaAorI2VuZGlmIC8vIFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMuaAkocmV2aXNpb24gMTQzMTM1KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwzOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjX2gKLSNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWNfaAotCi0j
aW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIgotCi1AaW50ZXJmYWNlIFdl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjIDogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIKLQotQGVuZAotCi0jZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWNfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDE0
MzEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAgKi8K
IAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5oIgorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCIKIAog
I2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKIApAQCAtMzUxLDcgKzM1MSw3IEBACiAjZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRlIEAiQVhNYXRoRmVuY2VkT3BlbiIK
ICNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3NlQXR0cmlidXRlIEAiQVhNYXRo
RmVuY2VkQ2xvc2UiCiAKLUBpbXBsZW1lbnRhdGlvbiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYworQGltcGxlbWVudGF0aW9uIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyCiAK
IC0gKHZvaWQpdW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlFbGVtZW50CiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQkocmV2aXNpb24gMTQzMTM1KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzUzNyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxl
IENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAot
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLmgiCi0KLSNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCi0KLSNpbXBvcnQgIkFYT2Jq
ZWN0Q2FjaGUuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgotI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0Qm94Lmgi
Ci0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCi0jaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5U2Nyb2xsVmlldy5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVNwaW5CdXR0b24uaCIK
LSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRh
YmxlQ2VsbC5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uLmgiCi0jaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5VGFibGVSb3cuaCIKLSNpbXBvcnQgIkNocm9tZS5oIgotI2ltcG9ydCAi
Q2hyb21lQ2xpZW50LmgiCi0jaW1wb3J0ICJDb2xvck1hYy5oIgotI2ltcG9ydCAiQ29udGV4dE1l
bnVDb250cm9sbGVyLmgiCi0jaW1wb3J0ICJGb250LmgiCi0jaW1wb3J0ICJGcmFtZS5oIgotI2lt
cG9ydCAiRnJhbWVMb2FkZXJDbGllbnQuaCIKLSNpbXBvcnQgIkZyYW1lU2VsZWN0aW9uLmgiCi0j
aW1wb3J0ICJIVE1MQW5jaG9yRWxlbWVudC5oIgotI2ltcG9ydCAiSFRNTEFyZWFFbGVtZW50Lmgi
Ci0jaW1wb3J0ICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxJbnB1dEVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxOYW1l
cy5oIgotI2ltcG9ydCAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgotI2ltcG9ydCAiTG9jYWxpemVk
U3RyaW5ncy5oIgotI2ltcG9ydCAiUGFnZS5oIgotI2ltcG9ydCAiUmVuZGVyVGV4dENvbnRyb2wu
aCIKLSNpbXBvcnQgIlJlbmRlclZpZXcuaCIKLSNpbXBvcnQgIlJlbmRlcldpZGdldC5oIgotI2lt
cG9ydCAiU2Nyb2xsVmlldy5oIgotI2ltcG9ydCAiU2ltcGxlRm9udERhdGEuaCIKLSNpbXBvcnQg
IlRleHRDaGVja2VyQ2xpZW50LmgiCi0jaW1wb3J0ICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKLSNp
bXBvcnQgIlRleHRJdGVyYXRvci5oIgotI2ltcG9ydCAiV2ViQ29yZUZyYW1lVmlldy5oIgotI2lt
cG9ydCAiV2ViQ29yZU9iakNFeHRyYXMuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKLSNpbXBvcnQgImh0bWxlZGl0aW5nLmgiCi0jaW1wb3J0ICJ2aXNpYmxlX3VuaXRzLmgi
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsK
LXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLS8vIENlbGwgVGFibGVzCi0jaWZuZGVmIE5TQWNjZXNz
aWJpbGl0eVNlbGVjdGVkQ2VsbHNBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRDZWxsc0F0dHJpYnV0ZSBAIkFYU2VsZWN0ZWRDZWxscyIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlWaXNpYmxlQ2VsbHNBdHRyaWJ1dGUgQCJBWFZpc2libGVDZWxscyIKLSNlbmRpZgotCi0j
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGUKLSNkZWZp
bmUgTlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZSBAIkFYUm93SGVh
ZGVyVUlFbGVtZW50cyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJvd0luZGV4
UmFuZ2VBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJp
YnV0ZSBAIkFYUm93SW5kZXhSYW5nZSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUNvbHVtbkluZGV4UmFuZ2VBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q29sdW1u
SW5kZXhSYW5nZUF0dHJpYnV0ZSBAIkFYQ29sdW1uSW5kZXhSYW5nZSIKLSNlbmRpZgotCi0jaWZu
ZGVmIE5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVkQXR0cmli
dXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJp
emVkQXR0cmlidXRlIEAiQVhDZWxsRm9yQ29sdW1uQW5kUm93IgotI2VuZGlmCi0KLSNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2VsbFJvbGUg
QCJBWENlbGwiCi0jZW5kaWYKLQotLy8gTGlzdHMKLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q29u
dGVudExpc3RTdWJyb2xlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNvbnRlbnRMaXN0U3Vicm9s
ZSBAIkFYQ29udGVudExpc3QiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlEZXNj
cmlwdGlvbkxpc3RTdWJyb2xlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uTGlz
dFN1YnJvbGUgQCJBWERlc2NyaXB0aW9uTGlzdCIKLSNlbmRpZgotCi0vLyBNaXNjZWxsYW5lb3Vz
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZQotI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgQCJBWEJsb2NrUXVvdGVM
ZXZlbCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0
ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGUgQCJBWEFjY2Vzc0tl
eSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlCi0j
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlIEAiQVhMYW5ndWFnZSIKLSNl
bmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlCi0jZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlIEAiQVhSZXF1aXJlZCIKLSNlbmRpZgot
Ci0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZSBAIkFYSW52YWxpZCIKLSNlbmRpZgotCi0jaWZuZGVm
IE5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5T3du
c0F0dHJpYnV0ZSBAIkFYT3ducyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUdy
YWJiZWRBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZSBA
IkFYR3JhYmJlZCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3Rz
QXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlIEAi
QVhEcm9wRWZmZWN0cyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFSSUFMaXZl
QXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFSSUFMaXZlQXR0cmlidXRlIEAiQVhB
UklBTGl2ZSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFSSUFBdG9taWNBdHRy
aWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QVJJQUF0b21pY0F0dHJpYnV0ZSBAIkFYQVJJ
QUF0b21pYyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFSSUFSZWxldmFudEF0
dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBUklBUmVsZXZhbnRBdHRyaWJ1dGUgQCJB
WEFSSUFSZWxldmFudCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUFSSUFCdXN5
QXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFSSUFCdXN5QXR0cmlidXRlIEAiQVhB
UklBQnVzeSIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9ncmVz
c0F0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1
dGUgQCJBWExvYWRpbmdQcm9ncmVzcyIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0
eUhhc1BvcHVwQXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhhc1BvcHVwQXR0cmli
dXRlIEAiQVhIYXNQb3B1cCIKLSNlbmRpZgotCi0jaWZuZGVmIE5TQWNjZXNzaWJpbGl0eVBsYWNl
aG9sZGVyVmFsdWVBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJW
YWx1ZUF0dHJpYnV0ZSBAIkFYUGxhY2Vob2xkZXJWYWx1ZSIKLSNlbmRpZgotCi0vLyBTZWFyY2gK
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZVBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50c0ZvclNl
YXJjaFByZWRpY2F0ZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWFVJRWxlbWVudHNGb3JTZWFy
Y2hQcmVkaWNhdGUiCi0jZW5kaWYKLQotLy8gU2VhcmNoIEtleXMKLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5QW55VHlwZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBbnlUeXBlU2Vh
cmNoS2V5IEAiQVhBbnlUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5IEAiQVhCbG9ja3F1b3RlU2FtZUxldmVsU2Vh
cmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QmxvY2txdW90ZVNlYXJj
aEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5IEAiQVhCbG9j
a3F1b3RlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZv
bnRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRTZWFyY2hLZXkgQCJB
WEJvbGRGb250U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QnV0
dG9uU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblNlYXJjaEtleSBAIkFY
QnV0dG9uU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tC
b3hTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hTZWFyY2hLZXkgQCJB
WENoZWNrQm94U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q29u
dHJvbFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNoS2V5IEAi
QVhDb250cm9sU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5RGlm
ZmVyZW50VHlwZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBl
U2VhcmNoS2V5IEAiQVhEaWZmZXJlbnRUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlGb250Q2hhbmdlU2VhcmNoS2V5IEAiQVhGb250Q2hhbmdlU2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5Ci0jZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSBAIkFYRm9udENvbG9yQ2hh
bmdlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFy
Y2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXkgQCJBWEZyYW1lU2Vh
cmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtl
eQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFwaGljU2VhcmNoS2V5IEAiQVhHcmFwaGljU2Vh
cmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMVNl
YXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IEAi
QVhIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5n
TGV2ZWwyU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWwzU2VhcmNo
S2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNFNlYXJj
aEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IEAiQVhI
ZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
SGVhZGluZ0xldmVsNVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2
ZWw1U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5IEAiQVhIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5
IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NhbWVMZXZlbFNlYXJj
aEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IEAi
QVhIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ1NlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2Vh
cmNoS2V5IEAiQVhIZWFkaW5nU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5SGlnaGxpZ2h0ZWRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGlnaGxp
Z2h0ZWRTZWFyY2hLZXkgQCJBWEhpZ2hsaWdodGVkU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlJdGFsaWNGb250U2VhcmNoS2V5IEAiQVhJdGFsaWNGb250U2VhcmNoS2V5IgotI2VuZGlm
Ci0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkKLSNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5TGFuZG1hcmtTZWFyY2hLZXkgQCJBWExhbmRtYXJrU2VhcmNoS2V5IgotI2Vu
ZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlua1NlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5IEAiQVhMaW5rU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlMaXN0U2VhcmNoS2V5IEAiQVhMaXN0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlM
aXZlUmVnaW9uU2VhcmNoS2V5IEAiQVhMaXZlUmVnaW9uU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkKLSNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFdvcmRTZWFyY2hLZXkgQCJBWE1pc3NwZWxsZWRXb3JkU2Vh
cmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNo
S2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSBAIkFYUGxhaW5U
ZXh0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91
cFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3VwU2VhcmNoS2V5IEAi
QVhSYWRpb0dyb3VwU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
U2FtZVR5cGVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5U2FtZVR5cGVTZWFyY2hL
ZXkgQCJBWFNhbWVUeXBlU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5U3RhdGljVGV4dFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0
U2VhcmNoS2V5IEAiQVhTdGF0aWNUZXh0U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
U3R5bGVDaGFuZ2VTZWFyY2hLZXkgQCJBWFN0eWxlQ2hhbmdlU2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkKLSNkZWZpbmUg
TlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWFRhYmxlU2FtZUxldmVs
U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hL
ZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXkgQCJBWFRhYmxlU2VhcmNo
S2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5
Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRGaWVsZFNlYXJjaEtleSBAIkFYVGV4dEZpZWxk
U2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lU2Vh
cmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVNlYXJjaEtleSBAIkFYVW5k
ZXJsaW5lU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VW52aXNp
dGVkTGlua1NlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0ZWRMaW5rU2Vh
cmNoS2V5IEAiQVhVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
VmlzaXRlZExpbmtTZWFyY2hLZXkgQCJBWFZpc2l0ZWRMaW5rU2VhcmNoS2V5IgotI2VuZGlmCi0K
LSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQYXJhbWV0ZXJpemVkQXR0
cmlidXRlIEAiQVhUZXh0TWFya2VySXNWYWxpZCIKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SW5k
ZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYSW5kZXhGb3JUZXh0TWFy
a2VyIgotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyRm9ySW5kZXhQYXJhbWV0ZXJp
emVkQXR0cmlidXRlIEAiQVhUZXh0TWFya2VyRm9ySW5kZXgiCi0KLS8vIE1hdGggYXR0cmlidXRl
cwotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJhZGljYW5kQXR0cmlidXRlIEAiQVhN
YXRoUm9vdFJhZGljYW5kIgotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdEluZGV4QXR0
cmlidXRlIEAiQVhNYXRoUm9vdEluZGV4IgotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoRnJh
Y3Rpb25EZW5vbWluYXRvckF0dHJpYnV0ZSBAIkFYTWF0aEZyYWN0aW9uRGVub21pbmF0b3IiCi0j
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbk51bWVyYXRvckF0dHJpYnV0ZSBAIkFY
TWF0aEZyYWN0aW9uTnVtZXJhdG9yIgotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNYXRoQmFzZUF0
dHJpYnV0ZSBAIkFYTWF0aEJhc2UiCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhTdWJzY3Jp
cHRBdHRyaWJ1dGUgQCJBWE1hdGhTdWJzY3JpcHQiCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1h
dGhTdXBlcnNjcmlwdEF0dHJpYnV0ZSBAIkFYTWF0aFN1cGVyc2NyaXB0IgotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlNYXRoVW5kZXJBdHRyaWJ1dGUgQCJBWE1hdGhVbmRlciIKLSNkZWZpbmUgTlNB
Y2Nlc3NpYmlsaXR5TWF0aE92ZXJBdHRyaWJ1dGUgQCJBWE1hdGhPdmVyIgotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlNYXRoRmVuY2VkT3BlbkF0dHJpYnV0ZSBAIkFYTWF0aEZlbmNlZE9wZW4iCi0j
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRDbG9zZUF0dHJpYnV0ZSBAIkFYTWF0aEZl
bmNlZENsb3NlIgotCi1AaW1wbGVtZW50YXRpb24gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJNYWMKLQotLSAodm9pZCl1bnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnQKLXsKLSAgICB3
a1VucmVnaXN0ZXJVbmlxdWVJZEZvckVsZW1lbnQoc2VsZik7Ci19Ci0KLS0gKHZvaWQpZGV0YWNo
Ci17Ci0gICAgLy8gU2VuZCB1bnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnQgdW5jb25kaXRp
b25hbGx5IGJlY2F1c2UgaWYgaXQgaXMKLSAgICAvLyBldmVyIGFjY2lkZW50YWxseSBub3QgZG9u
ZSAodmlhIG90aGVyIGJ1Z3MgaW4gb3VyIEFYIGltcGxlbWVudGF0aW9uKSB5b3UKLSAgICAvLyBl
bmQgdXAgd2l0aCBhIGNyYXNoIGxpa2UgPHJkYXI6Ly9wcm9ibGVtLzQyNzMxNDk+LiAgSXQgaXMg
c2FmZSBhbmQgbm90Ci0gICAgLy8gZXhwZW5zaXZlIHRvIHNlbmQgZXZlbiBpZiB0aGUgb2JqZWN0
IGlzIG5vdCByZWdpc3RlcmVkLgotICAgIFtzZWxmIHVucmVnaXN0ZXJVbmlxdWVJZEZvclVJRWxl
bWVudF07Ci0gICAgW3N1cGVyIGRldGFjaF07Ci19Ci0KLS0gKGlkKWF0dGFjaG1lbnRWaWV3Ci17
Ci0gICAgQVNTRVJUKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSk7Ci0gICAgV2lkZ2V0KiB3aWRn
ZXQgPSBtX29iamVjdC0+d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKLSAgICBpZiAoIXdpZGdl
dCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25v
cmVkRGVzY2VuZGFudCh3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkpOwotfQotCi0jcHJhZ21hIG1h
cmsgU3lzdGVtSW50ZXJmYWNlIHdyYXBwZXJzCi0KLXN0YXRpYyBpbmxpbmUgaWQgQ0ZBdXRvcmVs
ZWFzZUhlbHBlcihDRlR5cGVSZWYgb2JqKQotewotICAgIGlmIChvYmopCi0gICAgICAgIENGTWFr
ZUNvbGxlY3RhYmxlKG9iaik7Ci0gICAgWyhpZClvYmogYXV0b3JlbGVhc2VdOwotICAgIHJldHVy
biAoaWQpb2JqOwotfQotCi1zdGF0aWMgaW5saW5lIEJPT0wgQVhPYmplY3RJc1RleHRNYXJrZXIo
aWQgb2JqKQotewotICAgIHJldHVybiBvYmogIT0gbmlsICYmIENGR2V0VHlwZUlEKG9iaikgPT0g
d2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKTsKLX0KLQotc3RhdGljIGlubGluZSBCT09MIEFYT2Jq
ZWN0SXNUZXh0TWFya2VyUmFuZ2UoaWQgb2JqKQotewotICAgIHJldHVybiBvYmogIT0gbmlsICYm
IENGR2V0VHlwZUlEKG9iaikgPT0gd2tHZXRBWFRleHRNYXJrZXJSYW5nZVR5cGVJRCgpOwotfQot
Ci1zdGF0aWMgaWQgQVhUZXh0TWFya2VyUmFuZ2UoaWQgc3RhcnRNYXJrZXIsIGlkIGVuZE1hcmtl
cikKLXsKLSAgICBBU1NFUlQoc3RhcnRNYXJrZXIgIT0gbmlsKTsKLSAgICBBU1NFUlQoZW5kTWFy
a2VyICE9IG5pbCk7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKHN0YXJ0TWFya2VyKSA9PSB3a0dl
dEFYVGV4dE1hcmtlclR5cGVJRCgpKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZW5kTWFya2Vy
KSA9PSB3a0dldEFYVGV4dE1hcmtlclR5cGVJRCgpKTsKLSAgICByZXR1cm4gQ0ZBdXRvcmVsZWFz
ZUhlbHBlcih3a0NyZWF0ZUFYVGV4dE1hcmtlclJhbmdlKChDRlR5cGVSZWYpc3RhcnRNYXJrZXIs
IChDRlR5cGVSZWYpZW5kTWFya2VyKSk7Ci19Ci0KLXN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5n
ZVN0YXJ0KGlkIHJhbmdlKQotewotICAgIEFTU0VSVChyYW5nZSAhPSBuaWwpOwotICAgIEFTU0VS
VChDRkdldFR5cGVJRChyYW5nZSkgPT0gd2tHZXRBWFRleHRNYXJrZXJSYW5nZVR5cGVJRCgpKTsK
LSAgICByZXR1cm4gQ0ZBdXRvcmVsZWFzZUhlbHBlcih3a0NvcHlBWFRleHRNYXJrZXJSYW5nZVN0
YXJ0KHJhbmdlKSk7Ci19Ci0KLXN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5nZUVuZChpZCByYW5n
ZSkKLXsKLSAgICBBU1NFUlQocmFuZ2UgIT0gbmlsKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQo
cmFuZ2UpID09IHdrR2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIENG
QXV0b3JlbGVhc2VIZWxwZXIod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VFbmQocmFuZ2UpKTsKLX0K
LQotI3ByYWdtYSBtYXJrIFNlYXJjaCBoZWxwZXJzCi0KLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXk+IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXA7Ci0KLXN0
cnVjdCBTZWFyY2hLZXlFbnRyeSB7Ci0gICAgU3RyaW5nIGtleTsKLSAgICBBY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5IHZhbHVlOwotfTsKLQotc3RhdGljIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAq
IGNyZWF0ZUFjY2Vzc2liaWxpdHlTZWFyY2hLZXlNYXAoKQotewotICAgIGNvbnN0IFNlYXJjaEtl
eUVudHJ5IHNlYXJjaEtleXNbXSA9IHsKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlBbnlUeXBl
U2VhcmNoS2V5LCBBbnlUeXBlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
QmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtleSwgQmxvY2txdW90ZVNhbWVMZXZlbFNlYXJjaEtl
eSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hLZXksIEJsb2Nr
cXVvdGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNlYXJj
aEtleSwgQm9sZEZvbnRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlCdXR0
b25TZWFyY2hLZXksIEJ1dHRvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUNoZWNrQm94U2VhcmNoS2V5LCBDaGVja0JveFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNj
ZXNzaWJpbGl0eUNvbnRyb2xTZWFyY2hLZXksIENvbnRyb2xTZWFyY2hLZXkgfSwKLSAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5LCBEaWZmZXJlbnRUeXBlU2Vh
cmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Rm9udENoYW5nZVNlYXJjaEtleSwg
Rm9udENoYW5nZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDb2xv
ckNoYW5nZVNlYXJjaEtleSwgRm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5RnJhbWVTZWFyY2hLZXksIEZyYW1lU2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5R3JhcGhpY1NlYXJjaEtleSwgR3JhcGhpY1NlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFTZWFyY2hLZXksIEhlYWRpbmdM
ZXZlbDFTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwy
U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsM1NlYXJjaEtleSwgSGVhZGluZ0xldmVsM1NlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFyY2hLZXksIEhlYWRpbmdM
ZXZlbDRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1
U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5SGVhZGluZ0xldmVsNlNlYXJjaEtleSwgSGVhZGluZ0xldmVsNlNlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXksIEhlYWRp
bmdTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlIZWFkaW5n
U2VhcmNoS2V5LCBIZWFkaW5nU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
SGlnaGxpZ2h0ZWRTZWFyY2hLZXksIEhpZ2hsaWdodGVkU2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5SXRhbGljRm9udFNlYXJjaEtleSwgSXRhbGljRm9udFNlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxhbmRtYXJrU2VhcmNoS2V5LCBMYW5kbWFya1Nl
YXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFyY2hLZXksIExpbmtT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5LCBMaXN0
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5TGl2ZVJlZ2lvblNlYXJjaEtl
eSwgTGl2ZVJlZ2lvblNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eU1pc3Nw
ZWxsZWRXb3JkU2VhcmNoS2V5LCBNaXNzcGVsbGVkV29yZFNlYXJjaEtleSB9LAotICAgICAgICB7
IE5TQWNjZXNzaWJpbGl0eVBsYWluVGV4dFNlYXJjaEtleSwgUGxhaW5UZXh0U2VhcmNoS2V5IH0s
Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFNlYXJjaEtleSwgUmFkaW9Hcm91
cFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVNhbWVUeXBlU2VhcmNoS2V5
LCBTYW1lVHlwZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVN0YXRpY1Rl
eHRTZWFyY2hLZXksIFN0YXRpY1RleHRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2li
aWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSwgU3R5bGVDaGFuZ2VTZWFyY2hLZXkgfSwKLSAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSwgVGFibGVTYW1lTGV2
ZWxTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSwg
VGFibGVTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRTZWFy
Y2hLZXksIFRleHRGaWVsZFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVu
ZGVybGluZVNlYXJjaEtleSwgVW5kZXJsaW5lU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nl
c3NpYmlsaXR5VW52aXNpdGVkTGlua1NlYXJjaEtleSwgVW52aXNpdGVkTGlua1NlYXJjaEtleSB9
LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVZpc2l0ZWRMaW5rU2VhcmNoS2V5LCBWaXNpdGVk
TGlua1NlYXJjaEtleSB9Ci0gICAgfTsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
TWFwKiBzZWFyY2hLZXlNYXAgPSBuZXcgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcDsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoc2VhcmNoS2V5cyk7IGkrKykK
LSAgICAgICAgc2VhcmNoS2V5TWFwLT5zZXQoc2VhcmNoS2V5c1tpXS5rZXksIHNlYXJjaEtleXNb
aV0udmFsdWUpOwotICAgIAotICAgIHJldHVybiBzZWFyY2hLZXlNYXA7Ci19Ci0KLXN0YXRpYyBB
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5IGFjY2Vzc2liaWxpdHlTZWFyY2hLZXlGb3JTdHJpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gQW55VHlwZVNlYXJjaEtleTsKLSAgICAKLSAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJp
bGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gY3JlYXRlQWNjZXNzaWJpbGl0eVNlYXJj
aEtleU1hcCgpOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgc2VhcmNoS2V5ID0g
c2VhcmNoS2V5TWFwLT5nZXQodmFsdWUpOwotICAgIAotICAgIHJldHVybiBzZWFyY2hLZXkgPyBz
ZWFyY2hLZXkgOiBBbnlUeXBlU2VhcmNoS2V5OwotfQotCi0jcHJhZ21hIG1hcmsgVGV4dCBNYXJr
ZXIgaGVscGVycwotCi1zdGF0aWMgaWQgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihBWE9i
amVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKQotewot
ICAgIEFTU0VSVChjYWNoZSk7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRh
dGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKHRleHRNYXJr
ZXJEYXRhLCB2aXNpYmxlUG9zKTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmV0dXJuIENGQXV0b3JlbGVhc2VIZWxwZXIod2tD
cmVhdGVBWFRleHRNYXJrZXIoJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEp
KSk7Ci19Ci0KLS0gKGlkKXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246KGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmKXZpc2libGVQb3MKLXsKLSAgICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2li
bGVQb3NpdGlvbihtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB2aXNpYmxlUG9zKTsKLX0KLQot
c3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlLCBDRlR5cGVSZWYgdGV4dE1hcmtlcikKLXsKLSAgICBBU1NFUlQoY2Fj
aGUpOwotICAgIAotICAgIGlmICghdGV4dE1hcmtlcikKLSAgICAgICAgcmV0dXJuIFZpc2libGVQ
b3NpdGlvbigpOwotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGlmICgh
d2tHZXRCeXRlc0Zyb21BWFRleHRNYXJrZXIodGV4dE1hcmtlciwgJnRleHRNYXJrZXJEYXRhLCBz
aXplb2YodGV4dE1hcmtlckRhdGEpKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigp
OwotICAgIAotICAgIHJldHVybiBjYWNoZS0+dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRh
dGEodGV4dE1hcmtlckRhdGEpOwotfQotCi0tIChWaXNpYmxlUG9zaXRpb24pdmlzaWJsZVBvc2l0
aW9uRm9yVGV4dE1hcmtlcjooaWQpdGV4dE1hcmtlcgotewotICAgIHJldHVybiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXIp
OwotfQotCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclN0YXJ0T2ZU
ZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSAqY2FjaGUsIGlkIHRleHRNYXJrZXJSYW5nZSkK
LXsKLSAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihjYWNoZSwgQVhUZXh0
TWFya2VyUmFuZ2VTdGFydCh0ZXh0TWFya2VyUmFuZ2UpKTsKLX0KLQotc3RhdGljIFZpc2libGVQ
b3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JFbmRPZlRleHRNYXJrZXJSYW5nZShBWE9iamVjdENh
Y2hlICpjYWNoZSwgaWQgdGV4dE1hcmtlclJhbmdlKQotewotICAgIHJldHVybiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCBBWFRleHRNYXJrZXJSYW5nZUVuZCh0ZXh0TWFya2Vy
UmFuZ2UpKTsKLX0KLQotc3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKGlkIHRl
eHRNYXJrZXIxLCBpZCB0ZXh0TWFya2VyMikKLXsKLSAgICBpZiAoIXRleHRNYXJrZXIxIHx8ICF0
ZXh0TWFya2VyMikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gQVhUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlcjEsIHRleHRNYXJrZXIyKTsKLX0KLQotLy8gV2hlbiBtb2Rp
ZnlpbmcgYXR0cmlidXRlZCBzdHJpbmdzLCB0aGUgcmFuZ2UgY2FuIGNvbWUgZnJvbSBhIHNvdXJj
ZSB3aGljaCBtYXkgcHJvdmlkZSBmYXVsdHkgaW5mb3JtYXRpb24gKGUuZy4gdGhlIHNwZWxsIGNo
ZWNrZXIpLgotLy8gVG8gcHJvdGVjdCBhZ2FpbnN0IHN1Y2ggY2FzZXMgdGhlIHJhbmdlIHNob3Vs
ZCBiZSB2YWxpZGF0ZWQgYmVmb3JlIGFkZGluZyBvciByZW1vdmluZyBhdHRyaWJ1dGVzLgotc3Rh
dGljIEJPT0wgQVhBdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc1ZhbGlkKE5TQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywgTlNSYW5nZSByYW5nZSkKLXsKLSAgICByZXR1cm4gKHJhbmdlLmxvY2F0
aW9uIDwgW2F0dHJTdHJpbmcgbGVuZ3RoXSAmJiBOU01heFJhbmdlKHJhbmdlKSA8PSBbYXR0clN0
cmluZyBsZW5ndGhdKTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRGb250
KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5TU3RyaW5nKiBhdHRyaWJ1
dGUsIE5TRm9udCogZm9udCwgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBpZiAoIUFYQXR0cmlidXRl
ZFN0cmluZ1JhbmdlSXNWYWxpZChhdHRyU3RyaW5nLCByYW5nZSkpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBpZiAoZm9udCkgewotICAgICAgICBOU0RpY3Rpb25hcnkqIGRpY3QgPSBbTlNE
aWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbZm9udCBmb250TmFtZV0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICwgTlNBY2Nlc3NpYmlsaXR5Rm9udE5hbWVLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbZm9udCBmYW1pbHlOYW1lXSAgICAgICAgICAgICAgICAgICAgICAgICAgICwgTlNBY2Nl
c3NpYmlsaXR5Rm9udEZhbWlseUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtm
b250IGRpc3BsYXlOYW1lXSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBOU0FjY2Vzc2liaWxp
dHlWaXNpYmxlTmFtZUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6W2ZvbnQgcG9pbnRTaXplXV0gLCBOU0FjY2Vzc2liaWxpdHlGb250
U2l6ZUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgICAgIAot
ICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6YXR0cmlidXRlIHZhbHVlOmRpY3QgcmFu
Z2U6cmFuZ2VdOwotICAgIH0gZWxzZQotICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1
dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKLSAgICAKLX0KLQotc3RhdGljIENHQ29sb3JSZWYg
Q3JlYXRlQ0dDb2xvcklmRGlmZmVyZW50KE5TQ29sb3IqIG5zQ29sb3IsIENHQ29sb3JSZWYgZXhp
c3RpbmdDb2xvcikKLXsKLSAgICAvLyBnZXQgY29sb3IgaW5mb3JtYXRpb24gYXNzdW1pbmcgTlNE
ZXZpY2VSR0JDb2xvclNwYWNlCi0gICAgTlNDb2xvciogcmdiQ29sb3IgPSBbbnNDb2xvciBjb2xv
clVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXTsKLSAgICBpZiAocmdi
Q29sb3IgPT0gbmlsKQotICAgICAgICByZ2JDb2xvciA9IFtOU0NvbG9yIGJsYWNrQ29sb3JdOwot
ICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKLSAgICBbcmdiQ29sb3IgZ2V0UmVkOiZjb21wb25l
bnRzWzBdIGdyZWVuOiZjb21wb25lbnRzWzFdIGJsdWU6JmNvbXBvbmVudHNbMl0gYWxwaGE6JmNv
bXBvbmVudHNbM11dOwotICAgIAotICAgIC8vIGNyZWF0ZSBhIG5ldyBDR0NvbG9yUmVmIHRvIHJl
dHVybgotICAgIENHQ29sb3JTcGFjZVJlZiBjZ0NvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVh
dGVEZXZpY2VSR0IoKTsKLSAgICBDR0NvbG9yUmVmIGNnQ29sb3IgPSBDR0NvbG9yQ3JlYXRlKGNn
Q29sb3JTcGFjZSwgY29tcG9uZW50cyk7Ci0gICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjZ0NvbG9y
U3BhY2UpOwotICAgIAotICAgIC8vIGNoZWNrIGZvciBtYXRjaCB3aXRoIGV4aXN0aW5nIGNvbG9y
Ci0gICAgaWYgKGV4aXN0aW5nQ29sb3IgJiYgQ0dDb2xvckVxdWFsVG9Db2xvcihjZ0NvbG9yLCBl
eGlzdGluZ0NvbG9yKSkgewotICAgICAgICBDR0NvbG9yUmVsZWFzZShjZ0NvbG9yKTsKLSAgICAg
ICAgY2dDb2xvciA9IDA7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBjZ0NvbG9yOwotfQotCi1z
dGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKE5TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcqIGF0dHJTdHJpbmcsIE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TQ29sb3IqIGNvbG9yLCBO
U1JhbmdlIHJhbmdlKQotewotICAgIGlmICghQVhBdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc1ZhbGlk
KGF0dHJTdHJpbmcsIHJhbmdlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChjb2xv
cikgewotICAgICAgICBDR0NvbG9yUmVmIGV4aXN0aW5nQ29sb3IgPSAoQ0dDb2xvclJlZikgW2F0
dHJTdHJpbmcgYXR0cmlidXRlOmF0dHJpYnV0ZSBhdEluZGV4OnJhbmdlLmxvY2F0aW9uIGVmZmVj
dGl2ZVJhbmdlOm5pbF07Ci0gICAgICAgIENHQ29sb3JSZWYgY2dDb2xvciA9IENyZWF0ZUNHQ29s
b3JJZkRpZmZlcmVudChjb2xvciwgZXhpc3RpbmdDb2xvcik7Ci0gICAgICAgIGlmIChjZ0NvbG9y
KSB7Ci0gICAgICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6YXR0cmlidXRlIHZhbHVl
OihpZCljZ0NvbG9yIHJhbmdlOnJhbmdlXTsKLSAgICAgICAgICAgIENHQ29sb3JSZWxlYXNlKGNn
Q29sb3IpOwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIFthdHRyU3RyaW5nIHJlbW92
ZUF0dHJpYnV0ZTphdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotfQotCi1zdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldE51bWJlcihOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLCBOU1N0cmluZyogYXR0cmlidXRlLCBOU051bWJlciogbnVtYmVyLCBOU1JhbmdlIHJhbmdl
KQotewotICAgIGlmICghQVhBdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc1ZhbGlkKGF0dHJTdHJpbmcs
IHJhbmdlKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlmIChudW1iZXIpCi0gICAgICAg
IFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6bnVtYmVyIHJhbmdlOnJh
bmdlXTsKLSAgICBlbHNlCi0gICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTphdHRy
aWJ1dGUgcmFuZ2U6cmFuZ2VdOwotfQotCi1zdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgUmVuZGVyU3R5bGUqIHN0eWxlID0g
cmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgCi0gICAgLy8gc2V0IGJhc2ljIGZvbnQgaW5mbwotICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9udChhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlGb250
VGV4dEF0dHJpYnV0ZSwgc3R5bGUtPmZvbnQoKS5wcmltYXJ5Rm9udCgpLT5nZXROU0ZvbnQoKSwg
cmFuZ2UpOwotICAgIAotICAgIC8vIHNldCBiYXNpYyBjb2xvcnMKLSAgICBBWEF0dHJpYnV0ZVN0
cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZvcmVncm91bmRDb2xvclRl
eHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9w
ZXJ0eUNvbG9yKSksIHJhbmdlKTsKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29s
b3Ioc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikpLCByYW5nZSk7Ci0gICAgCi0gICAgLy8gc2V0IHN1cGVyL3N1YiBzY3JpcHRpbmcKLSAgICBF
VmVydGljYWxBbGlnbiBhbGlnbm1lbnQgPSBzdHlsZS0+dmVydGljYWxBbGlnbigpOwotICAgIGlm
IChhbGlnbm1lbnQgPT0gU1VCKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIFtOU051
bWJlciBudW1iZXJXaXRoSW50OigtMSldLCByYW5nZSk7Ci0gICAgZWxzZSBpZiAoYWxpZ25tZW50
ID09IFNVUEVSKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5n
LCBOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1i
ZXJXaXRoSW50OjFdLCByYW5nZSk7Ci0gICAgZWxzZQotICAgICAgICBbYXR0clN0cmluZyByZW1v
dmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U3VwZXJzY3JpcHRUZXh0QXR0cmlidXRlIHJhbmdl
OnJhbmdlXTsKLSAgICAKLSAgICAvLyBzZXQgc2hhZG93Ci0gICAgaWYgKHN0eWxlLT50ZXh0U2hh
ZG93KCkpCi0gICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5T
QWNjZXNzaWJpbGl0eVNoYWRvd1RleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDpZRVNdLCByYW5nZSk7Ci0gICAgZWxzZQotICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRy
aWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U2hhZG93VGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci0g
ICAgCi0gICAgLy8gc2V0IHVuZGVybGluZSBhbmQgc3RyaWtldGhyb3VnaAotICAgIGludCBkZWNv
ciA9IHN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIGlmICgoZGVjb3IgJiBV
TkRFUkxJTkUpID09IDApIHsKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5T
QWNjZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotICAgICAg
ICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lQ29s
b3JUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKChkZWNv
ciAmIExJTkVfVEhST1VHSCkgPT0gMCkgewotICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRy
aWJ1dGU6TlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFu
Z2VdOwotICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5
U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci0gICAgfQotICAg
IAotICAgIGlmICgoZGVjb3IgJiAoVU5ERVJMSU5FIHwgTElORV9USFJPVUdIKSkgIT0gMCkgewot
ICAgICAgICAvLyBmaW5kIGNvbG9ycyB1c2luZyBxdWlyayBtb2RlIGFwcHJvYWNoIChzdHJpY3Qg
bW9kZSB3b3VsZCB1c2UgY3VycmVudAotICAgICAgICAvLyBjb2xvciBmb3IgYWxsIGJ1dCB0aGUg
cm9vdCBsaW5lIGJveCwgd2hpY2ggd291bGQgdXNlIGdldFRleHREZWNvcmF0aW9uQ29sb3JzKQot
ICAgICAgICBDb2xvciB1bmRlcmxpbmUsIG92ZXJsaW5lLCBsaW5ldGhyb3VnaDsKLSAgICAgICAg
cmVuZGVyZXItPmdldFRleHREZWNvcmF0aW9uQ29sb3JzKGRlY29yLCB1bmRlcmxpbmUsIG92ZXJs
aW5lLCBsaW5ldGhyb3VnaCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoKGRlY29yICYgVU5ERVJM
SU5FKSAhPSAwKSB7Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRy
U3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRB
dHRyaWJ1dGUsIG5zQ29sb3IodW5kZXJsaW5lKSwgcmFuZ2UpOwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBpZiAoKGRlY29yICYgTElORV9USFJPVUdIKSAhPSAwKSB7Ci0gICAgICAgICAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlT
dHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10s
IHJhbmdlKTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmlu
ZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgbnNDb2xv
cihsaW5ldGhyb3VnaCksIHJhbmdlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBJ
bmRpY2F0ZSBiYWNrZ3JvdW5kIGhpZ2hsaWdodGluZy4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBy
ZW5kZXJlci0+bm9kZSgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKG1hcmtUYWcpKQotICAgICAgICAgICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgQCJBWEhpZ2hsaWdodCIsIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdLCByYW5nZSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQotewot
ICAgIGlmICghQVhBdHRyaWJ1dGVkU3RyaW5nUmFuZ2VJc1ZhbGlkKGF0dHJTdHJpbmcsIHJhbmdl
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9
IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRl
cmVyKTsKLSAgICBpbnQgcXVvdGVMZXZlbCA9IG9iai0+YmxvY2txdW90ZUxldmVsKCk7Ci0gICAg
Ci0gICAgaWYgKHF1b3RlTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpO
U0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgdmFsdWU6W05TTnVtYmVyIG51
bWJlcldpdGhJbnQ6cXVvdGVMZXZlbF0gcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAg
W2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZl
bEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci19Ci0KLXN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3Ry
aW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTm9k
ZSogbm9kZSwgY29uc3QgVUNoYXIqIGNoYXJzLCBpbnQgY2hhckxlbmd0aCwgTlNSYW5nZSByYW5n
ZSkKLXsKLSAgICBpZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChub2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpKSkgewotICAgICAgICAvLyBDaGVjayB0aGUgc3BlbGxpbmcgZGlyZWN0bHkgc2lu
Y2UgZG9jdW1lbnQtPm1hcmtlcnNGb3JOb2RlKCkgZG9lcyBub3Qgc3RvcmUgdGhlIG1pc3NwZWxs
ZWQgbWFya2luZyB3aGVuIHRoZSBjdXJzb3IgaXMgaW4gYSB3b3JkLgotICAgICAgICBUZXh0Q2hl
Y2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPmVkaXRvcigp
LT50ZXh0Q2hlY2tlcigpOwotICAgICAgICAKLSAgICAgICAgLy8gY2hlY2tUZXh0T2ZQYXJhZ3Jh
cGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxlbWVudGVkIGluIFdL
MSBhbmQgV0syCi0gICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0g
ICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNoZWNrZXIsIGNoYXJzLCBjaGFyTGVuZ3RoLCBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIHJlc3VsdHMpOwotICAgICAgICAKLSAgICAgICAgc2l6
ZV90IHNpemUgPSByZXN1bHRzLnNpemUoKTsKLSAgICAgICAgTlNOdW1iZXIqIHRydWVWYWx1ZSA9
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICBjb25zdCBUZXh0Q2hlY2tpbmdSZXN1
bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0
ZSwgdHJ1ZVZhbHVlLCBOU01ha2VSYW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlv
biwgcmVzdWx0Lmxlbmd0aCkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgCi0gICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7Ci0gICAgd2hpbGUgKGNoYXJMZW5ndGgg
PiAwKSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3VycmVudFBv
c2l0aW9uOwotICAgICAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50ZXh0Q2hlY2tlcigpOwotICAgICAgICAKLSAgICAg
ICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKLSAgICAgICAgaW50IG1pc3NwZWxsaW5n
TGVuZ3RoID0gMDsKLSAgICAgICAgY2hlY2tlci0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNoYXJE
YXRhLCBjaGFyTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3Ro
KTsKLSAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPT0gLTEgfHwgIW1pc3NwZWxsaW5n
TGVuZ3RoKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBOU1JhbmdlIHNw
ZWxsUmFuZ2UgPSBOU01ha2VSYW5nZShyYW5nZS5sb2NhdGlvbiArIGN1cnJlbnRQb3NpdGlvbiAr
IG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgQVhBdHRy
aWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxl
ZFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBzcGVsbFJhbmdl
KTsKLSAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxs
aW5nTGVuZ3RoKTsKLSAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xvY2F0
aW9uICsgbWlzc3BlbGxpbmdMZW5ndGgpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBp
ZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKCFBWEF0dHJpYnV0
ZWRTdHJpbmdSYW5nZUlzVmFsaWQoYXR0clN0cmluZywgcmFuZ2UpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgLy8gU29tZXRpbWVzIHRoZXJlIGFyZSBvYmplY3RzIGJldHdlZW4gdGhlIHRl
eHQgYW5kIHRoZSBoZWFkaW5nLgotICAgIC8vIEluIHRob3NlIGNhc2VzIHRoZSBwYXJlbnQgaGll
cmFyY2h5IHNob3VsZCBiZSBxdWVyaWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGhlYWRpbmcgbGV2
ZWwuCi0gICAgaW50IHBhcmVudEhlYWRpbmdMZXZlbCA9IDA7Ci0gICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50T2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUocmVuZGVyZXItPnBhcmVudCgpKTsKLSAgICBmb3IgKDsgcGFyZW50T2Jq
ZWN0OyBwYXJlbnRPYmplY3QgPSBwYXJlbnRPYmplY3QtPnBhcmVudE9iamVjdCgpKSB7Ci0gICAg
ICAgIHBhcmVudEhlYWRpbmdMZXZlbCA9IHBhcmVudE9iamVjdC0+aGVhZGluZ0xldmVsKCk7Ci0g
ICAgICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCi0gICAgICAgICAgICBicmVhazsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKHBhcmVudEhlYWRpbmdMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcg
YWRkQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHZhbHVlOltOU051bWJlciBudW1iZXJXaXRo
SW50OnBhcmVudEhlYWRpbmdMZXZlbF0gcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAg
W2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOkAiQVhIZWFkaW5nTGV2ZWwiIHJhbmdlOnJhbmdl
XTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRFbGVtZW50KE5TTXV0YWJs
ZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5TU3RyaW5nKiBhdHRyaWJ1dGUsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iamVjdCwgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBpZiAoIUFYQXR0
cmlidXRlZFN0cmluZ1JhbmdlSXNWYWxpZChhdHRyU3RyaW5nLCByYW5nZSkpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBpZiAob2JqZWN0ICYmIG9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0KCkpIHsKLSAgICAgICAgLy8gbWFrZSBhIHNlcmlhbGl6YWJsZSBBWCBvYmplY3QK
LSAgICAgICAgCi0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4ob2JqZWN0KS0+cmVuZGVyZXIoKTsKLSAgICAgICAg
aWYgKCFyZW5kZXJlcikKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIERv
Y3VtZW50KiBkb2MgPSByZW5kZXJlci0+ZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKCFkb2MpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBBWE9iamVjdENhY2hlKiBjYWNo
ZSA9IGRvYy0+YXhPYmplY3RDYWNoZSgpOwotICAgICAgICBpZiAoIWNhY2hlKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAKLSAgICAgICAgQVhVSUVsZW1lbnRSZWYgYXhFbGVtZW50ID0g
d2tDcmVhdGVBWFVJRWxlbWVudFJlZihvYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgICAgIGlmIChh
eEVsZW1lbnQpIHsKLSAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1
dGUgdmFsdWU6KGlkKWF4RWxlbWVudCByYW5nZTpyYW5nZV07Ci0gICAgICAgICAgICBDRlJlbGVh
c2UoYXhFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBbYXR0clN0cmlu
ZyByZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKLX0KLQotc3RhdGljIHZv
aWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KiBhdHRyU3RyaW5nLCBOb2RlKiBub2RlLCBjb25zdCBVQ2hhciogY2hhcnMsIGludCBsZW5ndGgp
Ci17Ci0gICAgLy8gc2tpcCBpbnZpc2libGUgdGV4dAotICAgIGlmICghbm9kZS0+cmVuZGVyZXIo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIGVhc2llciB0byBjYWxjdWxhdGUgdGhl
IHJhbmdlIGJlZm9yZSBhcHBlbmRpbmcgdGhlIHN0cmluZwotICAgIE5TUmFuZ2UgYXR0clN0cmlu
Z1JhbmdlID0gTlNNYWtlUmFuZ2UoW2F0dHJTdHJpbmcgbGVuZ3RoXSwgbGVuZ3RoKTsKLSAgICAK
LSAgICAvLyBhcHBlbmQgdGhlIHN0cmluZyBmcm9tIHRoaXMgbm9kZQotICAgIFtbYXR0clN0cmlu
ZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0
ZXJzOmNoYXJzIGxlbmd0aDpsZW5ndGhdXTsKLSAgICAKLSAgICAvLyBhZGQgbmV3IGF0dHJpYnV0
ZXMgYW5kIHJlbW92ZSBpcnJlbGV2YW50IGluaGVyaXRlZCBvbmVzCi0gICAgLy8gTk9URTogY29s
b3IgYXR0cmlidXRlcyBhcmUgaGFuZGxlZCBzcGVjaWFsbHkgYmVjYXVzZSAtW05TTXV0YWJsZUF0
dHJpYnV0ZWRTdHJpbmcgYWRkQXR0cmlidXRlOiB2YWx1ZTogcmFuZ2U6XSBkb2VzIG5vdCBtZXJn
ZQotICAgIC8vIGlkZW50aWNhbCBjb2xvcnMuICBXb3JrYXJvdW5kIGlzIHRvIG5vdCByZXBsYWNl
IGFuIGV4aXN0aW5nIGNvbG9yIGF0dHJpYnV0ZSBpZiBpdCBtYXRjaGVzIHdoYXQgd2UgYXJlIGFk
ZGluZy4gIFRoaXMgYWxzbyBtZWFucwotICAgIC8vIHdlIGNhbm5vdCBqdXN0IHByZS1yZW1vdmUg
YWxsIGluaGVyaXRlZCBhdHRyaWJ1dGVzIG9uIHRoZSBhcHBlbmRlZCBzdHJpbmcsIHNvIHdlIGhh
dmUgdG8gcmVtb3ZlIHRoZSBpcnJlbGV2YW50IG9uZXMgaW5kaXZpZHVhbGx5LgotICAgIAotICAg
IC8vIHJlbW92ZSBpbmhlcml0ZWQgYXR0YWNobWVudCBmcm9tIHByaW9yIEFYQXR0cmlidXRlZFN0
cmluZ0FwcGVuZFJlcGxhY2VkCi0gICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNj
ZXNzaWJpbGl0eUF0dGFjaG1lbnRUZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07
Ci0gICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eU1pc3NwZWxs
ZWRUZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07Ci0gICAgCi0gICAgLy8gc2V0
IG5ldyBhdHRyaWJ1dGVzCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShhdHRyU3RyaW5n
LCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOwotICAgIEFYQXR0cmlidXRlU3Ry
aW5nU2V0SGVhZGluZ0xldmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJp
bmdSYW5nZSk7Ci0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwoYXR0clN0
cmluZywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsKLSAgICBBWEF0dHJpYnV0
ZVN0cmluZ1NldEVsZW1lbnQoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TGlua1RleHRBdHRy
aWJ1dGUsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2RlKG5vZGUpLCBh
dHRyU3RyaW5nUmFuZ2UpOwotICAgIAotICAgIC8vIGRvIHNwZWxsaW5nIGxhc3QgYmVjYXVzZSBp
dCB0ZW5kcyB0byBicmVhayB1cCB0aGUgcmFuZ2UKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldFNw
ZWxsaW5nKGF0dHJTdHJpbmcsIG5vZGUsIGNoYXJzLCBsZW5ndGgsIGF0dHJTdHJpbmdSYW5nZSk7
Ci19Ci0KLXN0YXRpYyBOU1N0cmluZyogbnNTdHJpbmdGb3JSZXBsYWNlZE5vZGUoTm9kZSogcmVw
bGFjZWROb2RlKQotewotICAgIC8vIHdlIHNob3VsZCBhbHdheXMgYmUgZ2l2ZW4gYSByZW5kZXJl
ZCBub2RlIGFuZCBhIHJlcGxhY2VkIG5vZGUsIGJ1dCBiZSBzYWZlCi0gICAgLy8gcmVwbGFjZWQg
bm9kZXMgYXJlIGVpdGhlciBhdHRhY2htZW50cyAod2lkZ2V0cykgb3IgaW1hZ2VzCi0gICAgaWYg
KCFyZXBsYWNlZE5vZGUgfHwgIXJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSB8fCAhcmVwbGFjZWRO
b2RlLT5yZW5kZXJlcigpLT5pc1JlcGxhY2VkKCkgfHwgcmVwbGFjZWROb2RlLT5pc1RleHROb2Rl
KCkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgfQotICAgIAotICAgIC8vIGNyZWF0ZSBhbiBBWCBvYmplY3QsIGJ1dCBza2lwIGl0IGlm
IGl0IGlzIG5vdCBzdXBwb3NlZCB0byBiZSBzZWVuCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG9iaiA9IHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKS0+ZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCkpOwotICAgIGlm
IChvYmotPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAKLSAgICAvLyB1c2UgdGhlIGF0dGFjaG1lbnRDaGFyYWN0ZXIgdG8gcmVwcmVzZW50IHRoZSBy
ZXBsYWNlZCBub2RlCi0gICAgY29uc3QgVW5pQ2hhciBhdHRhY2htZW50Q2hhciA9IE5TQXR0YWNo
bWVudENoYXJhY3RlcjsKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZhdHRhY2htZW50Q2hhciBsZW5ndGg6MV07Ci19Ci0KLS0gKE5TQXR0cmlidXRlZFN0cmluZyop
ZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6KGlkKXRleHRNYXJrZXJSYW5n
ZQotewotICAgIGlmICghbV9vYmplY3QpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
Ly8gZXh0cmFjdCB0aGUgc3RhcnQgYW5kIGVuZCBWaXNpYmxlUG9zaXRpb24KLSAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRWaXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JTdGFydE9m
VGV4dE1hcmtlclJhbmdlKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5n
ZSk7Ci0gICAgaWYgKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIAotICAgIFZpc2libGVQb3NpdGlvbiBlbmRWaXNpYmxlUG9zaXRpb24gPSB2
aXNpYmxlUG9zaXRpb25Gb3JFbmRPZlRleHRNYXJrZXJSYW5nZShtX29iamVjdC0+YXhPYmplY3RD
YWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOwotICAgIGlmIChlbmRWaXNpYmxlUG9zaXRpb24uaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQ
b3NpdGlvbik7Ci0gICAgLy8gaXRlcmF0ZSBvdmVyIHRoZSByYW5nZSB0byBidWlsZCB0aGUgQVgg
YXR0cmlidXRlZCBzdHJpbmcKLSAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XTsKLSAgICBUZXh0
SXRlcmF0b3IgaXQobWFrZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9z
aXRpb24pLmdldCgpKTsKLSAgICB3aGlsZSAoIWl0LmF0RW5kKCkpIHsKLSAgICAgICAgLy8gbG9j
YXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmFuZ2UKLSAgICAgICAg
aW50IGV4Y2VwdGlvbiA9IDA7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFy
dENvbnRhaW5lcihleGNlcHRpb24pOwotICAgICAgICBBU1NFUlQobm9kZSA9PSBpdC5yYW5nZSgp
LT5lbmRDb250YWluZXIoZXhjZXB0aW9uKSk7Ci0gICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5n
ZSgpLT5zdGFydE9mZnNldChleGNlcHRpb24pOwotICAgICAgICAKLSAgICAgICAgLy8gbm9uLXpl
cm8gbGVuZ3RoIG1lYW5zIHRleHR1YWwgbm9kZSwgemVybyBsZW5ndGggbWVhbnMgcmVwbGFjZWQg
bm9kZSAoQUtBICJhdHRhY2htZW50cyIgaW4gQVgpCi0gICAgICAgIGlmIChpdC5sZW5ndGgoKSAh
PSAwKSB7Ci0gICAgICAgICAgICAvLyBBZGQgdGhlIHRleHQgb2YgdGhlIGxpc3QgbWFya2VyIGl0
ZW0gaWYgbmVjZXNzYXJ5LgotICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gbV9v
YmplY3QtPmxpc3RNYXJrZXJUZXh0Rm9yTm9kZUFuZFBvc2l0aW9uKG5vZGUsIFZpc2libGVQb3Np
dGlvbihpdC5yYW5nZSgpLT5zdGFydFBvc2l0aW9uKCkpKTsKLSAgICAgICAgICAgIGlmICghbGlz
dE1hcmtlclRleHQuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIEFYQXR0cmlidXRlZFN0cmlu
Z0FwcGVuZFRleHQoYXR0clN0cmluZywgbm9kZSwgbGlzdE1hcmtlclRleHQuY2hhcmFjdGVycygp
LCBsaXN0TWFya2VyVGV4dC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEFY
QXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoYXR0clN0cmluZywgbm9kZSwgaXQuY2hhcmFjdGVy
cygpLCBpdC5sZW5ndGgoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBOb2RlKiBy
ZXBsYWNlZE5vZGUgPSBub2RlLT5jaGlsZE5vZGUob2Zmc2V0KTsKLSAgICAgICAgICAgIE5TU3Ry
aW5nICphdHRhY2htZW50U3RyaW5nID0gbnNTdHJpbmdGb3JSZXBsYWNlZE5vZGUocmVwbGFjZWRO
b2RlKTsKLSAgICAgICAgICAgIGlmIChhdHRhY2htZW50U3RyaW5nKSB7Ci0gICAgICAgICAgICAg
ICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2UgPSBOU01ha2VSYW5nZShbYXR0clN0cmluZyBsZW5n
dGhdLCBbYXR0YWNobWVudFN0cmluZyBsZW5ndGhdKTsKLSAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICAvLyBhcHBlbmQgdGhlIHBsYWNlaG9sZGVyIHN0cmluZwotICAgICAgICAgICAg
ICAgIFtbYXR0clN0cmluZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRTdHJpbmc6YXR0YWNobWVudFN0
cmluZ107Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGFsbCBp
bmhlcml0ZWQgYXR0cmlidXRlcwotICAgICAgICAgICAgICAgIFthdHRyU3RyaW5nIHNldEF0dHJp
YnV0ZXM6bmlsIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgLy8gYWRkIHRoZSBhdHRhY2htZW50IGF0dHJpYnV0ZQotICAgICAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKS0+
ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBsYWNlZE5vZGUtPnJl
bmRlcmVyKCkpOwotICAgICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0RWxlbWVudChh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlBdHRhY2htZW50VGV4dEF0dHJpYnV0ZSwgb2JqLCBh
dHRyU3RyaW5nUmFuZ2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGl0LmFk
dmFuY2UoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFthdHRyU3RyaW5nIGF1dG9yZWxlYXNl
XTsKLX0KLQotc3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKEFY
T2JqZWN0Q2FjaGUgKmNhY2hlLCBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgVmlzaWJs
ZVBvc2l0aW9uIGVuZFBvc2l0aW9uKQotewotICAgIGlkIHN0YXJ0VGV4dE1hcmtlciA9IHRleHRN
YXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oY2FjaGUsIHN0YXJ0UG9zaXRpb24pOwotICAgIGlkIGVu
ZFRleHRNYXJrZXIgPSB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGNhY2hlLCBlbmRQb3Np
dGlvbik7Ci0gICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKHN0YXJ0VGV4dE1h
cmtlciwgZW5kVGV4dE1hcmtlcik7Ci19Ci0KLS0gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNp
YmxlUG9zaXRpb25zOihWaXNpYmxlUG9zaXRpb24pc3RhcnRQb3NpdGlvbiBlbmRQb3NpdGlvbjoo
VmlzaWJsZVBvc2l0aW9uKWVuZFBvc2l0aW9uCi17Ci0gICAgcmV0dXJuIHRleHRNYXJrZXJSYW5n
ZUZyb21WaXNpYmxlUG9zaXRpb25zKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uKTsKLX0KLQotLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUFjdGlv
bk5hbWVzCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHN0YXRpYyBOU0FycmF5KiBhY3Rpb25FbGVtZW50
QWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxp
dHlQcmVzc0FjdGlvbiwgTlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIG5pbF07Ci0gICAg
c3RhdGljIE5TQXJyYXkqIGRlZmF1bHRFbGVtZW50QWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbiwgbmlsXTsKLSAg
ICBzdGF0aWMgTlNBcnJheSogbWVudUVsZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eUNhbmNlbEFjdGlvbiwgTlNBY2Nlc3NpYmls
aXR5UHJlc3NBY3Rpb24sIG5pbF07Ci0gICAgc3RhdGljIE5TQXJyYXkqIHNsaWRlckFjdGlvbnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5SW5jcmVt
ZW50QWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlEZWNyZW1lbnRBY3Rpb24sIG5pbF07Ci0gICAgCi0g
ICAgTlNBcnJheSAqYWN0aW9uczsKLSAgICBpZiAobV9vYmplY3QtPmFjdGlvbkVsZW1lbnQoKSB8
fCBtX29iamVjdC0+aXNCdXR0b24oKSkKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbkVsZW1lbnRB
Y3Rpb25zOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnVSZWxhdGVkKCkpCi0gICAgICAg
IGFjdGlvbnMgPSBtZW51RWxlbWVudEFjdGlvbnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlz
U2xpZGVyKCkpCi0gICAgICAgIGFjdGlvbnMgPSBzbGlkZXJBY3Rpb25zOwotICAgIGVsc2UgaWYg
KG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgYWN0aW9ucyA9IFtbc2VsZiBhdHRh
Y2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzXTsKLSAgICBlbHNlCi0gICAgICAg
IGFjdGlvbnMgPSBkZWZhdWx0RWxlbWVudEFjdGlvbnM7Ci0gICAgCi0gICAgcmV0dXJuIGFjdGlv
bnM7Ci19Ci0KLS0gKE5TQXJyYXkqKWFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFt
ZXMKLXsKLSAgICBpZiAoIW1fb2JqZWN0KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAg
IE5TTXV0YWJsZUFycmF5ICphZGRpdGlvbmFsID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAg
ICBpZiAobV9vYmplY3QtPnN1cHBvcnRzQVJJQU93bnMoKSkKLSAgICAgICAgW2FkZGl0aW9uYWwg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOwotICAgIAotICAgIGlmICht
X29iamVjdC0+c3VwcG9ydHNBUklBRXhwYW5kZWQoKSkKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRlXTsKLSAgICAKLSAgICBpZiAo
bV9vYmplY3QtPmlzU2Nyb2xsYmFyKCkpCi0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07Ci0gICAgCi0gICAgaWYgKG1fb2Jq
ZWN0LT5zdXBwb3J0c0FSSUFEcmFnZ2luZygpKQotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV07Ci0gICAgCi0gICAgaWYgKG1fb2Jq
ZWN0LT5zdXBwb3J0c0FSSUFEcm9wcGluZygpKQotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdOwotICAgIAotICAgIGlmICht
X29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSAmJiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmls
aXR5VGFibGUqPihtX29iamVjdCktPnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpCi0gICAgICAgIFth
ZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVd
OwotICAgIAotICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBTGl2ZVJlZ2lvbigpKSB7Ci0g
ICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBTGl2ZUF0dHJp
YnV0ZV07Ci0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklB
UmVsZXZhbnRBdHRyaWJ1dGVdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3QtPnNvcnRE
aXJlY3Rpb24oKSAhPSBTb3J0RGlyZWN0aW9uTm9uZSkKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGVdOwotICAgIAotICAg
IC8vIElmIGFuIG9iamVjdCBpcyBhIGNoaWxkIG9mIGEgbGl2ZSByZWdpb24sIHRoZW4gYWRkIHRo
ZXNlCi0gICAgaWYgKG1fb2JqZWN0LT5pc0luc2lkZUFSSUFMaXZlUmVnaW9uKCkpCi0gICAgICAg
IFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBUklBQXRvbWljQXR0cmlidXRl
XTsKLSAgICAvLyBBbGwgb2JqZWN0cyBzaG91bGQgZXhwb3NlIHRoZSBBUklBIGJ1c3kgYXR0cmli
dXRlIChBUklBIDEuMSB3aXRoIElTU1VFLTUzOCkuCi0gICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUFSSUFCdXN5QXR0cmlidXRlXTsKLSAgICAKLSAgICAvLyBQb3B1cCBi
dXR0b25zIG9uIHRoZSBNYWMgZXhwb3NlIHRoZSB2YWx1ZSBhdHRyaWJ1dGUuCi0gICAgaWYgKG1f
b2JqZWN0LT5pc1BvcFVwQnV0dG9uKCkpCi0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5h
cmlhSGFzUG9wdXAoKSkKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUhhc1BvcHVwQXR0cmlidXRlXTsKLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzTWF0aFJv
b3QoKSkgewotICAgICAgICAvLyBUaGUgaW5kZXggb2YgYSBzcXVhcmUgcm9vdCBpcyBhbHdheXMg
a25vd24sIHNvIHRoZXJlJ3Mgbm8gb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBpdC4KLSAgICAgICAg
aWYgKCFtX29iamVjdC0+aXNNYXRoU3F1YXJlUm9vdCgpKQotICAgICAgICAgICAgW2FkZGl0aW9u
YWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhSb290SW5kZXhBdHRyaWJ1dGVdOwotICAg
ICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RSYWRpY2Fu
ZEF0dHJpYnV0ZV07Ci0gICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNNYXRoRnJhY3Rpb24oKSkg
ewotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0
aW9uTnVtZXJhdG9yQXR0cmlidXRlXTsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU1hdGhGcmFjdGlvbkRlbm9taW5hdG9yQXR0cmlidXRlXTsKLSAgICB9IGVs
c2UgaWYgKG1fb2JqZWN0LT5pc01hdGhTdWJzY3JpcHRTdXBlcnNjcmlwdCgpKSB7Ci0gICAgICAg
IFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoQmFzZUF0dHJpYnV0ZV07
Ci0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoU3Vic2Ny
aXB0QXR0cmlidXRlXTsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eU1hdGhTdXBlcnNjcmlwdEF0dHJpYnV0ZV07Ci0gICAgfSBlbHNlIGlmIChtX29iamVjdC0+
aXNNYXRoVW5kZXJPdmVyKCkpIHsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXTsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhVbmRlckF0dHJpYnV0ZV07Ci0gICAgICAgIFthZGRpdGlv
bmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlNYXRoT3ZlckF0dHJpYnV0ZV07Ci0gICAgfSBl
bHNlIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkpIHsKLSAgICAgICAgW2FkZGl0aW9uYWwg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRPcGVuQXR0cmlidXRlXTsKLSAgICAg
ICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1hdGhGZW5jZWRDbG9zZUF0
dHJpYnV0ZV07Ci0gICAgfQotICAgIAotICAgIHJldHVybiBhZGRpdGlvbmFsOwotfQotCi0tIChO
U0FycmF5KilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKLXsKLSAgICBpZiAoIVtzZWxmIHVw
ZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
aWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRh
Y2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKLSAgICAKLSAgICBzdGF0
aWMgTlNBcnJheSogYXR0cmlidXRlcyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogYW5jaG9y
QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHdlYkFyZWFBdHRycyA9IG5pbDsKLSAg
ICBzdGF0aWMgTlNBcnJheSogdGV4dEF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBs
aXN0QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGxpc3RCb3hBdHRycyA9IG5pbDsK
LSAgICBzdGF0aWMgTlNBcnJheSogcmFuZ2VBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJh
eSogY29tbW9uTWVudUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBtZW51QXR0cnMg
PSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG1lbnVCYXJBdHRycyA9IG5pbDsKLSAgICBzdGF0
aWMgTlNBcnJheSogbWVudUl0ZW1BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogbWVu
dUJ1dHRvbkF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBjb250cm9sQXR0cnMgPSBu
aWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHRhYmxlQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5T
QXJyYXkqIHRhYmxlUm93QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHRhYmxlQ29s
QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHRhYmxlQ2VsbEF0dHJzID0gbmlsOwot
ICAgIHN0YXRpYyBOU0FycmF5KiBncm91cEF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5
KiBpbnB1dEltYWdlQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHBhc3N3b3JkRmll
bGRBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFiTGlzdEF0dHJzID0gbmlsOwot
ICAgIHN0YXRpYyBOU0FycmF5KiBjb21ib0JveEF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0Fy
cmF5KiBvdXRsaW5lQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG91dGxpbmVSb3dB
dHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogYnV0dG9uQXR0cnMgPSBuaWw7Ci0gICAg
c3RhdGljIE5TQXJyYXkqIHNjcm9sbFZpZXdBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJh
eSogaW5jcmVtZW50b3JBdHRycyA9IG5pbDsKLSAgICBOU011dGFibGVBcnJheSogdGVtcEFycmF5
OwotICAgIGlmIChhdHRyaWJ1dGVzID09IG5pbCkgewotICAgICAgICBhdHRyaWJ1dGVzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25B
dHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJp
YnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlLAotICAg
ICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAotICAgICAg
ICAgICAgICAgICAgICAgIEAiQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgQCJBWFN0YXJ0VGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAg
QCJBWEVuZFRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhWaXNpdGVkIiwK
LSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVM
ZXZlbEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUb3BM
ZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAg
IH0KLSAgICBpZiAoY29tbW9uTWVudUF0dHJzID09IG5pbCkgewotICAgICAgICBjb21tb25NZW51
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5
Um9sZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgfQotICAgIGlmIChhbmNob3JBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5VVJMQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9yQXR0cnMgPSBbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJh
eSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHdlYkFyZWFBdHRycyA9PSBuaWwpIHsKLSAgICAg
ICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExpbmtVSUVsZW1lbnRz
Il07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OkAiQVhMb2FkZWQiXTsKLSAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExheW91dENvdW50Il07Ci0gICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9ncmVzc0F0dHJpYnV0ZV07Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07
Ci0gICAgICAgIHdlYkFyZWFBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0
ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAo
dGV4dEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRyaWJ1dGVdOwotICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluc2VydGlvblBvaW50TGluZU51bWJl
ckF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKLSAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0
dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAg
ICBpZiAobGlzdEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
LSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxk
cmVuQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAobGlzdEJveEF0dHJzID09IG5pbCkg
ewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5Omxpc3RBdHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIGxpc3RCb3hB
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAocmFuZ2VBdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlF
bGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgcmFuZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwot
ICAgIH0KLSAgICBpZiAobWVudUJhckF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107
Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hp
bGRyZW5BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIG1l
bnVCYXJBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwot
ICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAobWVudUF0dHJzID09
IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdOwotICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hpbGRyZW5BdHRyaWJ1dGVd
OwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxl
bWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAg
IH0KLSAgICBpZiAobWVudUl0ZW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0g
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb21tb25NZW51QXR0cnNdOwot
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlbHBBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyop
a0FYTWVudUl0ZW1DbWRDaGFyQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6KE5TU3RyaW5nKilrQVhNZW51SXRlbUNtZFZpcnR1YWxLZXlBdHRyaWJ1dGVdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWE1lbnVJdGVtQ21kR2x5cGhBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWE1lbnVJ
dGVtQ21kTW9kaWZpZXJzQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
KE5TU3RyaW5nKilrQVhNZW51SXRlbU1hcmtDaGFyQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhNZW51SXRlbVByaW1hcnlVSUVsZW1lbnRBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZXJ2
ZXNBc1RpdGxlRm9yVUlFbGVtZW50c0F0dHJpYnV0ZV07Ci0gICAgICAgIG1lbnVJdGVtQXR0cnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3Rl
bXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKG1lbnVCdXR0b25BdHRycyA9PSBuaWwp
IHsKLSAgICAgICAgbWVudUJ1dHRvbkF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9i
amVjdHM6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2l6ZUF0dHJpYnV0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRy
aWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlGb2N1c2Vk
QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5VGl0
bGVBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlD
aGlsZHJlbkF0dHJpYnV0ZSwgbmlsXTsKLSAgICB9Ci0gICAgaWYgKGNvbnRyb2xBdHRycyA9PSBu
aWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwotICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07Ci0gICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVd
OwotICAgICAgICBjb250cm9sQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYg
KGluY3JlbWVudG9yQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEJ1dHRvbkF0dHJpYnV0ZV07
Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEJ1
dHRvbkF0dHJpYnV0ZV07Ci0gICAgICAgIGluY3JlbWVudG9yQXR0cnMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNl
XTsKLSAgICB9Ci0gICAgaWYgKGJ1dHRvbkF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwot
ICAgICAgICAvLyBCdXR0b25zIHNob3VsZCBub3QgZXhwb3NlIEFYVmFsdWUuCi0gICAgICAgIFt0
ZW1wQXJyYXkgcmVtb3ZlT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXTsKLSAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRB
dHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlB
Y2Nlc3NLZXlBdHRyaWJ1dGVdOwotICAgICAgICBidXR0b25BdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2Vd
OwotICAgIH0KLSAgICBpZiAoY29tYm9Cb3hBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFy
cmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpjb250cm9sQXR0cnNd
OwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0
dHJpYnV0ZV07Ci0gICAgICAgIGNvbWJvQm94QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9
Ci0gICAgaWYgKHRhYmxlQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNN
dXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbnNB
dHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ29sdW1uc0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0OihOU1N0cmluZyAqKWtBWENvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGVd
OwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJV
SUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVBdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJl
bGVhc2VdOwotICAgIH0KLSAgICBpZiAodGFibGVSb3dBdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
dGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRyaWJ1
dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5kZXhB
dHRyaWJ1dGVdOwotICAgICAgICB0YWJsZVJvd0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAg
fQotICAgIGlmICh0YWJsZUNvbEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNp
YmxlUm93c0F0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlQ29sQXR0cnMgPSBbW05TQXJyYXkgYWxs
b2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNl
XTsKLSAgICB9Ci0gICAgaWYgKHRhYmxlQ2VsbEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1w
QXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNd
OwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dJbmRleFJh
bmdlQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlQ2VsbEF0dHJzID0g
W1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1w
QXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChncm91cEF0dHJzID09IG5pbCkgewotICAg
ICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0
dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlU
aXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxl
YXNlXTsKLSAgICB9Ci0gICAgaWYgKGlucHV0SW1hZ2VBdHRycyA9PSBuaWwpIHsKLSAgICAgICAg
dGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25B
dHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0
dHJpYnV0ZV07Ci0gICAgICAgIGlucHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAg
IH0KLSAgICBpZiAocGFzc3dvcmRGaWVsZEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwot
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVu
dEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVJlcXVpcmVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eVBsYWNlaG9sZGVyVmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBwYXNz
d29yZEZpZWxkQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHRhYkxpc3RB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VGFic0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKLSAgICAgICAgdGFiTGlz
dEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAg
ICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChvdXRsaW5lQXR0cnMgPT0g
bmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKLSAgICAgICAgb3V0
bGluZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChvdXRsaW5lUm93QXR0
cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6dGFibGVSb3dBdHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRCeVJvd0F0dHJpYnV0ZV07Ci0g
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZl
bEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOwotICAgICAgICBvdXRsaW5lUm93QXR0cnMgPSBbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJh
eSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHNjcm9sbFZpZXdBdHRycyA9PSBuaWwpIHsKLSAg
ICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTph
dHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
Q29udGVudHNBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdOwot
ICAgICAgICBzY3JvbGxWaWV3QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgCi0g
ICAgTlNBcnJheSAqb2JqZWN0QXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7Ci0gICAgCi0gICAgaWYg
KG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9
IHBhc3N3b3JkRmllbGRBdHRyczsKLSAgICAKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNXZWJB
cmVhKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB3ZWJBcmVhQXR0cnM7Ci0gICAgCi0g
ICAgZWxzZSBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkKLSAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IHRleHRBdHRyczsKLSAgICAKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNBbmNo
b3IoKSB8fCBtX29iamVjdC0+aXNJbWFnZSgpIHx8IG1fb2JqZWN0LT5pc0xpbmsoKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IGFuY2hvckF0dHJzOwotICAgIAotICAgIGVsc2UgaWYgKG1f
b2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVz
ID0gdGFibGVBdHRyczsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJsZUNvbHVtbigpKQot
ICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFibGVDb2xBdHRyczsKLSAgICBlbHNlIGlmICht
X29iamVjdC0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxl
Q2VsbEF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1RhYmxlUm93KCkpIHsKLSAgICAg
ICAgLy8gQW4gQVJJQSB0YWJsZSByb3cgY2FuIGJlIGNvbGxhcHNlZCBhbmQgZXhwYW5kZWQsIHNv
IGl0IG5lZWRzIHRoZSBleHRyYSBhdHRyaWJ1dGVzLgotICAgICAgICBpZiAobV9vYmplY3QtPmlz
QVJJQVRyZWVHcmlkUm93KCkpCi0gICAgICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0bGlu
ZVJvd0F0dHJzOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0g
dGFibGVSb3dBdHRyczsKLSAgICB9Ci0gICAgCi0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzVHJl
ZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gb3V0bGluZUF0dHJzOwotICAgIGVsc2Ug
aWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBv
dXRsaW5lUm93QXR0cnM7Ci0gICAgCi0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTGlzdEJveCgp
KQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbGlzdEJveEF0dHJzOwotICAgIGVsc2UgaWYg
KG1fb2JqZWN0LT5pc0xpc3QoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGxpc3RBdHRy
czsKLSAgICAKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNDb21ib0JveCgpKQotICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gY29tYm9Cb3hBdHRyczsKLSAgICAKLSAgICBlbHNlIGlmIChtX29i
amVjdC0+aXNQcm9ncmVzc0luZGljYXRvcigpIHx8IG1fb2JqZWN0LT5pc1NsaWRlcigpKQotICAg
ICAgICBvYmplY3RBdHRyaWJ1dGVzID0gcmFuZ2VBdHRyczsKLSAgICAKLSAgICAvLyBUaGVzZSBh
cmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJlY2F1c2UgYW4gaW5wdXQgaW1hZ2UgaXMgYSBidXR0b24s
IGFuZCBhIGJ1dHRvbiBpcyBhIGNvbnRyb2wuCi0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzSW5w
dXRJbWFnZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gaW5wdXRJbWFnZUF0dHJzOwot
ICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0J1dHRvbigpKQotICAgICAgICBvYmplY3RBdHRyaWJ1
dGVzID0gYnV0dG9uQXR0cnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzQ29udHJvbCgpKQot
ICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gY29udHJvbEF0dHJzOwotICAgIAotICAgIGVsc2Ug
aWYgKG1fb2JqZWN0LT5pc0dyb3VwKCkgfHwgbV9vYmplY3QtPmlzTGlzdEl0ZW0oKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IGdyb3VwQXR0cnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3Qt
PmlzVGFiTGlzdCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFiTGlzdEF0dHJzOwot
ICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1Njcm9sbFZpZXcoKSkKLSAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IHNjcm9sbFZpZXdBdHRyczsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNTcGlu
QnV0dG9uKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBpbmNyZW1lbnRvckF0dHJzOwot
ICAgIAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnUoKSkKLSAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IG1lbnVBdHRyczsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNNZW51QmFyKCkp
Ci0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51QmFyQXR0cnM7Ci0gICAgZWxzZSBpZiAo
bV9vYmplY3QtPmlzTWVudUJ1dHRvbigpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbWVu
dUJ1dHRvbkF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnVJdGVtKCkpCi0gICAg
ICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51SXRlbUF0dHJzOwotICAgIAotICAgIE5TQXJyYXkg
KmFkZGl0aW9uYWxBdHRyaWJ1dGVzID0gW3NlbGYgYWRkaXRpb25hbEFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVOYW1lc107Ci0gICAgaWYgKFthZGRpdGlvbmFsQXR0cmlidXRlcyBjb3VudF0pCi0gICAg
ICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBbb2JqZWN0QXR0cmlidXRlcyBhcnJheUJ5QWRkaW5nT2Jq
ZWN0c0Zyb21BcnJheTphZGRpdGlvbmFsQXR0cmlidXRlc107Ci0gICAgCi0gICAgcmV0dXJuIG9i
amVjdEF0dHJpYnV0ZXM7Ci19Ci0KLS0gKFZpc2libGVQb3NpdGlvblJhbmdlKXZpc2libGVQb3Np
dGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOihpZCl0ZXh0TWFya2VyUmFuZ2UKLXsKLSAgICBp
ZiAoIXRleHRNYXJrZXJSYW5nZSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvblJhbmdl
KCk7Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBtX29iamVjdC0+YXhPYmplY3RDYWNoZSgp
OwotICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb25Gb3JTdGFy
dE9mVGV4dE1hcmtlclJhbmdlKGNhY2hlLCB0ZXh0TWFya2VyUmFuZ2UpLCB2aXNpYmxlUG9zaXRp
b25Gb3JFbmRPZlRleHRNYXJrZXJSYW5nZShjYWNoZSwgdGV4dE1hcmtlclJhbmdlKSk7Ci19Ci0K
LS0gKE5TQXJyYXkqKXJlbmRlcldpZGdldENoaWxkcmVuCi17Ci0gICAgV2lkZ2V0KiB3aWRnZXQg
PSBtX29iamVjdC0+d2lkZ2V0KCk7Ci0gICAgaWYgKCF3aWRnZXQpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIFsod2lkZ2V0LT5wbGF0Zm9ybVdpZGdldCgpKSBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6IE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKLX0KLQot
LSAoaWQpcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVudE9iamVjdAotewotICAgIGlmICghbV9vYmpl
Y3QpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9vYmplY3QtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBp
ZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBmcmFtZS0+
bG9hZGVyKCktPmNsaWVudCgpLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCk7Ci19Ci0KLXN0
YXRpYyB2b2lkIGNvbnZlcnRUb1ZlY3RvcihOU0FycmF5KiBhcnJheSwgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiB2ZWN0b3IpCi17Ci0gICAgdW5zaWdu
ZWQgbGVuZ3RoID0gW2FycmF5IGNvdW50XTsKLSAgICB2ZWN0b3IucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShsZW5ndGgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBbW2FycmF5IG9iamVjdEF0SW5k
ZXg6aV0gYWNjZXNzaWJpbGl0eU9iamVjdF07Ci0gICAgICAgIGlmIChvYmopCi0gICAgICAgICAg
ICB2ZWN0b3IuYXBwZW5kKG9iaik7Ci0gICAgfQotfQotCi1zdGF0aWMgTlNNdXRhYmxlQXJyYXkq
IGNvbnZlcnRUb05TQXJyYXkoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiB2ZWN0b3IpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdmVjdG9y
LnNpemUoKTsKLSAgICBOU011dGFibGVBcnJheSogYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJy
YXlXaXRoQ2FwYWNpdHk6IGxlbmd0aF07Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFw
cGVyID0gdmVjdG9yW2ldLT53cmFwcGVyKCk7Ci0gICAgICAgIEFTU0VSVCh3cmFwcGVyKTsKLSAg
ICAgICAgaWYgKHdyYXBwZXIpIHsKLSAgICAgICAgICAgIC8vIHdlIHdhbnQgdG8gcmV0dXJuIHRo
ZSBhdHRhY2htZW50IHZpZXcgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUg
YXR0YWNobWVudC4KLSAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgZ2V0IHBhbGluZHJvbWUg
ZXJyb3JzIGluIHRoZSBBWCBoaWVyYXJjaHkKLSAgICAgICAgICAgIGlmICh2ZWN0b3JbaV0tPmlz
QXR0YWNobWVudCgpICYmIFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSkKLSAgICAgICAgICAgICAg
ICBbYXJyYXkgYWRkT2JqZWN0Olt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XV07Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDp3cmFwcGVyXTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KLS0gKGlkKXRleHRNYXJrZXJSYW5n
ZUZvclNlbGVjdGlvbgotewotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gbV9vYmpl
Y3QtPnNlbGVjdGlvbigpOwotICAgIGlmIChzZWxlY3Rpb24uaXNOb25lKCkpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9z
aXRpb25zOnNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSBlbmRQb3NpdGlvbjpzZWxlY3Rpb24udmlz
aWJsZUVuZCgpXTsKLX0KLQotLSAoTlNWYWx1ZSAqKXBvc2l0aW9uCi17Ci0gICAgSW50UmVjdCBy
ZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX29iamVjdC0+ZWxlbWVudFJlY3QoKSk7Ci0gICAg
TlNQb2ludCBwb2ludDsKLSAgICAKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fb2JqZWN0
LT5kb2N1bWVudEZyYW1lVmlldygpOwotICAgIAotICAgIC8vIFdlYktpdDEgY29kZSBwYXRoLi4u
IHBsYXRmb3JtV2lkZ2V0KCkgZXhpc3RzLgotICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3
LT5wbGF0Zm9ybVdpZGdldCgpKSB7Ci0gICAgICAgIAotICAgICAgICAvLyBUaGUgQ29jb2EgYWNj
ZXNzaWJpbGl0eSBBUEkgd2FudHMgdGhlIGxvd2VyLWxlZnQgY29ybmVyLgotICAgICAgICBwb2lu
dCA9IE5TTWFrZVBvaW50KHJlY3QueCgpLCByZWN0Lm1heFkoKSk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoZnJhbWVWaWV3KSB7Ci0gICAgICAgICAgICBOU1ZpZXcqIHZpZXcgPSBmcmFtZVZpZXct
PmRvY3VtZW50VmlldygpOwotICAgICAgICAgICAgcG9pbnQgPSBbW3ZpZXcgd2luZG93XSBjb252
ZXJ0QmFzZVRvU2NyZWVuOlt2aWV3IGNvbnZlcnRQb2ludDogcG9pbnQgdG9WaWV3Om5pbF1dOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgCi0gICAgICAgIC8vIEZpbmQgdGhlIGFw
cHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBjb252ZXJ0IHRoZSBjb250ZW50cyB0byB0
aGUgd2luZG93LgotICAgICAgICBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gMDsKLSAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gMDsKLSAgICAgICAgZm9yIChwYXJlbnQgPSBt
X29iamVjdC0+cGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRP
YmplY3QoKSkgewotICAgICAgICAgICAgaWYgKHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5U2Nyb2xs
VmlldygpKSB7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsVmlldyA9IHRvQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcocGFyZW50KS0+c2Nyb2xsVmlldygpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoc2Nyb2xsVmll
dykKLSAgICAgICAgICAgIHJlY3QgPSBzY3JvbGxWaWV3LT5jb250ZW50c1RvUm9vdFZpZXcocmVj
dCk7Ci0gICAgICAgIAotICAgICAgICBQYWdlKiBwYWdlID0gbV9vYmplY3QtPnBhZ2UoKTsKLSAg
ICAgICAgCi0gICAgICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgY2hyb21lIGNsaWVudCAobGlr
ZSBTVkcpIHRoZW4gd2Ugc2hvdWxkIHVzZSB0aGUgcGFnZQotICAgICAgICAvLyBvZiB0aGUgc2Ny
b2xsIHZpZXcgcGFyZW50IHRvIGhlbHAgdXMgZ2V0IHRvIHRoZSBzY3JlZW4gcmVjdC4KLSAgICAg
ICAgaWYgKHBhcmVudCAmJiBwYWdlICYmIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+aXNFbXB0
eUNocm9tZUNsaWVudCgpKQotICAgICAgICAgICAgcGFnZSA9IHBhcmVudC0+cGFnZSgpOwotICAg
ICAgICAKLSAgICAgICAgaWYgKHBhZ2UpCi0gICAgICAgICAgICBwb2ludCA9IHBhZ2UtPmNocm9t
ZSgpLT5yb290Vmlld1RvU2NyZWVuKHJlY3QpLmxvY2F0aW9uKCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHBvaW50ID0gcmVjdC5sb2NhdGlvbigpOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6cG9pbnRdOwotfQotCi10eXBlZGVmIEhhc2hNYXA8
aW50LCBOU1N0cmluZyo+IEFjY2Vzc2liaWxpdHlSb2xlTWFwOwotCi1zdGF0aWMgY29uc3QgQWNj
ZXNzaWJpbGl0eVJvbGVNYXAmIGNyZWF0ZUFjY2Vzc2liaWxpdHlSb2xlTWFwKCkKLXsKLSAgICBz
dHJ1Y3QgUm9sZUVudHJ5IHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWU7Ci0gICAg
ICAgIE5TU3RyaW5nKiBzdHJpbmc7Ci0gICAgfTsKLSAgICAKLSAgICBzdGF0aWMgY29uc3QgUm9s
ZUVudHJ5IHJvbGVzW10gPSB7Ci0gICAgICAgIHsgVW5rbm93blJvbGUsIE5TQWNjZXNzaWJpbGl0
eVVua25vd25Sb2xlIH0sCi0gICAgICAgIHsgQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QnV0
dG9uUm9sZSB9LAotICAgICAgICB7IFJhZGlvQnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UmFk
aW9CdXR0b25Sb2xlIH0sCi0gICAgICAgIHsgQ2hlY2tCb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlD
aGVja0JveFJvbGUgfSwKLSAgICAgICAgeyBTbGlkZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlTbGlk
ZXJSb2xlIH0sCi0gICAgICAgIHsgVGFiR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBUZXh0RmllbGRSb2xlLCBOU0FjY2Vzc2liaWxpdHlUZXh0Rmll
bGRSb2xlIH0sCi0gICAgICAgIHsgU3RhdGljVGV4dFJvbGUsIE5TQWNjZXNzaWJpbGl0eVN0YXRp
Y1RleHRSb2xlIH0sCi0gICAgICAgIHsgVGV4dEFyZWFSb2xlLCBOU0FjY2Vzc2liaWxpdHlUZXh0
QXJlYVJvbGUgfSwKLSAgICAgICAgeyBTY3JvbGxBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U2Ny
b2xsQXJlYVJvbGUgfSwKLSAgICAgICAgeyBQb3BVcEJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0
eVBvcFVwQnV0dG9uUm9sZSB9LAotICAgICAgICB7IE1lbnVCdXR0b25Sb2xlLCBOU0FjY2Vzc2li
aWxpdHlNZW51QnV0dG9uUm9sZSB9LAotICAgICAgICB7IFRhYmxlUm9sZSwgTlNBY2Nlc3NpYmls
aXR5VGFibGVSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxp
dHlBcHBsaWNhdGlvblJvbGUgfSwKLSAgICAgICAgeyBHcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFJhZGlvR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlS
YWRpb0dyb3VwUm9sZSB9LAotICAgICAgICB7IExpc3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0
Um9sZSB9LAotICAgICAgICB7IERpcmVjdG9yeVJvbGUsIE5TQWNjZXNzaWJpbGl0eUxpc3RSb2xl
IH0sCi0gICAgICAgIHsgU2Nyb2xsQmFyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U2Nyb2xsQmFyUm9s
ZSB9LAotICAgICAgICB7IFZhbHVlSW5kaWNhdG9yUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VmFsdWVJ
bmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgSW1hZ2VSb2xlLCBOU0FjY2Vzc2liaWxpdHlJbWFn
ZVJvbGUgfSwKLSAgICAgICAgeyBNZW51QmFyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudUJhclJv
bGUgfSwKLSAgICAgICAgeyBNZW51Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudVJvbGUgfSwKLSAg
ICAgICAgeyBNZW51SXRlbVJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVJdGVtUm9sZSB9LAotICAg
ICAgICB7IENvbHVtblJvbGUsIE5TQWNjZXNzaWJpbGl0eUNvbHVtblJvbGUgfSwKLSAgICAgICAg
eyBSb3dSb2xlLCBOU0FjY2Vzc2liaWxpdHlSb3dSb2xlIH0sCi0gICAgICAgIHsgVG9vbGJhclJv
bGUsIE5TQWNjZXNzaWJpbGl0eVRvb2xiYXJSb2xlIH0sCi0gICAgICAgIHsgQnVzeUluZGljYXRv
clJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1c3lJbmRpY2F0b3JSb2xlIH0sCi0gICAgICAgIHsgUHJv
Z3Jlc3NJbmRpY2F0b3JSb2xlLCBOU0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvclJvbGUg
fSwKLSAgICAgICAgeyBXaW5kb3dSb2xlLCBOU0FjY2Vzc2liaWxpdHlXaW5kb3dSb2xlIH0sCi0g
ICAgICAgIHsgRHJhd2VyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5RHJhd2VyUm9sZSB9LAotICAgICAg
ICB7IFN5c3RlbVdpZGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlTeXN0ZW1XaWRlUm9sZSB9LAotICAg
ICAgICB7IE91dGxpbmVSb2xlLCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9sZSB9LAotICAgICAg
ICB7IEluY3JlbWVudG9yUm9sZSwgTlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50b3JSb2xlIH0sCi0g
ICAgICAgIHsgQnJvd3NlclJvbGUsIE5TQWNjZXNzaWJpbGl0eUJyb3dzZXJSb2xlIH0sCi0gICAg
ICAgIHsgQ29tYm9Cb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlDb21ib0JveFJvbGUgfSwKLSAgICAg
ICAgeyBTcGxpdEdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3BsaXRHcm91cFJvbGUgfSwKLSAg
ICAgICAgeyBTcGxpdHRlclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0dGVyUm9sZSB9LAotICAg
ICAgICB7IENvbG9yV2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNvbG9yV2VsbFJvbGUgfSwKLSAg
ICAgICAgeyBHcm93QXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3dBcmVhUm9sZSB9LAotICAg
ICAgICB7IFNoZWV0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5U2hlZXRSb2xlIH0sCi0gICAgICAgIHsg
SGVscFRhZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUhlbHBUYWdSb2xlIH0sCi0gICAgICAgIHsgTWF0
dGVSb2xlLCBOU0FjY2Vzc2liaWxpdHlNYXR0ZVJvbGUgfSwKLSAgICAgICAgeyBSdWxlclJvbGUs
IE5TQWNjZXNzaWJpbGl0eVJ1bGVyUm9sZSB9LAotICAgICAgICB7IFJ1bGVyTWFya2VyUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5UnVsZXJNYXJrZXJSb2xlIH0sCi0gICAgICAgIHsgTGlua1JvbGUsIE5T
QWNjZXNzaWJpbGl0eUxpbmtSb2xlIH0sCi0gICAgICAgIHsgRGlzY2xvc3VyZVRyaWFuZ2xlUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZVRyaWFuZ2xlUm9sZSB9LAotICAgICAgICB7IEdy
aWRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcmlkUm9sZSB9LAotICAgICAgICB7IFdlYkNvcmVMaW5r
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlua1JvbGUgfSwKLSAgICAgICAgeyBJbWFnZU1hcExpbmtS
b2xlLCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAotICAgICAgICB7IEltYWdlTWFwUm9sZSwg
QCJBWEltYWdlTWFwIiB9LAotICAgICAgICB7IExpc3RNYXJrZXJSb2xlLCBAIkFYTGlzdE1hcmtl
ciIgfSwKLSAgICAgICAgeyBXZWJBcmVhUm9sZSwgQCJBWFdlYkFyZWEiIH0sCi0gICAgICAgIHsg
U2VhbWxlc3NXZWJBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgSGVhZGluZ1JvbGUsIEAiQVhIZWFkaW5nIiB9LAotICAgICAgICB7IExpc3RCb3hSb2xlLCBO
U0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IExpc3RCb3hPcHRpb25Sb2xlLCBO
U0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotICAgICAgICB7IENlbGxSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlDZWxsUm9sZSB9LAotICAgICAgICB7IFRhYmxlSGVhZGVyQ29udGFpbmVyUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgUm93SGVhZGVyUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGVmaW5pdGlvblJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERlc2NyaXB0aW9uTGlzdERldGFp
bFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERlc2NyaXB0aW9u
TGlzdFRlcm1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBTbGlk
ZXJUaHVtYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5kaWNhdG9yUm9sZSB9LAotICAgICAg
ICB7IExhbmRtYXJrQXBwbGljYXRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwK
LSAgICAgICAgeyBMYW5kbWFya0Jhbm5lclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9
LAotICAgICAgICB7IExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAotICAgICAgICB7IExhbmRtYXJrQ29udGVudEluZm9Sb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya01haW5Sb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya05hdmlnYXRpb25Sb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya1NlYXJjaFJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uQWxlcnRSb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkFsZXJ0
RGlhbG9nUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGlj
YXRpb25EaWFsb2dSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBB
cHBsaWNhdGlvbkxvZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7
IEFwcGxpY2F0aW9uTWFycXVlZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAg
ICAgICB7IEFwcGxpY2F0aW9uU3RhdHVzUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgQXBwbGljYXRpb25UaW1lclJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IERvY3VtZW50Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgRG9jdW1lbnRBcnRpY2xlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgRG9jdW1lbnRNYXRoUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgRG9jdW1lbnROb3RlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgRG9jdW1lbnRSZWdpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJv
bGUgfSwKLSAgICAgICAgeyBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGUsIE5TQWNjZXNzaWJpbGl0
eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRhYlJvbGUsIE5TQWNjZXNzaWJpbGl0eVJhZGlvQnV0
dG9uUm9sZSB9LAotICAgICAgICB7IFRhYkxpc3RSb2xlLCBOU0FjY2Vzc2liaWxpdHlUYWJHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBUYWJQYW5lbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAotICAgICAgICB7IFRyZWVSb2xlLCBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm9sZSB9LAot
ICAgICAgICB7IFRyZWVJdGVtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAotICAgICAg
ICB7IExpc3RJdGVtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsg
UGFyYWdyYXBoUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFi
ZWxSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEaXZSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBGb3JtUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU3BpbkJ1dHRvblJvbGUsIE5TQWNjZXNzaWJp
bGl0eUluY3JlbWVudG9yUm9sZSB9LAotICAgICAgICB7IEZvb3RlclJvbGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFRvZ2dsZUJ1dHRvblJvbGUsIE5TQWNjZXNzaWJp
bGl0eUJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBDYW52YXNSb2xlLCBOU0FjY2Vzc2liaWxpdHlJ
bWFnZVJvbGUgfSwKLSAgICAgICAgeyBTVkdSb290Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgTGVnZW5kUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgTWF0aEVsZW1lbnRSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfQot
ICAgIH07Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVNYXAgPSAqbmV3IEFjY2Vzc2li
aWxpdHlSb2xlTWFwOwotICAgIAotICAgIGNvbnN0IHVuc2lnbmVkIG51bVJvbGVzID0gc2l6ZW9m
KHJvbGVzKSAvIHNpemVvZihyb2xlc1swXSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG51bVJvbGVzOyArK2kpCi0gICAgICAgIHJvbGVNYXAuc2V0KHJvbGVzW2ldLnZhbHVlLCByb2xl
c1tpXS5zdHJpbmcpOwotICAgIHJldHVybiByb2xlTWFwOwotfQotCi1zdGF0aWMgTlNTdHJpbmcq
IHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjZXNzaWJpbGl0eVJvbGUgdmFsdWUpCi17Ci0gICAgQVNT
RVJUKHZhbHVlKTsKLSAgICBzdGF0aWMgY29uc3QgQWNjZXNzaWJpbGl0eVJvbGVNYXAmIHJvbGVN
YXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCgpOwotICAgIHJldHVybiByb2xlTWFwLmdl
dCh2YWx1ZSk7Ci19Ci0KLS0gKE5TU3RyaW5nKilyb2xlCi17Ci0gICAgaWYgKG1fb2JqZWN0LT5p
c0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdOwot
ICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBtX29iamVjdC0+cm9sZVZhbHVlKCk7Ci0gICAg
aWYgKHJvbGUgPT0gQ2FudmFzUm9sZSAmJiBtX29iamVjdC0+Y2FudmFzSGFzRmFsbGJhY2tDb250
ZW50KCkpCi0gICAgICAgIHJvbGUgPSBHcm91cFJvbGU7Ci0gICAgTlNTdHJpbmcqIHN0cmluZyA9
IHJvbGVWYWx1ZVRvTlNTdHJpbmcocm9sZSk7Ci0gICAgaWYgKHN0cmluZyAhPSBuaWwpCi0gICAg
ICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVua25vd25Sb2xl
OwotfQotCi0tIChOU1N0cmluZyopc3Vicm9sZQotewotICAgIGlmIChtX29iamVjdC0+aXNQYXNz
d29yZEZpZWxkKCkpCi0gICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlTZWN1cmVUZXh0Rmll
bGRTdWJyb2xlOwotICAgIGlmIChtX29iamVjdC0+aXNTZWFyY2hGaWVsZCgpKQotICAgICAgICBy
ZXR1cm4gTlNBY2Nlc3NpYmlsaXR5U2VhcmNoRmllbGRTdWJyb2xlOwotICAgIAotICAgIGlmICht
X29iamVjdC0+aXNBdHRhY2htZW50KCkpIHsKLSAgICAgICAgTlNWaWV3KiBhdHRhY2hWaWV3ID0g
W3NlbGYgYXR0YWNobWVudFZpZXddOwotICAgICAgICBpZiAoW1thdHRhY2hWaWV3IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U3Vicm9s
ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHJldHVybiBbYXR0YWNoVmlldyBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV07Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1NwaW5CdXR0b25QYXJ0KCkp
IHsKLSAgICAgICAgaWYgKHRvQWNjZXNzaWJpbGl0eVNwaW5CdXR0b25QYXJ0KG1fb2JqZWN0KS0+
aXNJbmNyZW1lbnRvcigpKQotICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUluY3Jl
bWVudEFycm93U3Vicm9sZTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxp
dHlEZWNyZW1lbnRBcnJvd1N1YnJvbGU7Ci0gICAgfQotICAgIAotICAgIGlmIChtX29iamVjdC0+
aXNGaWxlVXBsb2FkQnV0dG9uKCkpCi0gICAgICAgIHJldHVybiBAIkFYRmlsZVVwbG9hZEJ1dHRv
biI7Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCi0gICAgICAgIHJldHVy
biBOU0FjY2Vzc2liaWxpdHlPdXRsaW5lUm93U3Vicm9sZTsKLSAgICAKLSAgICBpZiAobV9vYmpl
Y3QtPmlzTGlzdCgpKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlMaXN0KiBsaXN0T2JqZWN0ID0g
c3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUxpc3QqPihtX29iamVjdCk7Ci0gICAgICAgIGlmIChs
aXN0T2JqZWN0LT5pc1Vub3JkZXJlZExpc3QoKSB8fCBsaXN0T2JqZWN0LT5pc09yZGVyZWRMaXN0
KCkpCi0gICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Q29udGVudExpc3RTdWJyb2xl
OwotICAgICAgICBpZiAobGlzdE9iamVjdC0+aXNEZXNjcmlwdGlvbkxpc3QoKSkKLSAgICAgICAg
ICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkxpc3RTdWJyb2xlOwotICAgIH0K
LSAgICAKLSAgICAvLyBBUklBIGNvbnRlbnQgc3Vicm9sZXMuCi0gICAgc3dpdGNoIChtX29iamVj
dC0+cm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBMYW5kbWFya0FwcGxpY2F0aW9uUm9sZToK
LSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtBcHBsaWNhdGlvbiI7Ci0gICAgICAgIGNh
c2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0Jh
bm5lciI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZToKLSAgICAgICAg
ICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb21wbGVtZW50YXJ5IjsKLSAgICAgICAgICAgIC8vIEZv
b3RlciByb2xlcyBzaG91bGQgYXBwZWFyIGFzIGNvbnRlbnQgaW5mbyB0eXBlcy4KLSAgICAgICAg
Y2FzZSBGb290ZXJSb2xlOgotICAgICAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgot
ICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0NvbnRlbnRJbmZvIjsKLSAgICAgICAgY2Fz
ZSBMYW5kbWFya01haW5Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya01haW4i
OwotICAgICAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgICAgICAgICByZXR1
cm4gQCJBWExhbmRtYXJrTmF2aWdhdGlvbiI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hS
b2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya1NlYXJjaCI7Ci0gICAgICAgIGNh
c2UgQXBwbGljYXRpb25BbGVydFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0
aW9uQWxlcnQiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgotICAg
ICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nIjsKLSAgICAgICAgY2Fz
ZSBBcHBsaWNhdGlvbkRpYWxvZ1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0
aW9uRGlhbG9nIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkxvZ1JvbGU6Ci0gICAgICAgICAg
ICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uTG9nIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1h
cnF1ZWVSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbk1hcnF1ZWUiOwot
ICAgICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKLSAgICAgICAgICAgIHJldHVybiBA
IkFYQXBwbGljYXRpb25TdGF0dXMiOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uVGltZXJSb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvblRpbWVyIjsKLSAgICAgICAgY2Fz
ZSBEb2N1bWVudFJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50IjsKLSAgICAg
ICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEb2N1
bWVudEFydGljbGUiOwotICAgICAgICBjYXNlIERvY3VtZW50TWF0aFJvbGU6Ci0gICAgICAgICAg
ICByZXR1cm4gQCJBWERvY3VtZW50TWF0aCI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnROb3RlUm9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnROb3RlIjsKLSAgICAgICAgY2FzZSBE
b2N1bWVudFJlZ2lvblJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50UmVnaW9u
IjsKLSAgICAgICAgY2FzZSBVc2VySW50ZXJmYWNlVG9vbHRpcFJvbGU6Ci0gICAgICAgICAgICBy
ZXR1cm4gQCJBWFVzZXJJbnRlcmZhY2VUb29sdGlwIjsKLSAgICAgICAgY2FzZSBUYWJQYW5lbFJv
bGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWFRhYlBhbmVsIjsKLSAgICAgICAgY2FzZSBEZWZp
bml0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRGVmaW5pdGlvbiI7Ci0gICAgICAg
IGNhc2UgRGVzY3JpcHRpb25MaXN0VGVybVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWFRl
cm0iOwotICAgICAgICBjYXNlIERlc2NyaXB0aW9uTGlzdERldGFpbFJvbGU6Ci0gICAgICAgICAg
ICByZXR1cm4gQCJBWERlc2NyaXB0aW9uIjsKLSAgICAgICAgICAgIC8vIERlZmF1bHQgZG9lc24n
dCByZXR1cm4gYW55dGhpbmcsIHNvIHJvbGVzIGRlZmluZWQgYmVsb3cgY2FuIGJlIGNob3Nlbi4K
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAgICBp
ZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09IE1hdGhFbGVtZW50Um9sZSkgewotICAgICAgICBp
ZiAobV9vYmplY3QtPmlzTWF0aEZyYWN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1h
dGhGcmFjdGlvbiI7Ci0gICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoRmVuY2VkKCkpCi0gICAg
ICAgICAgICByZXR1cm4gQCJBWE1hdGhGZW5jZWQiOwotICAgICAgICBpZiAobV9vYmplY3QtPmlz
TWF0aFN1YnNjcmlwdFN1cGVyc2NyaXB0KCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhT
dWJzY3JpcHRTdXBlcnNjcmlwdCI7Ci0gICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoUm93KCkp
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhSb3ciOwotICAgICAgICBpZiAobV9vYmplY3Qt
PmlzTWF0aFVuZGVyT3ZlcigpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoVW5kZXJPdmVy
IjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhTcXVhcmVSb290KCkpCi0gICAgICAgICAg
ICByZXR1cm4gQCJBWE1hdGhTcXVhcmVSb290IjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01h
dGhSb290KCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhSb290IjsKLSAgICAgICAgaWYg
KG1fb2JqZWN0LT5pc01hdGhUZXh0KCkpCi0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhUZXh0
IjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhOdW1iZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiBAIkFYTWF0aE51bWJlciI7Ci0gICAgICAgIGlmIChtX29iamVjdC0+aXNNYXRoSWRlbnRp
ZmllcigpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoSWRlbnRpZmllciI7Ci0gICAgICAg
IGlmIChtX29iamVjdC0+aXNNYXRoVGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiBAIkFYTWF0
aFRhYmxlIjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhUYWJsZVJvdygpKQotICAgICAg
ICAgICAgcmV0dXJuIEAiQVhNYXRoVGFibGVSb3ciOwotICAgICAgICBpZiAobV9vYmplY3QtPmlz
TWF0aFRhYmxlQ2VsbCgpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoVGFibGVDZWxsIjsK
LSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc01hdGhGZW5jZU9wZXJhdG9yKCkpCi0gICAgICAgICAg
ICByZXR1cm4gQCJBWE1hdGhGZW5jZU9wZXJhdG9yIjsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5p
c01hdGhTZXBhcmF0b3JPcGVyYXRvcigpKQotICAgICAgICAgICAgcmV0dXJuIEAiQVhNYXRoU2Vw
YXJhdG9yT3BlcmF0b3IiOwotICAgICAgICBpZiAobV9vYmplY3QtPmlzTWF0aE9wZXJhdG9yKCkp
Ci0gICAgICAgICAgICByZXR1cm4gQCJBWE1hdGhPcGVyYXRvciI7Ci0gICAgfQotICAgIAotICAg
IGlmIChtX29iamVjdC0+aXNNZWRpYVRpbWVsaW5lKCkpCi0gICAgICAgIHJldHVybiBOU0FjY2Vz
c2liaWxpdHlUaW1lbGluZVN1YnJvbGU7Ci0gICAgCi0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAo
TlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgotewotICAgIGlmICghbV9vYmplY3QpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgLy8gYXR0YWNobWVudHMgaGF2ZSB0aGUgQVhJbWFnZSBy
b2xlLCBidXQgYSBkaWZmZXJlbnQgc3Vicm9sZQotICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2ht
ZW50KCkpCi0gICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVd
OwotICAgIAotICAgIE5TU3RyaW5nKiBheFJvbGUgPSBbc2VsZiByb2xlXTsKLSAgICAKLSAgICBp
ZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlXSkgewot
ICAgICAgICBzd2l0Y2ggKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSkgewotICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0
aW9uKE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSwgW3NlbGYgc3Vicm9sZV0pOwotICAgICAgICAg
ICAgY2FzZSBMYW5kbWFya0FwcGxpY2F0aW9uUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0FwcGxpY2F0aW9uIik7Ci0gICAg
ICAgICAgICBjYXNlIExhbmRtYXJrQmFubmVyUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0Jhbm5lciIpOwotICAgICAgICAg
ICAgY2FzZSBMYW5kbWFya0NvbXBsZW1lbnRhcnlSb2xlOgotICAgICAgICAgICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQ29tcGxlbWVudGFyeSIpOwot
ICAgICAgICAgICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya0NvbnRlbnRJbmZv
Iik7Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrTWFpblJvbGU6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtNYWluIik7Ci0gICAg
ICAgICAgICBjYXNlIExhbmRtYXJrTmF2aWdhdGlvblJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtOYXZpZ2F0aW9uIik7Ci0g
ICAgICAgICAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAgICAgICAgICAgICAgICByZXR1
cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya1NlYXJjaCIpOwotICAgICAg
ICAgICAgY2FzZSBBcHBsaWNhdGlvbkFsZXJ0Um9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbkFsZXJ0Iik7Ci0gICAgICAg
ICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnREaWFsb2dSb2xlOgotICAgICAgICAgICAgICAgIHJl
dHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uQWxlcnREaWFsb2ci
KTsKLSAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uRGlhbG9n
Iik7Ci0gICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTG9nUm9sZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvbkxvZyIpOwot
ICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlOgotICAgICAgICAgICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uTWFycXVlZSIp
OwotICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25TdGF0dXMi
KTsKLSAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25UaW1lclJvbGU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25UaW1lciIp
OwotICAgICAgICAgICAgY2FzZSBEb2N1bWVudFJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9jdW1lbnQiKTsKLSAgICAgICAgICAgIGNh
c2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29u
dGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudEFydGljbGUiKTsKLSAgICAgICAgICAgIGNhc2Ug
RG9jdW1lbnRNYXRoUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdy
b3VwVGV4dChAIkFSSUFEb2N1bWVudE1hdGgiKTsKLSAgICAgICAgICAgIGNhc2UgRG9jdW1lbnRO
b3RlUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChA
IkFSSUFEb2N1bWVudE5vdGUiKTsKLSAgICAgICAgICAgIGNhc2UgRG9jdW1lbnRSZWdpb25Sb2xl
OgotICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQURv
Y3VtZW50UmVnaW9uIik7Ci0gICAgICAgICAgICBjYXNlIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9s
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFV
c2VySW50ZXJmYWNlVG9vbHRpcCIpOwotICAgICAgICAgICAgY2FzZSBUYWJQYW5lbFJvbGU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBVGFiUGFu
ZWwiKTsKLSAgICAgICAgICAgIGNhc2UgRGVmaW5pdGlvblJvbGU6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIEFYRGVmaW5pdGlvblRleHQoKTsKLSAgICAgICAgICAgIGNhc2UgRGVzY3JpcHRpb25M
aXN0VGVybVJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFYRGVzY3JpcHRpb25MaXN0VGVy
bVRleHQoKTsKLSAgICAgICAgICAgIGNhc2UgRGVzY3JpcHRpb25MaXN0RGV0YWlsUm9sZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQVhEZXNjcmlwdGlvbkxpc3REZXRhaWxUZXh0KCk7Ci0gICAg
ICAgICAgICBjYXNlIEZvb3RlclJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFYRm9vdGVy
Um9sZURlc2NyaXB0aW9uVGV4dCgpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChb
YXhSb2xlIGlzRXF1YWxUb1N0cmluZzpAIkFYV2ViQXJlYSJdKQotICAgICAgICByZXR1cm4gQVhX
ZWJBcmVhVGV4dCgpOwotICAgIAotICAgIGlmIChbYXhSb2xlIGlzRXF1YWxUb1N0cmluZzpAIkFY
TGluayJdKQotICAgICAgICByZXR1cm4gQVhMaW5rVGV4dCgpOwotICAgIAotICAgIGlmIChbYXhS
b2xlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGlzdE1hcmtlciJdKQotICAgICAgICByZXR1cm4gQVhM
aXN0TWFya2VyVGV4dCgpOwotICAgIAotICAgIGlmIChbYXhSb2xlIGlzRXF1YWxUb1N0cmluZzpA
IkFYSW1hZ2VNYXAiXSkKLSAgICAgICAgcmV0dXJuIEFYSW1hZ2VNYXBUZXh0KCk7Ci0gICAgCi0g
ICAgaWYgKFtheFJvbGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhIZWFkaW5nIl0pCi0gICAgICAgIHJl
dHVybiBBWEhlYWRpbmdUZXh0KCk7Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0ZpbGVVcGxv
YWRCdXR0b24oKSkKLSAgICAgICAgcmV0dXJuIEFYRmlsZVVwbG9hZEJ1dHRvblRleHQoKTsKLSAg
ICAKLSAgICAvLyBBcHBLaXQgYWxzbyByZXR1cm5zIEFYVGFiIGZvciB0aGUgcm9sZSBkZXNjcmlw
dGlvbiBmb3IgYSB0YWIgaXRlbS4KLSAgICBpZiAobV9vYmplY3QtPmlzVGFiSXRlbSgpKQotICAg
ICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKEAiQVhUYWIiLCBuaWwp
OwotICAgIAotICAgIC8vIFdlIHNob3VsZCB0cnkgdGhlIHN5c3RlbSBkZWZhdWx0IHJvbGUgZGVz
Y3JpcHRpb24gZm9yIGFsbCBvdGhlciByb2xlcy4KLSAgICAvLyBJZiB3ZSBnZXQgdGhlIHNhbWUg
c3RyaW5nIGJhY2ssIHRoZW4gYXMgYSBsYXN0IHJlc29ydCwgcmV0dXJuIHVua25vd24uCi0gICAg
TlNTdHJpbmcqIGRlZmF1bHRSb2xlRGVzY3JpcHRpb24gPSBOU0FjY2Vzc2liaWxpdHlSb2xlRGVz
Y3JpcHRpb24oYXhSb2xlLCBbc2VsZiBzdWJyb2xlXSk7Ci0gICAgCi0gICAgLy8gT24gZWFybGll
ciBNYWMgdmVyc2lvbnMgKExpb24pLCB1c2luZyBhIG5vbi1zdGFuZGFyZCBzdWJyb2xlIHdvdWxk
IHJlc3VsdCBpbiBhIHJvbGUgZGVzY3JpcHRpb24KLSAgICAvLyBiZWluZyByZXR1cm5lZCB0aGF0
IGxvb2tlZCBsaWtlIEFYUm9sZTpBWFN1YnJvbGUuIFRvIG1ha2UgYWxsIHBsYXRmb3JtcyBoYXZl
IHRoZSBzYW1lIHJvbGUgZGVzY3JpcHRpb25zCi0gICAgLy8gd2Ugc2hvdWxkIGZhbGxiYWNrIG9u
IGEgcm9sZSBkZXNjcmlwdGlvbiBpZ25vcmluZyB0aGUgc3Vicm9sZSBpbiB0aGVzZSBjYXNlcy4K
LSAgICBpZiAoW2RlZmF1bHRSb2xlRGVzY3JpcHRpb24gaXNFcXVhbFRvU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUA6JUAiLCBheFJvbGUsIFtzZWxmIHN1YnJvbGVdXV0pCi0g
ICAgICAgIGRlZmF1bHRSb2xlRGVzY3JpcHRpb24gPSBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3Jp
cHRpb24oYXhSb2xlLCBuaWwpOwotICAgIAotICAgIGlmICghW2RlZmF1bHRSb2xlRGVzY3JpcHRp
b24gaXNFcXVhbFRvU3RyaW5nOmF4Um9sZV0pCi0gICAgICAgIHJldHVybiBkZWZhdWx0Um9sZURl
c2NyaXB0aW9uOwotICAgIAotICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRp
b24oTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGUsIG5pbCk7Ci19Ci0KLS0gKGlkKXNjcm9sbFZp
ZXdQYXJlbnQKLXsKLSAgICBpZiAoIW1fb2JqZWN0IHx8ICFtX29iamVjdC0+aXNBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldygpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIC8vIElmIHRo
aXMgc2Nyb2xsIHZpZXcgcHJvdmlkZXMgaXQncyBwYXJlbnQgb2JqZWN0IChiZWNhdXNlIGl0J3Mg
YSBzdWItZnJhbWUpLCB0aGVuCi0gICAgLy8gd2Ugc2hvdWxkIG5vdCBmaW5kIHRoZSByZW1vdGVB
Y2Nlc3NpYmlsaXR5UGFyZW50LgotICAgIGlmIChtX29iamVjdC0+cGFyZW50T2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcqIHNj
cm9sbFZpZXcgPSB0b0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KG1fb2JqZWN0KTsKLSAgICBTY3Jv
bGxWaWV3KiBzY3JvbGwgPSBzY3JvbGxWaWV3LT5zY3JvbGxWaWV3KCk7Ci0gICAgaWYgKCFzY3Jv
bGwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKHNjcm9sbC0+cGxhdGZvcm1X
aWRnZXQoKSkKLSAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2VzdG9y
KHNjcm9sbC0+cGxhdGZvcm1XaWRnZXQoKSk7Ci0gICAgCi0gICAgcmV0dXJuIFtzZWxmIHJlbW90
ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOwotfQotCi0vLyBGSVhNRTogRGlmZmVyZW50IGtp
bmRzIG9mIGVsZW1lbnRzIGFyZSBwdXR0aW5nIHRoZSB0aXRsZSB0YWcgdG8gdXNlIGluIGRpZmZl
cmVudAotLy8gQVggZmllbGRzLiBUaGlzIHNob3VsZCBiZSByZWN0aWZpZWQsIGJ1dCBpbiB0aGUg
aW5pdGlhbCBwYXRjaCBJIHdhbnQgdG8gYWNoaWV2ZQotLy8gcGFyaXR5IHdpdGggZXhpc3Rpbmcg
YmVoYXZpb3IuCi0tIChCT09MKXRpdGxlVGFnU2hvdWxkQmVVc2VkSW5EZXNjcmlwdGlvbkZpZWxk
Ci17Ci0gICAgcmV0dXJuIChtX29iamVjdC0+aXNMaW5rKCkgJiYgIW1fb2JqZWN0LT5pc0ltYWdl
TWFwTGluaygpKSB8fCBtX29iamVjdC0+aXNJbWFnZSgpOwotfQotCi0vLyBUaGlzIHNob3VsZCBi
ZSB0aGUgInZpc2libGUiIHRleHQgdGhhdCdzIGFjdHVhbGx5IG9uIHRoZSBzY3JlZW4gaWYgcG9z
c2libGUuCi0vLyBJZiB0aGVyZSdzIGFsdGVybmF0aXZlIHRleHQsIHRoYXQgY2FuIG92ZXJyaWRl
IHRoZSB0aXRsZS4KLS0gKE5TU3RyaW5nICopYWNjZXNzaWJpbGl0eVRpdGxlCi17Ci0gICAgLy8g
U3RhdGljIHRleHQgb2JqZWN0cyBzaG91bGQgbm90IGhhdmUgYSB0aXRsZS4gSXRzIGNvbnRlbnQg
aXMgY29tbXVuaWNhdGVkIGluIGl0cyBBWFZhbHVlLgotICAgIGlmIChtX29iamVjdC0+cm9sZVZh
bHVlKCkgPT0gU3RhdGljVGV4dFJvbGUpCi0gICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5n
XTsKLSAgICAKLSAgICAvLyBBIGZpbGUgdXBsb2FkIGJ1dHRvbiBwcmVzZW50cyBhIGNoYWxsZW5n
ZSBiZWNhdXNlIGl0IGhhcyBidXR0b24gdGV4dCBhbmQgYSB2YWx1ZSwgYnV0IHRoZQotICAgIC8v
IEFQSSBkb2Vzbid0IHN1cHBvcnQgdGhpcyBwYXJhZGlnbS4KLSAgICAvLyBUaGUgY29tcHJvbWlz
ZSBpcyB0byByZXR1cm4gdGhlIGJ1dHRvbiB0eXBlIGluIHRoZSByb2xlIGRlc2NyaXB0aW9uIGFu
ZCB0aGUgdmFsdWUgb2YgdGhlIGZpbGUgcGF0aCBpbiB0aGUgdGl0bGUKLSAgICBpZiAobV9vYmpl
Y3QtPmlzRmlsZVVwbG9hZEJ1dHRvbigpKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPnN0cmlu
Z1ZhbHVlKCk7Ci0gICAgCi0gICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7
Ci0gICAgbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRleHRPcmRlcik7Ci0gICAgCi0gICAg
dW5zaWduZWQgbGVuZ3RoID0gdGV4dE9yZGVyLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsg
PSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKLSAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eVRleHQm
IHRleHQgPSB0ZXh0T3JkZXJba107Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB3ZSBoYXZlIGFs
dGVybmF0aXZlIHRleHQsIHRoZW4gd2Ugc2hvdWxkIG5vdCBleHBvc2UgYSB0aXRsZS4KLSAgICAg
ICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBBbHRlcm5hdGl2ZVRleHQpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgCi0gICAgICAgIC8vIE9uY2Ugd2UgZW5jb3VudGVyIHZpc2libGUgdGV4
dCwgb3IgdGhlIHRleHQgZnJvbSBvdXIgY2hpbGRyZW4gdGhhdCBzaG91bGQgYmUgdXNlZCBmb3Jl
bW9zdC4KLSAgICAgICAgaWYgKHRleHQudGV4dFNvdXJjZSA9PSBWaXNpYmxlVGV4dCB8fCB0ZXh0
LnRleHRTb3VyY2UgPT0gQ2hpbGRyZW5UZXh0KQotICAgICAgICAgICAgcmV0dXJuIHRleHQudGV4
dDsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoZXJlJ3MgYW4gZWxlbWVudCB0aGF0IGxhYmVs
cyB0aGlzIG9iamVjdCBhbmQgaXQncyBub3QgZXhwb3NlZCwgdGhlbiB3ZSBzaG91bGQgdXNlCi0g
ICAgICAgIC8vIHRoYXQgdGV4dCBhcyBvdXIgdGl0bGUuCi0gICAgICAgIGlmICh0ZXh0LnRleHRT
b3VyY2UgPT0gTGFiZWxCeUVsZW1lbnRUZXh0ICYmICFtX29iamVjdC0+ZXhwb3Nlc1RpdGxlVUlF
bGVtZW50KCkpCi0gICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwotICAgICAgICAKLSAgICAg
ICAgLy8gRklYTUU6IFRoZSB0aXRsZSB0YWcgaXMgdXNlZCBpbiBjZXJ0YWluIGNhc2VzIGZvciB0
aGUgdGl0bGUuIFRoaXMgdXNhZ2Ugc2hvdWxkCi0gICAgICAgIC8vIHByb2JhYmx5IGJlIGluIHRo
ZSBkZXNjcmlwdGlvbiBmaWVsZCBzaW5jZSBpdCdzIG5vdCAidmlzaWJsZSIuCi0gICAgICAgIGlm
ICh0ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVUYWdUZXh0ICYmICFbc2VsZiB0aXRsZVRhZ1Nob3Vs
ZEJlVXNlZEluRGVzY3JpcHRpb25GaWVsZF0pCi0gICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0
OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107Ci19Ci0KLS0gKE5T
U3RyaW5nICopYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uCi17Ci0gICAgLy8gU3RhdGljIHRleHQg
b2JqZWN0cyBzaG91bGQgbm90IGhhdmUgYSBkZXNjcmlwdGlvbi4gSXRzIGNvbnRlbnQgaXMgY29t
bXVuaWNhdGVkIGluIGl0cyBBWFZhbHVlLgotICAgIC8vIE9uZSBleGNlcHRpb24gaXMgdGhlIG1l
ZGlhIGNvbnRyb2wgbGFiZWxzIHRoYXQgaGF2ZSBhIHZhbHVlIGFuZCBhIGRlc2NyaXB0aW9uLiBU
aG9zZSBhcmUgc2V0IHByb2dyYW1hdGljYWxseS4KLSAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1
ZSgpID09IFN0YXRpY1RleHRSb2xlICYmICFtX29iamVjdC0+aXNNZWRpYUNvbnRyb2xMYWJlbCgp
KQotICAgICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107Ci0gICAgCi0gICAgVmVjdG9yPEFj
Y2Vzc2liaWxpdHlUZXh0PiB0ZXh0T3JkZXI7Ci0gICAgbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlU
ZXh0KHRleHRPcmRlcik7Ci0gICAgCi0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dE9yZGVyLnNp
emUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyBrKyspIHsKLSAgICAg
ICAgY29uc3QgQWNjZXNzaWJpbGl0eVRleHQmIHRleHQgPSB0ZXh0T3JkZXJba107Ci0gICAgICAg
IAotICAgICAgICBpZiAodGV4dC50ZXh0U291cmNlID09IEFsdGVybmF0aXZlVGV4dCkKLSAgICAg
ICAgICAgIHJldHVybiB0ZXh0LnRleHQ7Ci0gICAgICAgIAotICAgICAgICBpZiAodGV4dC50ZXh0
U291cmNlID09IFRpdGxlVGFnVGV4dCAmJiBbc2VsZiB0aXRsZVRhZ1Nob3VsZEJlVXNlZEluRGVz
Y3JpcHRpb25GaWVsZF0pCi0gICAgICAgICAgICByZXR1cm4gdGV4dC50ZXh0OwotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ107Ci19Ci0KLS0gKE5TU3RyaW5nICopYWNj
ZXNzaWJpbGl0eUhlbHBUZXh0Ci17Ci0gICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0
T3JkZXI7Ci0gICAgbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRleHRPcmRlcik7Ci0gICAg
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dE9yZGVyLnNpemUoKTsKLSAgICBib29sIGRlc2Ny
aXB0aXZlVGV4dEF2YWlsYWJsZSA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsg
PCBsZW5ndGg7IGsrKykgewotICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5VGV4dCYgdGV4dCA9
IHRleHRPcmRlcltrXTsKLSAgICAgICAgCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0g
SGVscFRleHQgfHwgdGV4dC50ZXh0U291cmNlID09IFN1bW1hcnlUZXh0KQotICAgICAgICAgICAg
cmV0dXJuIHRleHQudGV4dDsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIGFuIGVsZW1lbnQgZG9l
cyBOT1QgaGF2ZSBvdGhlciBkZXNjcmlwdGl2ZSB0ZXh0IHRoZSB0aXRsZSB0YWcgc2hvdWxkIGJl
IHVzZWQgYXMgaXRzIGRlc2NyaXB0aXZlIHRleHQuCi0gICAgICAgIC8vIEJ1dCwgaWYgdGhvc2Ug
QVJFIGF2YWlsYWJsZSwgdGhlbiB0aGUgdGl0bGUgdGFnIHNob3VsZCBiZSB1c2VkIGZvciBoZWxw
IHRleHQgaW5zdGVhZC4KLSAgICAgICAgc3dpdGNoICh0ZXh0LnRleHRTb3VyY2UpIHsKLSAgICAg
ICAgICAgIGNhc2UgQWx0ZXJuYXRpdmVUZXh0OgotICAgICAgICAgICAgY2FzZSBWaXNpYmxlVGV4
dDoKLSAgICAgICAgICAgIGNhc2UgQ2hpbGRyZW5UZXh0OgotICAgICAgICAgICAgY2FzZSBMYWJl
bEJ5RWxlbWVudFRleHQ6Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRpdmVUZXh0QXZhaWxhYmxl
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICh0ZXh0LnRleHRTb3VyY2UgPT0gVGl0bGVU
YWdUZXh0ICYmIGRlc2NyaXB0aXZlVGV4dEF2YWlsYWJsZSkKLSAgICAgICAgICAgIHJldHVybiB0
ZXh0LnRleHQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nXTsKLX0K
LQotLy8gRklYTUU6IHNwbGl0IHVwIHRoaXMgZnVuY3Rpb24gaW4gYSBiZXR0ZXIgd2F5LgotLy8g
c3VnZ2VzdGlvbnM6IFVzZSBhIGhhc2ggdGFibGUgdGhhdCBtYXBzIGF0dHJpYnV0ZSBuYW1lcyB0
byBmdW5jdGlvbiBjYWxscywKLS8vIG9yIG1heWJlIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5jdGlv
bnMKLS0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0
ZU5hbWUKLXsKLSAgICBpZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbc2Vs
ZiByb2xlXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtzZWxmIHN1
YnJvbGVdOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBb
c2VsZiByb2xlRGVzY3JpcHRpb25dOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV0pIHsKLSAgICAgICAg
Ci0gICAgICAgIC8vIFRoaXMgd2lsbCByZXR1cm4gdGhlIHBhcmVudCBvZiB0aGUgQVhXZWJBcmVh
LCBpZiB0aGlzIGlzIGEgd2ViIGFyZWEuCi0gICAgICAgIGlkIHNjcm9sbFZpZXdQYXJlbnQgPSBb
c2VsZiBzY3JvbGxWaWV3UGFyZW50XTsKLSAgICAgICAgaWYgKHNjcm9sbFZpZXdQYXJlbnQpCi0g
ICAgICAgICAgICByZXR1cm4gc2Nyb2xsVmlld1BhcmVudDsKLSAgICAgICAgCi0gICAgICAgIC8v
IFRyZWUgaXRlbSAoY2hhbmdlZCB0byBBWFJvd3MpIGNhbiBvbmx5IHJlcG9ydCB0aGUgdHJlZSAo
QVhPdXRsaW5lKSBhcyBpdHMgcGFyZW50LgotICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZUl0
ZW0oKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmpl
Y3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkg
ewotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZSgpKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcGFyZW50LT53cmFwcGVyKCk7Ci0gICAgICAgICAgICAgICAgcGFyZW50ID0g
cGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmpl
Y3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgICAgICBpZiAoIXBhcmVudCkKLSAgICAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICAvLyBJbiBXZWJLaXQxLCB0aGUg
c2Nyb2xsIHZpZXcgaXMgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSAodGhlIGF0dGFjaG1lbnQgdmll
dyksIHNvIHRoZSBwYXJlbnQKLSAgICAgICAgLy8gc2hvdWxkIGJlIHJlcG9ydGVkIGRpcmVjdGx5
IGFzIHN1Y2guCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgcGFyZW50LT5p
c0F0dGFjaG1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBbcGFyZW50LT53cmFwcGVyKCkgYXR0
YWNobWVudFZpZXddOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigp
OwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0
LT5jaGlsZHJlbigpLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSogY2hpbGRyZW4g
PSBbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl07Ci0gICAgICAgICAgICBpZiAoY2hpbGRyZW4g
IT0gbmlsKQotICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgLy8gVGhlIHRyZWUncyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3Vw
cG9zZWQgdG8gYmUgaXRzIHJvd3MgYW5kIGNvbHVtbnMuCi0gICAgICAgIC8vIFRoZSBBUklBIHNw
ZWMgZG9lc24ndCBoYXZlIGNvbHVtbnMsIHNvIHdlIGp1c3QgbmVlZCByb3dzLgotICAgICAgICBp
ZiAobV9vYmplY3QtPmlzVHJlZSgpKQotICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIEEgdHJlZSBpdGVtIHNob3VsZCBvbmx5IGV4cG9zZSBpdHMgY29udGVu
dCBhcyBpdHMgY2hpbGRyZW4gKG5vdCBpdHMgcm93cykKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5p
c1RyZWVJdGVtKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50Q29weTsKLSAgICAgICAgICAgIG1fb2JqZWN0LT5h
cmlhVHJlZUl0ZW1Db250ZW50KGNvbnRlbnRDb3B5KTsKLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KGNvbnRlbnRDb3B5KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
cmV0dXJuIGNvbnZlcnRUb05TQXJyYXkobV9vYmplY3QtPmNoaWxkcmVuKCkpOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmlz
TGlzdEJveCgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRDaGlsZHJlbkNvcHk7Ci0gICAgICAgICAgICBtX29i
amVjdC0+c2VsZWN0ZWRDaGlsZHJlbihzZWxlY3RlZENoaWxkcmVuQ29weSk7Ci0gICAgICAgICAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheShzZWxlY3RlZENoaWxkcmVuQ29weSk7Ci0gICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxkcmVuQXR0cmli
dXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmlzTGlzdEJveCgpKSB7Ci0gICAgICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdmlzaWJs
ZUNoaWxkcmVuQ29weTsKLSAgICAgICAgICAgIG1fb2JqZWN0LT52aXNpYmxlQ2hpbGRyZW4odmlz
aWJsZUNoaWxkcmVuQ29weSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh2
aXNpYmxlQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChtX29iamVj
dC0+aXNMaXN0KCkpCi0gICAgICAgICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXTsKLSAgICAgICAgCi0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIAotICAgIGlmIChtX29iamVjdC0+
aXNXZWJBcmVhKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYTGlua1VJRWxlbWVudHMiXSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtzOwotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KG1fb2JqZWN0KS0+Z2V0RG9jdW1lbnRM
aW5rcyhsaW5rcyk7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShsaW5rcyk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpA
IkFYTG9hZGVkIl0pCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Om1fb2JqZWN0LT5pc0xvYWRlZCgpXTsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYTGF5b3V0Q291bnQiXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+bGF5b3V0Q291bnQoKV07Ci0gICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TG9hZGluZ1Byb2dy
ZXNzQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aERv
dWJsZTptX29iamVjdC0+ZXN0aW1hdGVkTG9hZGluZ1Byb2dyZXNzKCldOwotICAgIH0KLSAgICAK
LSAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkgewotICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3Rl
cnNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBpbnQgbGVuZ3RoID0gbV9vYmplY3QtPnRleHRM
ZW5ndGgoKTsKLSAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKQotICAgICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25l
ZEludDpsZW5ndGhdOwotICAgICAgICB9Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgICAgIFN0cmluZyBzZWxlY3RlZFRleHQgPSBtX29iamVjdC0+c2VsZWN0ZWRUZXh0KCk7
Ci0gICAgICAgICAgICBpZiAoc2VsZWN0ZWRUZXh0LmlzTnVsbCgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgICAgICAgICByZXR1cm4gKE5TU3RyaW5nKilzZWxlY3RlZFRleHQ7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzog
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAg
ICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+c2VsZWN0ZWRUZXh0UmFuZ2Uo
KTsKLSAgICAgICAgICAgIGlmICh0ZXh0UmFuZ2UuaXNOdWxsKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKDAsIDApXTsKLSAgICAg
ICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZSh0ZXh0UmFu
Z2Uuc3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsKLSAgICAgICAgfQotICAgICAgICAvLyBUT0RP
OiBHZXQgYWN0dWFsIHZpc2libGUgcmFuZ2UuIDxyZGFyOi8vcHJvYmxlbS80NzEyMTAxPgotICAg
ICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIG1fb2Jq
ZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSA/IG5pbCA6IFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBO
U01ha2VSYW5nZSgwLCBtX29iamVjdC0+dGV4dExlbmd0aCgpKV07Ci0gICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUluc2VydGlvblBvaW50
TGluZU51bWJlckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIC8vIGlmIHNlbGVjdGlvbkVuZCA+
IDAsIHRoZW4gdGhlcmUgaXMgc2VsZWN0ZWQgdGV4dCBhbmQgdGhpcyBxdWVzdGlvbiBzaG91bGQg
bm90IGJlIGFuc3dlcmVkCi0gICAgICAgICAgICBpZiAobV9vYmplY3QtPmlzUGFzc3dvcmRGaWVs
ZCgpIHx8IG1fb2JqZWN0LT5zZWxlY3Rpb25FbmQoKSA+IDApCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
Zm9jdXNlZE9iamVjdCA9IG1fb2JqZWN0LT5mb2N1c2VkVUlFbGVtZW50KCk7Ci0gICAgICAgICAg
ICBpZiAoZm9jdXNlZE9iamVjdCAhPSBtX29iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gZm9jdXNlZFBv
c2l0aW9uID0gZm9jdXNlZE9iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoZm9jdXNlZE9i
amVjdC0+c2VsZWN0aW9uU3RhcnQoKSwgdHJ1ZSk7Ci0gICAgICAgICAgICBpbnQgbGluZU51bWJl
ciA9IG1fb2JqZWN0LT5saW5lRm9yUG9zaXRpb24oZm9jdXNlZFBvc2l0aW9uKTsKLSAgICAgICAg
ICAgIGlmIChsaW5lTnVtYmVyIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGlu
ZU51bWJlcl07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXSkgewotICAgICAg
ICBLVVJMIHVybCA9IG1fb2JqZWN0LT51cmwoKTsKLSAgICAgICAgaWYgKHVybC5pc051bGwoKSkK
LSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVybiAoTlNVUkwqKXVybDsKLSAg
ICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1NwaW5CdXR0b24oKSkgewotICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUluY3JlbWVu
dEJ1dHRvbkF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gdG9BY2Nlc3NpYmlsaXR5U3Bp
bkJ1dHRvbihtX29iamVjdCktPmluY3JlbWVudEJ1dHRvbigpLT53cmFwcGVyKCk7Ci0gICAgICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGVjcmVt
ZW50QnV0dG9uQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiB0b0FjY2Vzc2liaWxpdHlT
cGluQnV0dG9uKG1fb2JqZWN0KS0+ZGVjcmVtZW50QnV0dG9uKCktPndyYXBwZXIoKTsKLSAgICB9
Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogQCJBWFZpc2l0
ZWQiXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogbV9vYmplY3Qt
PmlzVmlzaXRlZCgpXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1fb2Jq
ZWN0LT5pc0F0dGFjaG1lbnQoKSkgewotICAgICAgICAgICAgaWYgKFtbW3NlbGYgYXR0YWNobWVu
dFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdKQotICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYg
YXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlUaXRsZUF0dHJpYnV0ZV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBb
c2VsZiBhY2Nlc3NpYmlsaXR5VGl0bGVdOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0
ZV0pIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewotICAgICAgICAg
ICAgaWYgKFtbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1l
c10gY29udGFpbnNPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdKQot
ICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV07Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbl07
Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmlz
QXR0YWNobWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoW1tbc2VsZiBhdHRhY2htZW50Vmlld10g
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpOU0FjY2Vzc2liaWxp
dHlWYWx1ZUF0dHJpYnV0ZV0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2ht
ZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVl
QXR0cmlidXRlXTsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzUmFu
Z2VWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6
bV9vYmplY3QtPnZhbHVlRm9yUmFuZ2UoKV07Ci0gICAgICAgIGlmIChtX29iamVjdC0+cm9sZVZh
bHVlKCkgPT0gU2xpZGVyVGh1bWJSb2xlKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnBhcmVudE9iamVjdCgpLT52YWx1ZUZvclJhbmdlKCld
OwotICAgICAgICBpZiAobV9vYmplY3QtPmlzSGVhZGluZygpKQotICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5oZWFkaW5nTGV2ZWwoKV07Ci0gICAg
ICAgIAotICAgICAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkpIHsKLSAgICAg
ICAgICAgIHN3aXRjaCAobV9vYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkpIHsKLSAgICAg
ICAgICAgICAgICBjYXNlIEJ1dHRvblN0YXRlT2ZmOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF07Ci0gICAgICAgICAgICAgICAgY2FzZSBCdXR0
b25TdGF0ZU9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6MV07Ci0gICAgICAgICAgICAgICAgY2FzZSBCdXR0b25TdGF0ZU1peGVkOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml07Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIHJhZGlvIGdyb3VwcyByZXR1
cm4gdGhlIHNlbGVjdGVkIHJhZGlvIGJ1dHRvbiBhcyB0aGUgQVhWYWx1ZQotICAgICAgICBpZiAo
bV9vYmplY3QtPmlzUmFkaW9Hcm91cCgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiByYWRpb0J1dHRvbiA9IG1fb2JqZWN0LT5zZWxlY3RlZFJhZGlvQnV0dG9uKCk7Ci0gICAg
ICAgICAgICBpZiAoIXJhZGlvQnV0dG9uKQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgICAgICAgICByZXR1cm4gcmFkaW9CdXR0b24tPndyYXBwZXIoKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkgewotICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogdGFiSXRlbSA9IG1fb2JqZWN0LT5zZWxlY3RlZFRhYkl0ZW0o
KTsKLSAgICAgICAgICAgIGlmICghdGFiSXRlbSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmls
OwotICAgICAgICAgICAgcmV0dXJuIHRhYkl0ZW0tPndyYXBwZXIoKTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkl0ZW0oKSkKLSAgICAgICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+aXNTZWxlY3RlZCgpXTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNDb2xvcldlbGwoKSkgewotICAgICAgICAg
ICAgaW50IHIsIGcsIGI7Ci0gICAgICAgICAgICBtX29iamVjdC0+Y29sb3JWYWx1ZShyLCBnLCBi
KTsKLSAgICAgICAgICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAInJnYiAl
Ny41ZiAlNy41ZiAlNy41ZiAxIiwgciAvIDI1NS4sIGcgLyAyNTUuLCBiIC8gMjU1Ll07Ci0gICAg
ICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nVmFsdWUoKTsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNB
Y2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVy
IG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+bWluVmFsdWVGb3JSYW5nZSgpXTsKLSAgICAKLSAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlNYXhW
YWx1ZUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEZsb2F0
Om1fb2JqZWN0LT5tYXhWYWx1ZUZvclJhbmdlKCldOwotICAgIAotICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVdKQotICAg
ICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eUhlbHBUZXh0XTsKLSAgICAKLSAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0
cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogbV9vYmpl
Y3QtPmlzRm9jdXNlZCgpXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogbV9vYmplY3QtPmlzRW5hYmxlZCgpXTsKLSAgICAK
LSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlT
aXplQXR0cmlidXRlXSkgewotICAgICAgICBJbnRTaXplIHMgPSBtX29iamVjdC0+cGl4ZWxTbmFw
cGVkU2l6ZSgpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoU2l6ZTogTlNNYWtl
U2l6ZShzLndpZHRoKCksIHMuaGVpZ2h0KCkpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1
dGVdKQotICAgICAgICByZXR1cm4gW3NlbGYgcG9zaXRpb25dOwotICAgIAotICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0
ZV0gfHwKLSAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2li
aWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgCi0gICAgICAgIGlk
IHJlbW90ZVBhcmVudCA9IFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOwot
ICAgICAgICBpZiAocmVtb3RlUGFyZW50KQotICAgICAgICAgICAgcmV0dXJuIFtyZW1vdGVQYXJl
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZU5hbWVdOwotICAgICAgICAK
LSAgICAgICAgRnJhbWVWaWV3KiBmdiA9IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmlldygpOwot
ICAgICAgICBpZiAoZnYpCi0gICAgICAgICAgICByZXR1cm4gW2Z2LT5wbGF0Zm9ybVdpZGdldCgp
IHdpbmRvd107Ci0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmli
dXRlXSkgewotICAgICAgICBBdG9taWNTdHJpbmcgYWNjZXNzS2V5ID0gbV9vYmplY3QtPmFjY2Vz
c0tleSgpOwotICAgICAgICBpZiAoYWNjZXNzS2V5LmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIGFjY2Vzc0tleTsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmli
dXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmlzVGFiTGlzdCgpKSB7Ci0gICAgICAgICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0No
aWxkcmVuOwotICAgICAgICAgICAgbV9vYmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7
Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJzQ2hpbGRyZW4pOwotICAg
ICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIC8vIFRoZSBj
b250ZW50cyBvZiBhIHRhYiBsaXN0IGFyZSBhbGwgdGhlIGNoaWxkcmVuIGV4Y2VwdCB0aGUgdGFi
cy4KLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkgewotICAgICAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0g
bV9vYmplY3QtPmNoaWxkcmVuKCk7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOwotICAgICAgICAgICAgbV9v
YmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7Ci0gICAgICAgICAgICAKLSAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250
ZW50czsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoaWxkcmVuU2l6ZSA9IGNoaWxkcmVuLnNpemUo
KTsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjaGlsZHJlblNpemU7ICsr
aykgewotICAgICAgICAgICAgICAgIGlmICh0YWJzQ2hpbGRyZW4uZmluZChjaGlsZHJlbltrXSkg
PT0gV1RGOjpub3RGb3VuZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKGNo
aWxkcmVuW2tdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGNvbnRlbnRzKTsKLSAgICAgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNTY3JvbGxW
aWV3KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlD
aGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICAvLyBBIHNjcm9sbFZpZXcncyBjb250ZW50cyBhcmUgZXZlcnl0aGlu
ZyBleGNlcHQgdGhlIHNjcm9sbCBiYXJzLgotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRlbnRzOwotICAgICAgICAgICAgdW5z
aWduZWQgY2hpbGRyZW5TaXplID0gY2hpbGRyZW4uc2l6ZSgpOwotICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBrID0gMDsgayA8IGNoaWxkcmVuU2l6ZTsgKytrKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKCFjaGlsZHJlbltrXS0+aXNTY3JvbGxiYXIoKSkKLSAgICAgICAgICAgICAgICAgICAgY29u
dGVudHMuYXBwZW5kKGNoaWxkcmVuW2tdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRzKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
LSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpIHsKLSAgICAgICAgLy8g
VE9ETzogZGlzdGluZ3Vpc2ggYmV0d2VlbiB2aXNpYmxlIGFuZCBub24tdmlzaWJsZSByb3dzCi0g
ICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
Um93c0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgICAgIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+
KG1fb2JqZWN0KS0+cm93cygpKTsKLSAgICAgICAgfQotICAgICAgICAvLyBUT0RPOiBkaXN0aW5n
dWlzaCBiZXR3ZWVuIHZpc2libGUgYW5kIG5vbi12aXNpYmxlIGNvbHVtbnMKLSAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0
cmlidXRlXSB8fAotICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkgewotICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4obV9v
YmplY3QpLT5jb2x1bW5zKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0
dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsKLSAgICAgICAgICAgIG1fb2Jq
ZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgICAg
IHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCB0aGVzZQot
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQ29sdW1uc0F0dHJpYnV0ZV0gfHwKLSAgICAgICAgICAgIFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENlbGxzQXR0cmlidXRlXSkK
LSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtBWENvbHVtbkhlYWRlclVJRWxlbWVu
dHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVhZGVyczsKLSAgICAgICAgICAgIHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlUYWJsZSo+KG1fb2JqZWN0KS0+Y29sdW1uSGVhZGVycyhjb2x1bW5I
ZWFkZXJzKTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbHVtbkhlYWRl
cnMpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsKLSAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlckNvbnRhaW5lciA9IHN0YXRpY19jYXN0PEFj
Y2Vzc2liaWxpdHlUYWJsZSo+KG1fb2JqZWN0KS0+aGVhZGVyQ29udGFpbmVyKCk7Ci0gICAgICAg
ICAgICBpZiAoaGVhZGVyQ29udGFpbmVyKQotICAgICAgICAgICAgICAgIHJldHVybiBoZWFkZXJD
b250YWluZXItPndyYXBwZXIoKTsKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIH0K
LSAgICAgICAgCi0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dIZWFk
ZXJzOwotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4obV9vYmpl
Y3QpLT5yb3dIZWFkZXJzKHJvd0hlYWRlcnMpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkocm93SGVhZGVycyk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNlbGxz
QXR0cmlidXRlXSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIGNlbGxzOwotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlKj4obV9vYmplY3QpLT5jZWxscyhjZWxscyk7Ci0gICAgICAgICAgICByZXR1
cm4gY29udmVydFRvTlNBcnJheShjZWxscyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAg
aWYgKG1fb2JqZWN0LT5pc1RhYmxlQ29sdW1uKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pCi0gICAg
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6c3RhdGljX2Nhc3Q8QWNjZXNz
aWJpbGl0eVRhYmxlQ29sdW1uKj4obV9vYmplY3QpLT5jb2x1bW5JbmRleCgpXTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIHJvd3MgYXR0cmlidXRlIGZvciBhIGNvbHVtbiBpcyB0aGUgbGlzdCBvZiBh
bGwgdGhlIGVsZW1lbnRzIGluIHRoYXQgY29sdW1uIGF0IGVhY2ggcm93Ci0gICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um93c0F0dHJpYnV0
ZV0gfHwKLSAgICAgICAgICAgIFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlWaXNpYmxlUm93c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIHJldHVybiBjb252
ZXJ0VG9OU0FycmF5KHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbio+KG1fb2Jq
ZWN0KS0+Y2hpbGRyZW4oKSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdKSB7Ci0gICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGVDb2x1bW4qPihtX29iamVjdCktPmhlYWRlck9iamVjdCgpOwotICAgICAgICAg
ICAgaWYgKCFoZWFkZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAg
IHJldHVybiBoZWFkZXItPndyYXBwZXIoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBp
ZiAobV9vYmplY3QtPmlzVGFibGVDZWxsKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb3dJbmRleFJhbmdlQXR0cmlidXRlXSkg
ewotICAgICAgICAgICAgcGFpcjxpbnQsIGludD4gcm93UmFuZ2U7Ci0gICAgICAgICAgICBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVDZWxsKj4obV9vYmplY3QpLT5yb3dJbmRleFJhbmdl
KHJvd1JhbmdlKTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpO
U01ha2VSYW5nZShyb3dSYW5nZS5maXJzdCwgcm93UmFuZ2Uuc2Vjb25kKV07Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlDb2x1bW5JbmRleFJhbmdlQXR0cmlidXRlXSkgewotICAgICAgICAgICAgcGFpcjxpbnQsIGlu
dD4gY29sdW1uUmFuZ2U7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGVDZWxsKj4obV9vYmplY3QpLT5jb2x1bW5JbmRleFJhbmdlKGNvbHVtblJhbmdlKTsKLSAgICAg
ICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTpOU01ha2VSYW5nZShjb2x1bW5S
YW5nZS5maXJzdCwgY29sdW1uUmFuZ2Uuc2Vjb25kKV07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ci0gICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSkgewotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0p
IHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJl
blZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsKLSAgICAgICAgICAgIG1fb2JqZWN0LT5zZWxl
Y3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgICAgIHJldHVybiBj
b252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NB
dHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7Ci0gICAgICAgICAgICBtX29iamVjdC0+YXJpYVRy
ZWVSb3dzKHJvd3NDb3B5KTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJv
d3NDb3B5KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5v
dCBzdXBwb3J0IGNvbHVtbnMsIGJ1dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBh
Ym91dCBjb2x1bW5zIGF0IHRoZSBsZWFzdC4KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXSkKLSAgICAgICAg
ICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdKSB7
Ci0gICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKSB7Ci0gICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50T2JqZWN0KCk7Ci0gICAg
ICAgICAgICBmb3IgKDsgcGFyZW50ICYmICFwYXJlbnQtPmlzVHJlZSgpOyBwYXJlbnQgPSBwYXJl
bnQtPnBhcmVudE9iamVjdCgpKQotICAgICAgICAgICAgeyB9Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICghcGFyZW50KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoaXMgaXRlbSBieSBpdGVy
YXRpbmcgdGhlIHBhcmVudHMuCi0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7Ci0gICAgICAgICAgICBwYXJlbnQtPmFy
aWFUcmVlUm93cyhyb3dzQ29weSk7Ci0gICAgICAgICAgICBzaXplX3QgY291bnQgPSByb3dzQ29w
eS5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IGNvdW50OyArK2sp
Ci0gICAgICAgICAgICAgICAgaWYgKHJvd3NDb3B5W2tdLT53cmFwcGVyKCkgPT0gc2VsZikKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6
a107Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIH0KLSAg
ICAgICAgaWYgKG1fb2JqZWN0LT5pc1RhYmxlUm93KCkpIHsKLSAgICAgICAgICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVd
KQotICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGVSb3cqPihtX29iamVjdCktPnJvd0luZGV4KCldOwotICAg
ICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQg
aW5zaWRlIHRoaXMgcm93LgotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1f
b2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dzQ29weTsKLSAgICAgICAgICAgIG1fb2Jq
ZWN0LT5hcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKHJvd3NDb3B5KTsKLSAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KHJvd3NDb3B5KTsKLSAgICAgICAgfSBlbHNlIGlmIChtX29i
amVjdC0+aXNBUklBVHJlZUdyaWRSb3coKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd3NDb3B5OwotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Kj4obV9vYmplY3QpLT5kaXNjbG9z
ZWRSb3dzKHJvd3NDb3B5KTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJv
d3NDb3B5KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBUaGUgcm93IHRoYXQgY29u
dGFpbnMgdGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFyZW50
IHRoYXQgaXMgYSB0cmVlaXRlbS4KLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXSkgewotICAgICAgICBp
ZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOwotICAgICAgICAgICAgd2hp
bGUgKHBhcmVudCkgewotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZUl0ZW0oKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwotICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgdGhlIHRyZWUgaXRzZWxmLCB0aGVuIHRoaXMgdmFs
dWUgPT0gbmlsLgotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZSgpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50T2JqZWN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbmls
OwotICAgICAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FSSUFUcmVlR3JpZFJvdygpKSB7Ci0g
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cqPihtX29iamVjdCktPmRpc2Nsb3NlZEJ5Um93KCk7Ci0gICAgICAg
ICAgICBpZiAoIXJvdykKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAg
cmV0dXJuIHJvdy0+d3JhcHBlcigpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc3VyZUxl
dmVsQXR0cmlidXRlXSkgewotICAgICAgICAvLyBDb252ZXJ0IGZyb20gMS1iYXNlZCBsZXZlbCAo
ZnJvbSBhcmlhLWxldmVsIHNwZWMpIHRvIDAtYmFzZWQgbGV2ZWwgKE1hYykKLSAgICAgICAgaW50
IGxldmVsID0gbV9vYmplY3QtPmhpZXJhcmNoaWNhbExldmVsKCk7Ci0gICAgICAgIGlmIChsZXZl
bCA+IDApCi0gICAgICAgICAgICBsZXZlbCAtPSAxOwotICAgICAgICByZXR1cm4gW05TTnVtYmVy
IG51bWJlcldpdGhJbnQ6bGV2ZWxdOwotICAgIH0KLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdKQotICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc0V4cGFuZGVkKCld
OwotICAgIAotICAgIGlmICgobV9vYmplY3QtPmlzTGlzdEJveCgpIHx8IG1fb2JqZWN0LT5pc0xp
c3QoKSkgJiYgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVZlcnRp
Y2FsT3JpZW50YXRpb25WYWx1ZTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiXSkKLSAgICAgICAgcmV0dXJu
IFtzZWxmIHRleHRNYXJrZXJSYW5nZUZvclNlbGVjdGlvbl07Ci0gICAgCi0gICAgaWYgKG1fb2Jq
ZWN0LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IEAiQVhTdGFydFRleHRNYXJrZXIiXSkKLSAgICAgICAgICAgIHJldHVybiBbc2VsZiB0
ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnN0YXJ0T2ZEb2N1bWVudChtX29iamVjdC0+cmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKSldOwotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBAIkFYRW5kVGV4dE1hcmtlciJdKQotICAgICAgICAgICAgcmV0dXJuIFtzZWxm
IHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246ZW5kT2ZEb2N1bWVudChtX29iamVjdC0+cmVu
ZGVyZXIoKS0+ZG9jdW1lbnQoKSldOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0
ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+Ymxv
Y2txdW90ZUxldmVsKCldOwotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
QCJBWFRhYmxlTGV2ZWwiXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50
Om1fb2JqZWN0LT50YWJsZUxldmVsKCldOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGVd
KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBsaW5rZWRVSUVsZW1lbnRzOwotICAgICAgICBtX29iamVjdC0+bGlua2VkVUlFbGVtZW50
cyhsaW5rZWRVSUVsZW1lbnRzKTsKLSAgICAgICAgaWYgKGxpbmtlZFVJRWxlbWVudHMuc2l6ZSgp
ID09IDApCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShsaW5rZWRVSUVsZW1lbnRzKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVd
KQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc1Nl
bGVjdGVkKCldOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
IE5TQWNjZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXSAmJiBt
X29iamVjdC0+aXNNZW51QnV0dG9uKCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
dWlFbGVtZW50ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KG1fb2Jq
ZWN0KS0+bWVudUZvck1lbnVCdXR0b24oKTsKLSAgICAgICAgaWYgKHVpRWxlbWVudCkKLSAgICAg
ICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6dWlFbGVtZW50LT53cmFwcGVy
KCldOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXSkgewotICAgICAgICBpZiAo
IW1fb2JqZWN0LT5leHBvc2VzVGl0bGVVSUVsZW1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBtX29iamVj
dC0+dGl0bGVVSUVsZW1lbnQoKTsKLSAgICAgICAgaWYgKG9iaikKLSAgICAgICAgICAgIHJldHVy
biBvYmotPndyYXBwZXIoKTsKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAgCi0gICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlWYWx1ZURl
c2NyaXB0aW9uQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT52YWx1ZURlc2Ny
aXB0aW9uKCk7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uIGVsZW1lbnRPcmllbnRhdGlvbiA9IG1fb2JqZWN0LT5vcmllbnRhdGlv
bigpOwotICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2liaWxpdHlPcmll
bnRhdGlvblZlcnRpY2FsKQotICAgICAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVZlcnRp
Y2FsT3JpZW50YXRpb25WYWx1ZTsKLSAgICAgICAgaWYgKGVsZW1lbnRPcmllbnRhdGlvbiA9PSBB
Y2Nlc3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsKQotICAgICAgICAgICAgcmV0dXJuIE5T
QWNjZXNzaWJpbGl0eUhvcml6b250YWxPcmllbnRhdGlvblZhbHVlOwotICAgICAgICByZXR1cm4g
bmlsOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVdKSB7Ci0gICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbCk7Ci0gICAgICAgIGlmIChzY3JvbGxCYXIp
Ci0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsQmFyLT53cmFwcGVyKCk7Ci0gICAgICAgIHJldHVy
biBuaWw7Ci0gICAgfQotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHNjcm9sbEJhciA9IG1fb2JqZWN0LT5zY3JvbGxCYXIoQWNjZXNzaWJp
bGl0eU9yaWVudGF0aW9uVmVydGljYWwpOwotICAgICAgICBpZiAoc2Nyb2xsQmFyKQotICAgICAg
ICAgICAgcmV0dXJuIHNjcm9sbEJhci0+d3JhcHBlcigpOwotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGVdKSB7Ci0gICAgICAgIHN3aXRjaCAobV9v
YmplY3QtPnNvcnREaXJlY3Rpb24oKSkgewotICAgICAgICAgICAgY2FzZSBTb3J0RGlyZWN0aW9u
QXNjZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlBc2NlbmRp
bmdTb3J0RGlyZWN0aW9uVmFsdWU7Ci0gICAgICAgICAgICBjYXNlIFNvcnREaXJlY3Rpb25EZXNj
ZW5kaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlEZXNjZW5kaW5n
U29ydERpcmVjdGlvblZhbHVlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blNvcnREaXJlY3Rpb25WYWx1ZTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUxhbmd1YWdlQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2Jq
ZWN0LT5sYW5ndWFnZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc0V4cGFuZGVkKCldOwotICAgIAot
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UmVx
dWlyZWRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Om1fb2JqZWN0LT5pc1JlcXVpcmVkKCldOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV0pCi0gICAgICAg
IHJldHVybiBtX29iamVjdC0+aW52YWxpZFN0YXR1cygpOwotICAgIAotICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZV0pIHsK
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IGFyaWFPd25zOwotICAgICAgICBtX29iamVjdC0+YXJpYU93bnNFbGVtZW50cyhhcmlhT3ducyk7
Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGFyaWFPd25zKTsKLSAgICB9Ci0gICAg
Ci0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlH
cmFiYmVkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDptX29iamVjdC0+aXNBUklBR3JhYmJlZCgpXTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlXSkg
ewotICAgICAgICBWZWN0b3I8U3RyaW5nPiBkcm9wRWZmZWN0czsKLSAgICAgICAgbV9vYmplY3Qt
PmRldGVybWluZUFSSUFEcm9wRWZmZWN0cyhkcm9wRWZmZWN0cyk7Ci0gICAgICAgIHNpemVfdCBs
ZW5ndGggPSBkcm9wRWZmZWN0cy5zaXplKCk7Ci0gICAgICAgIAotICAgICAgICBOU011dGFibGVB
cnJheSogZHJvcEVmZmVjdHNBcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTpsZW5ndGhdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQot
ICAgICAgICAgICAgW2Ryb3BFZmZlY3RzQXJyYXkgYWRkT2JqZWN0OmRyb3BFZmZlY3RzW2ldXTsK
LSAgICAgICAgcmV0dXJuIGRyb3BFZmZlY3RzQXJyYXk7Ci0gICAgfQotICAgIAotICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJW
YWx1ZUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBtX29iamVjdC0+cGxhY2Vob2xkZXJWYWx1
ZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOm1fb2JqZWN0LT5hcmlhSGFzUG9wdXAoKV07Ci0gICAgCi0gICAgLy8gQVJJ
QSBMaXZlIHJlZ2lvbiBhdHRyaWJ1dGVzLgotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUxpdmVBdHRyaWJ1dGVdKQotICAgICAgICByZXR1
cm4gbV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uU3RhdHVzKCk7Ci0gICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBUmVsZXZhbnRBdHRyaWJ1dGVd
KQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uUmVsZXZhbnQoKTsKLSAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFB
dG9taWNBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Om1fb2JqZWN0LT5hcmlhTGl2ZVJlZ2lvbkF0b21pYygpXTsKLSAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUFSSUFCdXN5QXR0cmlidXRlXSkKLSAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+YXJpYUxpdmVS
ZWdpb25CdXN5KCldOwotICAgIAotICAgIC8vIE1hdGhNTCBBdHRyaWJ1dGVzLgotICAgIGlmICht
X29iamVjdC0+aXNNYXRoRWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aFJvb3RJbmRleEF0dHJpYnV0ZV0pCi0g
ICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoUm9vdEluZGV4T2JqZWN0KCkpID8gbV9v
YmplY3QtPm1hdGhSb290SW5kZXhPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKLSAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoUm9vdFJh
ZGljYW5kQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiAobV9vYmplY3QtPm1hdGhSYWRp
Y2FuZE9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRoUmFkaWNhbmRPYmplY3QoKS0+d3JhcHBlcigp
IDogMDsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlNYXRoRnJhY3Rpb25OdW1lcmF0b3JBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0
dXJuIChtX29iamVjdC0+bWF0aE51bWVyYXRvck9iamVjdCgpKSA/IG1fb2JqZWN0LT5tYXRoTnVt
ZXJhdG9yT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZyYWN0aW9uRGVub21pbmF0b3JB
dHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aERlbm9taW5hdG9y
T2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhEZW5vbWluYXRvck9iamVjdCgpLT53cmFwcGVyKCkg
OiAwOwotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eU1hdGhCYXNlQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVybiAobV9vYmplY3Qt
Pm1hdGhCYXNlT2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhCYXNlT2JqZWN0KCktPndyYXBwZXIo
KSA6IDA7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5TWF0aFN1YnNjcmlwdEF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gKG1f
b2JqZWN0LT5tYXRoU3Vic2NyaXB0T2JqZWN0KCkpID8gbV9vYmplY3QtPm1hdGhTdWJzY3JpcHRP
YmplY3QoKS0+d3JhcHBlcigpIDogMDsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlNYXRoU3VwZXJzY3JpcHRBdHRyaWJ1dGVdKQotICAg
ICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aFN1cGVyc2NyaXB0T2JqZWN0KCkpID8gbV9v
YmplY3QtPm1hdGhTdXBlcnNjcmlwdE9iamVjdCgpLT53cmFwcGVyKCkgOiAwOwotICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eU1hdGhVbmRl
ckF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gKG1fb2JqZWN0LT5tYXRoVW5kZXJPYmpl
Y3QoKSkgPyBtX29iamVjdC0+bWF0aFVuZGVyT2JqZWN0KCktPndyYXBwZXIoKSA6IDA7Ci0gICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0
aE92ZXJBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIChtX29iamVjdC0+bWF0aE92ZXJP
YmplY3QoKSkgPyBtX29iamVjdC0+bWF0aE92ZXJPYmplY3QoKS0+d3JhcHBlcigpIDogMDsKLSAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlN
YXRoRmVuY2VkT3BlbkF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1cm4gbV9vYmplY3QtPm1h
dGhGZW5jZWRPcGVuU3RyaW5nKCk7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TWF0aEZlbmNlZENsb3NlQXR0cmlidXRlXSkKLSAgICAg
ICAgICAgIHJldHVybiBtX29iamVjdC0+bWF0aEZlbmNlZENsb3NlU3RyaW5nKCk7Ci0gICAgfQot
ICAgIAotICAgIC8vIHRoaXMgaXMgdXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIGZvciB0ZXN0
aW5nCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYQ2xpY2tQb2lu
dCJdKQotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUG9pbnQ6bV9vYmplY3QtPmNs
aWNrUG9pbnQoKV07Ci0gICAgCi0gICAgLy8gVGhpcyBpcyB1c2VkIGJ5IERSVCB0byB2ZXJpZnkg
Q1NTMyBzcGVlY2ggd29ya3MuCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYRFJUU3BlZWNoQXR0cmlidXRlIl0pIHsKLSAgICAgICAgRVNwZWFrIHNwZWFrUHJvcGVy
dHkgPSBtX29iamVjdC0+c3BlYWtQcm9wZXJ0eSgpOwotICAgICAgICBzd2l0Y2ggKHNwZWFrUHJv
cGVydHkpIHsKLSAgICAgICAgICAgIGNhc2UgU3BlYWtOb25lOgotICAgICAgICAgICAgICAgIHJl
dHVybiBAIm5vbmUiOwotICAgICAgICAgICAgY2FzZSBTcGVha1NwZWxsT3V0OgotICAgICAgICAg
ICAgICAgIHJldHVybiBAInNwZWxsLW91dCI7Ci0gICAgICAgICAgICBjYXNlIFNwZWFrRGlnaXRz
OgotICAgICAgICAgICAgICAgIHJldHVybiBAImRpZ2l0cyI7Ci0gICAgICAgICAgICBjYXNlIFNw
ZWFrTGl0ZXJhbFB1bmN0dWF0aW9uOgotICAgICAgICAgICAgICAgIHJldHVybiBAImxpdGVyYWwt
cHVuY3R1YXRpb24iOwotICAgICAgICAgICAgY2FzZSBTcGVha05vUHVuY3R1YXRpb246Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEAibm8tcHVuY3R1YXRpb24iOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIGNhc2UgU3BlYWtOb3JtYWw6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEAibm9ybWFsIjsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBVc2VkIGJ5IERSVCB0
byBmaW5kIGFuIGFjY2Vzc2libGUgbm9kZSBieSBpdHMgZWxlbWVudCBpZC4KLSAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhEUlRFbGVtZW50SWRBdHRyaWJ1dGUiXSkK
LSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5nZXRBdHRyaWJ1dGUoaWRBdHRyKTsKLSAgICAKLSAg
ICByZXR1cm4gbmlsOwotfQotCi0tIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudAot
ewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gZm9jdXNlZE9i
aiA9IG1fb2JqZWN0LT5mb2N1c2VkVUlFbGVtZW50KCk7Ci0gICAgCi0gICAgaWYgKCFmb2N1c2Vk
T2JqKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBmb2N1c2VkT2JqLT53
cmFwcGVyKCk7Ci19Ci0KLS0gKGlkKWFjY2Vzc2liaWxpdHlIaXRUZXN0OihOU1BvaW50KXBvaW50
Ci17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIG1fb2JqZWN0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5
KCk7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4T2JqZWN0ID0gbV9vYmplY3Qt
PmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7Ci0gICAgaWYgKGF4T2JqZWN0
KQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoYXhPYmpl
Y3QtPndyYXBwZXIoKSk7Ci0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2Vz
dG9yKHNlbGYpOwotfQotCi0tIChCT09MKWFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxl
OihOU1N0cmluZyopYXR0cmlidXRlTmFtZQotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0
QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UiXSkK
LSAgICAgICAgcmV0dXJuIFlFUzsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0
dXJuIG1fb2JqZWN0LT5jYW5TZXRGb2N1c0F0dHJpYnV0ZSgpOwotICAgIAotICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRl
XSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpOwotICAg
IAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRTZWxl
Y3RlZEF0dHJpYnV0ZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKQotICAgICAg
ICByZXR1cm4gbV9vYmplY3QtPmNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKTsKLSAg
ICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eURpc2Nsb3NpbmdBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmNhblNldEV4
cGFuZGVkQXR0cmlidXRlKCk7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKQotICAgICAgICBy
ZXR1cm4gWUVTOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV0gfHwKLSAgICAgICAgW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5n
ZUF0dHJpYnV0ZV0gfHwKLSAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBO
U0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQotICAgICAgICBy
ZXR1cm4gbV9vYmplY3QtPmNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKTsKLSAgICAKLSAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRB
dHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gWUVTOwotICAgIAotICAgIHJldHVybiBOTzsKLX0K
LQotLy8gYWNjZXNzaWJpbGl0eVNob3VsZFVzZVVuaXF1ZUlkIGlzIGFuIEFwcEtpdCBtZXRob2Qg
d2Ugb3ZlcnJpZGUgc28gdGhhdAotLy8gb2JqZWN0cyB3aWxsIGJlIGdpdmVuIGEgdW5pcXVlIElE
LCBhbmQgdGhlcmVmb3JlIGFsbG93IEFwcEtpdCB0byBrbm93IHdoZW4gdGhleQotLy8gYmVjb21l
IG9ic29sZXRlIChlLmcuIHdoZW4gdGhlIHVzZXIgbmF2aWdhdGVzIHRvIGEgbmV3IHdlYiBwYWdl
LCBtYWtpbmcgdGhpcyBvbmUKLS8vIHVucmVuZGVyZWQgYnV0IG5vdCBkZWFsbG9jYXRlZCBiZWNh
dXNlIGl0IGlzIGluIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUpLgotLy8gSXQgaXMgaW1wb3J0YW50
IHRvIGNhbGwgTlNBY2Nlc3NpYmlsaXR5VW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlFbGVtZW50IGlu
IHRoZQotLy8gYXBwcm9wcmlhdGUgcGxhY2UgKGUuZy4gZGVhbGxvYykgdG8gcmVtb3ZlIHRoZXNl
IG5vbi1yZXRhaW5lZCByZWZlcmVuY2VzIGZyb20KLS8vIEFwcEtpdCdzIGlkIG1hcHBpbmcgdGFi
bGVzLiBXZSBkbyB0aGlzIGluIGRldGFjaCBieSBjYWxsaW5nIHVucmVnaXN0ZXJVbmlxdWVJZEZv
clVJRWxlbWVudC4KLS8vCi0vLyBSZWdpc3RlcmluZyBhbiBvYmplY3QgaXMgYWxzbyByZXF1aXJl
ZCBmb3Igb2JzZXJ2aW5nIG5vdGlmaWNhdGlvbnMuIE9ubHkgcmVnaXN0ZXJlZCBvYmplY3RzIGNh
biBiZSBvYnNlcnZlZC4KLS0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzSWdub3JlZAotewotICAgIGlm
ICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIFlFUzsK
LSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKQotICAgICAgICByZXR1cm4g
W1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXTsKLSAgICByZXR1
cm4gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKLX0KLQotLSAoTlNBcnJheSog
KWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMKLXsKLSAgICBpZiAoIVtz
ZWxmIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBzdGF0aWMgTlNBcnJheSogcGFyYW1BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMg
TlNBcnJheSogdGV4dFBhcmFtQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHRhYmxl
UGFyYW1BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogd2ViQXJlYVBhcmFtQXR0cnMg
PSBuaWw7Ci0gICAgaWYgKHBhcmFtQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHBhcmFtQXR0cnMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKLSAgICAgICAgICAgICAgICAgICAg
ICBAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJB
WFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJB
WExpbmVGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYVGV4dE1hcmtl
clJhbmdlRm9yTGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFRleHRNYXJrZXJGb3JQb3Np
dGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWEJvdW5kc0ZvclRleHRNYXJrZXJSYW5n
ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhUZXh0TWFya2VyUmFuZ2VGb3JV
bm9yZGVyZWRUZXh0TWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWE5leHRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFByZXZpb3Vz
VGV4dE1hcmtlckZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhMZWZ0
V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAg
IEAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAg
ICAgICAgICAgICBAIkFYTGVmdExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwKLSAg
ICAgICAgICAgICAgICAgICAgICBAIkFYUmlnaHRMaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFNlbnRlbmNlVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFBhcmFncmFwaFRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhOZXh0
V29yZEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBA
IkFYUHJldmlvdXNXb3JkU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAg
ICAgICAgICAgICAgQCJBWE5leHRMaW5lRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiLAotICAg
ICAgICAgICAgICAgICAgICAgIEAiQVhQcmV2aW91c0xpbmVTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhQcmV2aW91c1Nl
bnRlbmNlU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAg
ICAgQCJBWE5leHRQYXJhZ3JhcGhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAg
ICAgICAgICAgICAgICAgQCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFN0eWxlVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWExlbmd0aEZvclRleHRN
YXJrZXJSYW5nZSIsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Qm91bmRz
Rm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5T
QWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRzRm9yU2VhcmNoUHJlZGlj
YXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBuaWxdOwot
ICAgIH0KLSAgICAKLSAgICBpZiAodGV4dFBhcmFtQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIE5T
TXV0YWJsZUFycmF5KiB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OnBhcmFtQXR0cnNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJp
bmcqKWtBWExpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWFJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRB
dHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWFN0
cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0OihOU1N0cmluZyopa0FYUmFuZ2VGb3JQb3NpdGlvblBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWFJhbmdl
Rm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6KE5TU3RyaW5nKilrQVhCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
OwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWFJURkZvclJhbmdl
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihO
U1N0cmluZyopa0FYQXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYU3R5bGVSYW5n
ZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRQYXJhbUF0dHJz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmICh0YWJsZVBhcmFtQXR0cnMgPT0gbmls
KSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFtQXR0cnNdOwotICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlDZWxsRm9yQ29sdW1uQW5kUm93UGFyYW1ldGVyaXplZEF0
dHJpYnV0ZV07Ci0gICAgICAgIHRhYmxlUGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAg
IH0KLSAgICBpZiAoIXdlYkFyZWFQYXJhbUF0dHJzKSB7Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5
KiB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnBhcmFt
QXR0cnNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQYXJhbWV0ZXJpemVk
QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07Ci0gICAgICAgIHdlYkFy
ZWFQYXJhbUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07
Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIAotICAgIGlmIChtX29i
amVjdC0+aXNQYXNzd29yZEZpZWxkKCkpCi0gICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07
Ci0gICAgCi0gICAgaWYgKCFtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiBwYXJhbUF0dHJzOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNU
ZXh0Q29udHJvbCgpKQotICAgICAgICByZXR1cm4gdGV4dFBhcmFtQXR0cnM7Ci0gICAgCi0gICAg
aWYgKG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAgICByZXR1cm4gdGFi
bGVQYXJhbUF0dHJzOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNNZW51UmVsYXRlZCgpKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkp
Ci0gICAgICAgIHJldHVybiB3ZWJBcmVhUGFyYW1BdHRyczsKLSAgICAKLSAgICByZXR1cm4gcGFy
YW1BdHRyczsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uCi17
Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgW1tz
ZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5UGVyZm9ybUFjdGlvbjpOU0FjY2Vzc2li
aWxpdHlQcmVzc0FjdGlvbl07Ci0gICAgZWxzZQotICAgICAgICBtX29iamVjdC0+cHJlc3MoKTsK
LX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjdGlvbgotewotICAg
IGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgIFtbc2VsZiBh
dHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5
SW5jcmVtZW50QWN0aW9uXTsKLSAgICBlbHNlCi0gICAgICAgIG1fb2JqZWN0LT5pbmNyZW1lbnQo
KTsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybURlY3JlbWVudEFjdGlvbgotewot
ICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgIFtbc2Vs
ZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmls
aXR5RGVjcmVtZW50QWN0aW9uXTsKLSAgICBlbHNlCi0gICAgICAgIG1fb2JqZWN0LT5kZWNyZW1l
bnQoKTsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uCi17
Ci0gICAgaWYgKG1fb2JqZWN0LT5yb2xlVmFsdWUoKSA9PSBDb21ib0JveFJvbGUpCi0gICAgICAg
IG1fb2JqZWN0LT5zZXRJc0V4cGFuZGVkKHRydWUpOwotICAgIGVsc2UgewotICAgICAgICAvLyBU
aGlzIG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBpbiBhbiBpdGVyYXRpb24gb2YgdGhlIHJ1biBsb29w
IHRoYXQgZGlkIG5vdCBzdGFydCBmcm9tIGFuIEFYIGNhbGwuCi0gICAgICAgIC8vIElmIGl0J3Mg
dGhlIHNhbWUgcnVuIGxvb3AgaXRlcmF0aW9uLCB0aGUgbWVudSBvcGVuIG5vdGlmaWNhdGlvbiB3
b24ndCBiZSBzZW50Ci0gICAgICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoYWNj
ZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudSkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTowLjBd
OwotICAgIH0KLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRNZW51Ci17Ci0g
ICAgUGFnZSogcGFnZSA9IG1fb2JqZWN0LT5wYWdlKCk7Ci0gICAgaWYgKCFwYWdlKQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdCht
X29iamVjdC0+ZWxlbWVudFJlY3QoKSk7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29i
amVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKLSAgICAKLSAgICAvLyBPbiBXSzIsIHdlIG5lZWQg
dG8gYWNjb3VudCBmb3IgdGhlIHNjcm9sbCBwb3NpdGlvbi4KLSAgICAvLyBPbiBXSzEsIHRoaXMg
aXNuJ3QgbmVjZXNzYXJ5LCBpdCdzIHRha2VuIGNhcmUgb2YgYnkgdGhlIGF0dGFjaG1lbnQgdmll
d3MuCi0gICAgaWYgKGZyYW1lVmlldyAmJiAhZnJhbWVWaWV3LT5wbGF0Zm9ybVdpZGdldCgpKSB7
Ci0gICAgICAgIC8vIEZpbmQgdGhlIGFwcHJvcHJpYXRlIHNjcm9sbCB2aWV3IHRvIHVzZSB0byBj
b252ZXJ0IHRoZSBjb250ZW50cyB0byB0aGUgd2luZG93LgotICAgICAgICBmb3IgKEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBw
YXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBpZiAocGFyZW50
LT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpIHsKLSAgICAgICAgICAgICAgICBTY3JvbGxW
aWV3KiBzY3JvbGxWaWV3ID0gdG9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhwYXJlbnQpLT5zY3Jv
bGxWaWV3KCk7Ci0gICAgICAgICAgICAgICAgcmVjdCA9IHNjcm9sbFZpZXctPmNvbnRlbnRzVG9S
b290VmlldyhyZWN0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+
c2hvd0NvbnRleHRNZW51QXQocGFnZS0+bWFpbkZyYW1lKCksIHJlY3QuY2VudGVyKCkpOwotfQot
Ci0tICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOihOU1N0cmluZyopYWN0aW9uCi17
Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgaWYgKFthY3Rpb24gaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVByZXNzQWN0aW9uXSkKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBlcmZvcm1QcmVzc0Fj
dGlvbl07Ci0gICAgCi0gICAgZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U2hvd01lbnVBY3Rpb25dKQotICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UGVy
Zm9ybVNob3dNZW51QWN0aW9uXTsKLSAgICAKLSAgICBlbHNlIGlmIChbYWN0aW9uIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb25dKQotICAgICAgICBbc2VsZiBh
Y2Nlc3NpYmlsaXR5UGVyZm9ybUluY3JlbWVudEFjdGlvbl07Ci0gICAgCi0gICAgZWxzZSBpZiAo
W2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QWN0aW9uXSkK
LSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb25dOwotfQot
Ci0tICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihO
U1N0cmluZyopYXR0cmlidXRlTmFtZQotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFj
a2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGlkIHRleHRNYXJrZXJSYW5n
ZSA9IG5pbDsKLSAgICBOU051bWJlciogICAgICAgICAgICAgICBudW1iZXIgPSBuaWw7Ci0gICAg
TlNTdHJpbmcqICAgICAgICAgICAgICAgc3RyaW5nID0gbmlsOwotICAgIE5TUmFuZ2UgICAgICAg
ICAgICAgICAgIHJhbmdlID0gezAsIDB9OwotICAgIE5TQXJyYXkqICAgICAgICAgICAgICAgIGFy
cmF5ID0gbmlsOwotICAgIAotICAgIC8vIGRlY29kZSB0aGUgcGFyYW1ldGVyCi0gICAgaWYgKEFY
T2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UodmFsdWUpKQotICAgICAgICB0ZXh0TWFya2VyUmFuZ2Ug
PSB2YWx1ZTsKLSAgICAKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgc2VsZl1dKQotICAgICAgICBudW1iZXIgPSB2YWx1ZTsKLSAgICAKLSAgICBlbHNlIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQotICAgICAgICBzdHJpbmcgPSB2
YWx1ZTsKLSAgICAKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBz
ZWxmXV0pCi0gICAgICAgIHJhbmdlID0gW3ZhbHVlIHJhbmdlVmFsdWVdOwotICAgIAotICAgIGVs
c2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IHNlbGZdXSkKLSAgICAgICAgYXJy
YXkgPSB2YWx1ZTsKLSAgICAKLSAgICAvLyBoYW5kbGUgdGhlIGNvbW1hbmQKLSAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2Ui
XSkgewotICAgICAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKLSAgICAgICAgbV9vYmplY3Qt
PnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoW3NlbGYgdmlzaWJsZVBvc2l0aW9uUmFu
Z2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdlXSk7Ci0gICAgfSBlbHNlIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRy
aWJ1dGVdKSB7Ci0gICAgICAgIEFTU0VSVChudW1iZXIpOwotICAgICAgICBtX29iamVjdC0+c2V0
Rm9jdXNlZChbbnVtYmVyIGludFZhbHVlXSAhPSAwKTsKLSAgICB9IGVsc2UgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdKSB7
Ci0gICAgICAgIGlmIChudW1iZXIgJiYgbV9vYmplY3QtPmNhblNldE51bWVyaWNWYWx1ZSgpKQot
ICAgICAgICAgICAgbV9vYmplY3QtPnNldFZhbHVlKFtudW1iZXIgZmxvYXRWYWx1ZV0pOwotICAg
ICAgICBlbHNlIGlmIChzdHJpbmcpCi0gICAgICAgICAgICBtX29iamVjdC0+c2V0VmFsdWUoc3Ry
aW5nKTsKLSAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNB
Y2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIGlmICghbnVtYmVyKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWQoW251bWJl
ciBib29sVmFsdWVdKTsKLSAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKLSAgICAg
ICAgaWYgKCFhcnJheSB8fCBtX29iamVjdC0+cm9sZVZhbHVlKCkgIT0gTGlzdEJveFJvbGUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuOwotICAgICAgICBjb252ZXJ0VG9W
ZWN0b3IoYXJyYXksIHNlbGVjdGVkQ2hpbGRyZW4pOwotICAgICAgICBzdGF0aWNfY2FzdDxBY2Nl
c3NpYmlsaXR5TGlzdEJveCo+KG1fb2JqZWN0KS0+c2V0U2VsZWN0ZWRDaGlsZHJlbihzZWxlY3Rl
ZENoaWxkcmVuKTsKLSAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc1RleHRDb250cm9sKCkpIHsK
LSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5U2VsZWN0ZWRUZXh0QXR0cmlidXRlXSkgewotICAgICAgICAgICAgbV9vYmplY3QtPnNldFNl
bGVjdGVkVGV4dChzdHJpbmcpOwotICAgICAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGVd
KSB7Ci0gICAgICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRUZXh0UmFuZ2UoUGxhaW5UZXh0
UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCkpOwotICAgICAgICB9IGVsc2UgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNo
YXJhY3RlclJhbmdlQXR0cmlidXRlXSkgewotICAgICAgICAgICAgbV9vYmplY3QtPm1ha2VSYW5n
ZVZpc2libGUoUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCkpOwot
ICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV0pCi0gICAgICAgIG1fb2JqZWN0LT5z
ZXRJc0V4cGFuZGVkKFtudW1iZXIgYm9vbFZhbHVlXSk7Ci0gICAgZWxzZSBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0
ZV0pIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIHNlbGVjdGVkUm93czsKLSAgICAgICAgY29udmVydFRvVmVjdG9yKGFycmF5LCBzZWxl
Y3RlZFJvd3MpOwotICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8IG1fb2JqZWN0LT5p
c0FjY2Vzc2liaWxpdHlUYWJsZSgpKQotICAgICAgICAgICAgbV9vYmplY3QtPnNldFNlbGVjdGVk
Um93cyhzZWxlY3RlZFJvd3MpOwotICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQotICAgICAgICBtX29i
amVjdC0+c2V0QVJJQUdyYWJiZWQoW251bWJlciBib29sVmFsdWVdKTsKLX0KLQotc3RhdGljIFJl
bmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KE5TVmlldyogdmlldykKLXsKLSAgICBpZiAoIVt2
aWV3IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9jb2woV2ViQ29yZUZyYW1lVmlldyldKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBOU1ZpZXc8V2ViQ29yZUZyYW1lVmlldz4qIGZyYW1l
VmlldyA9IChOU1ZpZXc8V2ViQ29yZUZyYW1lVmlldz4qKXZpZXc7Ci0gICAgRnJhbWUqIGZyYW1l
ID0gW2ZyYW1lVmlldyBfd2ViX2ZyYW1lXTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1
cm4gMDsKLSAgICAKLSAgICBOb2RlKiBub2RlID0gZnJhbWUtPmRvY3VtZW50KCktPm93bmVyRWxl
bWVudCgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0
dXJuIG5vZGUtPnJlbmRlcmVyKCk7Ci19Ci0KLS0gKGlkKV9hY2Nlc3NpYmlsaXR5UGFyZW50Rm9y
U3VidmlldzooTlNWaWV3KilzdWJ2aWV3Ci17Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHJlbmRlcmVyRm9yVmlldyhzdWJ2aWV3KTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHJlbmRlcmVy
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKLSAg
ICBpZiAob2JqKQotICAgICAgICByZXR1cm4gb2JqLT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKS0+
d3JhcHBlcigpOwotICAgIHJldHVybiBuaWw7Ci19Ci0KLS0gKE5TU3RyaW5nKilhY2Nlc3NpYmls
aXR5QWN0aW9uRGVzY3JpcHRpb246KE5TU3RyaW5nKilhY3Rpb24KLXsKLSAgICAvLyB3ZSBoYXZl
IG5vIGN1c3RvbSBhY3Rpb25zCi0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eUFjdGlvbkRlc2Ny
aXB0aW9uKGFjdGlvbik7Ci19Ci0KLS8vIFRoZSBDRkF0dHJpYnV0ZWRTdHJpbmdUeXBlIHJlcHJl
c2VudGF0aW9uIG9mIHRoZSB0ZXh0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY2Vzc2liaWxpdHkK
LS8vIG9iamVjdCB0aGF0IGlzIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gcmFuZ2UuCi0tIChOU0F0
dHJpYnV0ZWRTdHJpbmcqKWRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2U6KE5TUmFuZ2UpcmFu
Z2UKLXsKLSAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBQbGFpblRleHRSYW5nZShyYW5n
ZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKLSAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNp
YmxlUG9zUmFuZ2UgPSBtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JSYW5nZSh0ZXh0
UmFuZ2UpOwotICAgIHJldHVybiBbc2VsZiBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZTpbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2aXNpYmxl
UG9zUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dmlzaWJsZVBvc1JhbmdlLmVuZF1dOwotfQotCi0t
IChOU1JhbmdlKV9jb252ZXJ0VG9OU1JhbmdlOihSYW5nZSopcmFuZ2UKLXsKLSAgICBOU1Jhbmdl
IHJlc3VsdCA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwotICAgIGlmICghcmFuZ2UgfHwg
IXJhbmdlLT5zdGFydENvbnRhaW5lcigpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIAot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fb2JqZWN0LT5kb2N1bWVudCgpOwotICAgIGlmICgh
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgCi0gICAgc2l6ZV90IGxvY2F0
aW9uOwotICAgIHNpemVfdCBsZW5ndGg7Ci0gICAgVGV4dEl0ZXJhdG9yOjpnZXRMb2NhdGlvbkFu
ZExlbmd0aEZyb21SYW5nZShkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIHJhbmdlLCBsb2Nh
dGlvbiwgbGVuZ3RoKTsKLSAgICByZXN1bHQubG9jYXRpb24gPSBsb2NhdGlvbjsKLSAgICByZXN1
bHQubGVuZ3RoID0gbGVuZ3RoOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS0gKE5T
SW50ZWdlcilfaW5kZXhGb3JUZXh0TWFya2VyOihpZCltYXJrZXIKLXsKLSAgICBpZiAoIW1hcmtl
cikKLSAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7Ci0gICAgCi0gICAgVmlzaWJsZVNlbGVjdGlv
biBzZWxlY3Rpb24oW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjptYXJrZXJdKTsK
LSAgICByZXR1cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6c2VsZWN0aW9uLnRvTm9ybWFsaXpl
ZFJhbmdlKCkuZ2V0KCldLmxvY2F0aW9uOwotfQotCi0tIChpZClfdGV4dE1hcmtlckZvckluZGV4
OihOU0ludGVnZXIpdGV4dEluZGV4Ci17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmpl
Y3QtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBQYXNzUmVmUHRyPFJhbmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4
dEluZGV4LCAwKTsKLSAgICBpZiAoIXRleHRSYW5nZSB8fCAhdGV4dFJhbmdlLT5ib3VuZGFyeVBv
aW50c1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uKHRleHRSYW5nZS0+c3RhcnRQb3NpdGlvbigpKTsKLSAgICByZXR1cm4gW3Nl
bGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjpwb3NpdGlvbl07Ci19Ci0KLS8vIFRoZSBS
VEYgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRleHQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjZXNz
aWJpbGl0eSBvYmplY3QgdGhhdCBpcwotLy8gc3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiByYW5nZS4K
LS0gKE5TRGF0YSopZG9BWFJURkZvclJhbmdlOihOU1JhbmdlKXJhbmdlCi17Ci0gICAgTlNBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nID0gW3NlbGYgZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JS
YW5nZTpyYW5nZV07Ci0gICAgcmV0dXJuIFthdHRyU3RyaW5nIFJURkZyb21SYW5nZTogTlNNYWtl
UmFuZ2UoMCwgW2F0dHJTdHJpbmcgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOiBuaWxdOwot
fQotCi0tIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nKilhdHRyaWJ1
dGUgZm9yUGFyYW1ldGVyOihpZClwYXJhbWV0ZXIKLXsKLSAgICBpZCB0ZXh0TWFya2VyID0gbmls
OwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IG5pbDsKLSAgICBOU051bWJlciogbnVtYmVyID0g
bmlsOwotICAgIE5TQXJyYXkqIGFycmF5ID0gbmlsOwotICAgIE5TRGljdGlvbmFyeSogZGljdGlv
bmFyeSA9IG5pbDsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gdWlFbGVtZW50ID0g
MDsKLSAgICBOU1BvaW50IHBvaW50ID0gTlNaZXJvUG9pbnQ7Ci0gICAgYm9vbCBwb2ludFNldCA9
IGZhbHNlOwotICAgIE5TUmFuZ2UgcmFuZ2UgPSB7MCwgMH07Ci0gICAgYm9vbCByYW5nZVNldCA9
IGZhbHNlOwotICAgIAotICAgIC8vIGJhc2ljIHBhcmFtZXRlciB2YWxpZGF0aW9uCi0gICAgaWYg
KCFtX29iamVjdCB8fCAhYXR0cmlidXRlIHx8ICFwYXJhbWV0ZXIpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAg
ICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIC8vIGNvbW1vbiBwYXJhbWV0ZXIgdHlwZSBjaGVj
ay9jYXN0aW5nLiAgTmlsIGNoZWNrcyBpbiBoYW5kbGVycyBjYXRjaCB3cm9uZyB0eXBlIGNhc2Uu
Ci0gICAgLy8gTk9URTogVGhpcyBhc3N1bWVzIG5pbCBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIs
IGJlY2F1c2UgaXQgaXMgaW5kaXN0aW5ndWlzaGFibGUgZnJvbQotICAgIC8vIGEgcGFyYW1ldGVy
IG9mIHRoZSB3cm9uZyB0eXBlLgotICAgIGlmIChBWE9iamVjdElzVGV4dE1hcmtlcihwYXJhbWV0
ZXIpKQotICAgICAgICB0ZXh0TWFya2VyID0gcGFyYW1ldGVyOwotICAgIAotICAgIGVsc2UgaWYg
KEFYT2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UocGFyYW1ldGVyKSkKLSAgICAgICAgdGV4dE1hcmtl
clJhbmdlID0gcGFyYW1ldGVyOwotICAgIAotICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5k
T2ZDbGFzczpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZl1dKQotICAgICAgICB1
aUVsZW1lbnQgPSBbKFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilwYXJhbWV0ZXIgYWNj
ZXNzaWJpbGl0eU9iamVjdF07Ci0gICAgCi0gICAgZWxzZSBpZiAoW3BhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBzZWxmXV0pCi0gICAgICAgIG51bWJlciA9IHBhcmFtZXRlcjsKLSAg
ICAKLSAgICBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgc2VsZl1d
KQotICAgICAgICBhcnJheSA9IHBhcmFtZXRlcjsKLSAgICAKLSAgICBlbHNlIGlmIChbcGFyYW1l
dGVyIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBzZWxmXV0pCi0gICAgICAgIGRpY3Rpb25h
cnkgPSBwYXJhbWV0ZXI7Ci0gICAgCi0gICAgZWxzZSBpZiAoW3BhcmFtZXRlciBpc0tpbmRPZkNs
YXNzOltOU1ZhbHVlIHNlbGZdXSAmJiBzdHJjbXAoWyhOU1ZhbHVlKilwYXJhbWV0ZXIgb2JqQ1R5
cGVdLCBAZW5jb2RlKE5TUG9pbnQpKSA9PSAwKSB7Ci0gICAgICAgIHBvaW50U2V0ID0gdHJ1ZTsK
LSAgICAgICAgcG9pbnQgPSBbKE5TVmFsdWUqKXBhcmFtZXRlciBwb2ludFZhbHVlXTsKLSAgICAg
ICAgCi0gICAgfSBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TVmFsdWUgc2Vs
Zl1dICYmIHN0cmNtcChbKE5TVmFsdWUqKXBhcmFtZXRlciBvYmpDVHlwZV0sIEBlbmNvZGUoTlNS
YW5nZSkpID09IDApIHsKLSAgICAgICAgcmFuZ2VTZXQgPSB0cnVlOwotICAgICAgICByYW5nZSA9
IFsoTlNWYWx1ZSopcGFyYW1ldGVyIHJhbmdlVmFsdWVdOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IC8vIEF0dHJpYnV0ZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQuIEFsbG93IHN1cGVyIHRvIGhhbmRs
ZS4KLSAgICAgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0
cmlidXRlIGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwotICAgIH0KLSAgICAKLSAgICAvLyBkaXNw
YXRjaAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogc3RhcnRPYmplY3QgPSAwOwotICAgICAgICBpZiAo
W1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU3RhcnRFbGVtZW50Il0gaXNLaW5kT2ZDbGFz
czpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZl1dKQotICAgICAgICAgICAgc3Rh
cnRPYmplY3QgPSBbKFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilbZGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGFjY2Vzc2liaWxpdHlPYmplY3RdOwotICAg
ICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbiBzZWFyY2hEaXJlY3Rp
b24gPSBTZWFyY2hEaXJlY3Rpb25OZXh0OwotICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVj
dEZvcktleTpAIkFYRGlyZWN0aW9uIl0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQot
ICAgICAgICAgICAgc2VhcmNoRGlyZWN0aW9uID0gKFsoTlNTdHJpbmcqKVtkaWN0aW9uYXJ5IG9i
amVjdEZvcktleTpAIkFYRGlyZWN0aW9uIl0gaXNFcXVhbFRvU3RyaW5nOkAiQVhEaXJlY3Rpb25O
ZXh0Il0pID8gU2VhcmNoRGlyZWN0aW9uTmV4dCA6IFNlYXJjaERpcmVjdGlvblByZXZpb3VzOwot
ICAgICAgICAKLSAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkgPSBBbnlU
eXBlU2VhcmNoS2V5OwotICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFY
U2VhcmNoS2V5Il0gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQotICAgICAgICAgICAg
c2VhcmNoS2V5ID0gYWNjZXNzaWJpbGl0eVNlYXJjaEtleUZvclN0cmluZygoQ0ZTdHJpbmdSZWYp
W2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hLZXkiXSk7Ci0gICAgICAgIAotICAg
ICAgICBTdHJpbmcgc2VhcmNoVGV4dDsKLSAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmplY3RG
b3JLZXk6QCJBWFNlYXJjaFRleHQiXSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBzZWxmXV0pCi0g
ICAgICAgICAgICBzZWFyY2hUZXh0ID0gKENGU3RyaW5nUmVmKVtkaWN0aW9uYXJ5IG9iamVjdEZv
cktleTpAIkFYU2VhcmNoVGV4dCJdOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgcmVzdWx0
c0xpbWl0ID0gMDsKLSAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFJl
c3VsdHNMaW1pdCJdIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIHNlbGZdXSkKLSAgICAgICAgICAg
IHJlc3VsdHNMaW1pdCA9IFsoTlNOdW1iZXIqKVtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFY
UmVzdWx0c0xpbWl0Il0gdW5zaWduZWRJbnRWYWx1ZV07Ci0gICAgICAgIAotICAgICAgICBBY2Nl
c3NpYmlsaXR5U2VhcmNoQ3JpdGVyaWEgY3JpdGVyaWEgPSB7c3RhcnRPYmplY3QsIHNlYXJjaERp
cmVjdGlvbiwgc2VhcmNoS2V5LCAmc2VhcmNoVGV4dCwgcmVzdWx0c0xpbWl0fTsKLSAgICAgICAg
Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciByZXN1bHRzOwotICAgICAgICBtX29iamVjdC0+ZmluZE1hdGNoaW5nT2JqZWN0cygmY3JpdGVy
aWEsIHJlc3VsdHMpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
cmVzdWx0cyk7Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VySXNWYWxpZFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
KSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiBwb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25G
b3JUZXh0TWFya2VyOnRleHRNYXJrZXJdOwotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhCb29sOiFwb3MuaXNOdWxsKCldOwotICAgIH0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50ZWdl
cjpbc2VsZiBfaW5kZXhGb3JUZXh0TWFya2VyOnRleHRNYXJrZXJdXTsKLSAgICB9Ci0gICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJGb3JJ
bmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIHJldHVybiBbc2VsZiBfdGV4
dE1hcmtlckZvckluZGV4OltudW1iZXIgaW50ZWdlclZhbHVlXV07Ci0gICAgfQotICAgIAotICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtl
ciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBheE9iamVjdCA9IG1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yUG9z
aXRpb24odmlzaWJsZVBvcyk7Ci0gICAgICAgIGlmICghYXhPYmplY3QpCi0gICAgICAgICAgICBy
ZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gYXhPYmplY3QtPndyYXBwZXIoKTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFu
Z2VGb3JVSUVsZW1lbnQiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdl
ID0gdWlFbGVtZW50LmdldCgpLT52aXNpYmxlUG9zaXRpb25SYW5nZSgpOwotICAgICAgICByZXR1
cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFy
dCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGluZUZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRN
YXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRo
VW5zaWduZWRJbnQ6bV9vYmplY3QtPmxpbmVGb3JQb3NpdGlvbih2aXNpYmxlUG9zKV07Ci0gICAg
fQotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtl
clJhbmdlRm9yTGluZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2Ug
PSBtX29iamVjdC0+dmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JMaW5lKFtudW1iZXIgaW50VmFsdWVd
KTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zOnZwUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dnBSYW5nZS5lbmRdOwotICAgIH0KLSAgICAK
LSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5n
ZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJr
ZXJSYW5nZV07Ci0gICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nRm9yVmlzaWJsZVBvc2l0
aW9uUmFuZ2UodmlzaWJsZVBvc1JhbmdlKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyRm9yUG9zaXRpb24iXSkgewotICAgICAg
ICBJbnRQb2ludCB3ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludCk7Ci0gICAgICAgIHJldHVy
biBwb2ludFNldCA/IFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3Qt
PnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCldIDogbmlsOwotICAgIH0KLSAg
ICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEJvdW5kc0ZvclRleHRN
YXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NS
YW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRN
YXJrZXJSYW5nZV07Ci0gICAgICAgIE5TUmVjdCByZWN0ID0gbV9vYmplY3QtPmJvdW5kc0ZvclZp
c2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NSYW5nZSk7Ci0gICAgICAgIHJldHVybiBbTlNW
YWx1ZSB2YWx1ZVdpdGhSZWN0OnJlY3RdOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJp
emVkQXR0cmlidXRlXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBtX29iamVj
dC0+dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgocmFuZ2UubG9jYXRpb24pOwotICAgICAgICBWaXNp
YmxlUG9zaXRpb24gZW5kID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdl
LmxvY2F0aW9uK3JhbmdlLmxlbmd0aCk7Ci0gICAgICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBl
bmQuaXNOdWxsKCkpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICBOU1JlY3QgcmVj
dCA9IG1fb2JqZWN0LT5ib3VuZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShWaXNpYmxlUG9zaXRp
b25SYW5nZShzdGFydCwgZW5kKSk7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhS
ZWN0OnJlY3RdOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkg
ewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnQgPSBtX29iamVjdC0+dmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgocmFuZ2UubG9jYXRpb24pOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24gZW5k
ID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uK3Jhbmdl
Lmxlbmd0aCk7Ci0gICAgICAgIGlmIChzdGFydC5pc051bGwoKSB8fCBlbmQuaXNOdWxsKCkpCi0g
ICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gbV9vYmplY3QtPnN0cmluZ0Zv
clZpc2libGVQb3NpdGlvblJhbmdlKFZpc2libGVQb3NpdGlvblJhbmdlKHN0YXJ0LCBlbmQpKTsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdHRy
aWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIl0pCi0gICAgICAgIHJldHVybiBbc2VsZiBk
b0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwot
ICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJh
bmdlRm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiXSkgewotICAgICAgICBpZiAoW2FycmF5IGNvdW50
XSA8IDIpCi0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAKLSAgICAgICAgaWQgdGV4
dE1hcmtlcjEgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDowXTsKLSAgICAgICAgaWQgdGV4dE1hcmtl
cjIgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDoxXTsKLSAgICAgICAgaWYgKCFBWE9iamVjdElzVGV4
dE1hcmtlcih0ZXh0TWFya2VyMSkgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2VyKHRleHRNYXJrZXIy
KSkKLSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvczEgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0
ZXh0TWFya2VyMSldOwotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvczIgPSBbc2Vs
ZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyMildOwotICAgICAgICBW
aXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJh
bmdlRm9yVW5vcmRlcmVkUG9zaXRpb25zKHZpc2libGVQb3MxLCB2aXNpYmxlUG9zMik7Ci0gICAg
ICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJh
bmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAgCi0gICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2li
bGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtz
ZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPm5leHRWaXNpYmxlUG9z
aXRpb24odmlzaWJsZVBvcyldOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJr
ZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPnByZXZpb3VzVmlzaWJsZVBvc2l0aW9uKHZp
c2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhMZWZ0V29yZFRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBS
YW5nZSA9IG1fb2JqZWN0LT5wb3NpdGlvbk9mTGVmdFdvcmQodmlzaWJsZVBvcyk7Ci0gICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdl
LnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2Vs
ZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cG9zaXRpb25PZlJpZ2h0V29y
ZCh2aXNpYmxlUG9zKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21W
aXNpYmxlUG9zaXRpb25zOnZwUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dnBSYW5nZS5lbmRdOwot
ICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExlZnRM
aW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4
dE1hcmtlcildOwotICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmpl
Y3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvcyk7Ci0gICAgICAgIHJl
dHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0
YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSaWdodExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIFZpc2li
bGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cmlnaHRMaW5lVmlzaWJsZVBvc2l0
aW9uUmFuZ2UodmlzaWJsZVBvcyk7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFu
Z2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2Uu
ZW5kXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAi
QVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJr
ZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9
IG1fb2JqZWN0LT5zZW50ZW5jZUZvclBvc2l0aW9uKHZpc2libGVQb3MpOwotICAgICAgICByZXR1
cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFy
dCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlz
aWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnBhcmFncmFwaEZvclBvc2l0aW9uKHZp
c2libGVQb3MpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2li
bGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0gICAg
fQotICAgIAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFdvcmRF
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtl
cildOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjpt
X29iamVjdC0+bmV4dFdvcmRFbmQodmlzaWJsZVBvcyldOwotICAgIH0KLSAgICAKLSAgICBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzV29yZFN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9
IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAg
ICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPnBy
ZXZpb3VzV29yZFN0YXJ0KHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0TGluZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNp
YmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVybiBb
c2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5uZXh0TGluZUVuZFBv
c2l0aW9uKHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhQcmV2aW91c0xpbmVTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
Il0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxl
UG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVybiBbc2Vs
ZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5wcmV2aW91c0xpbmVTdGFy
dFBvc2l0aW9uKHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
ciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAgICByZXR1cm4gW3Nl
bGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjptX29iamVjdC0+bmV4dFNlbnRlbmNlRW5k
UG9zaXRpb24odmlzaWJsZVBvcyldOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5wcmV2aW91c1Nl
bnRlbmNlU3RhcnRQb3NpdGlvbih2aXNpYmxlUG9zKV07Ci0gICAgfQotICAgIAotICAgIGlmIChb
YXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBb
c2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5uZXh0
UGFyYWdyYXBoRW5kUG9zaXRpb24odmlzaWJsZVBvcyldOwotICAgIH0KLSAgICAKLSAgICBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzUGFyYWdyYXBoU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwot
ICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjptX29iamVj
dC0+cHJldmlvdXNQYXJhZ3JhcGhTdGFydFBvc2l0aW9uKHZpc2libGVQb3MpXTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhTdHlsZVRleHRNYXJr
ZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsK
LSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1fb2JqZWN0LT5zdHlsZVJh
bmdlRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFy
a2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZw
UmFuZ2UuZW5kXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhMZW5ndGhGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSB2aXNpYmxlUG9zUmFuZ2UgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25SYW5nZUZv
clRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwotICAgICAgICBpbnQgbGVuZ3RoID0g
bV9vYmplY3QtPmxlbmd0aEZvclZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NSYW5nZSk7
Ci0gICAgICAgIGlmIChsZW5ndGggPCAwKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Omxlbmd0aF07Ci0gICAgfQotICAgIAot
ICAgIC8vIFVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSAoc28gZmFyKS4KLSAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9
IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJS
YW5nZV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9u
OnZpc2libGVQb3NSYW5nZS5zdGFydF07Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7
Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtzZWxmIHZp
c2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07Ci0g
ICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnZpc2libGVQ
b3NSYW5nZS5lbmRdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNzaWJp
bGl0eVRhYmxlKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkg
ewotICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkgY291bnRdICE9IDIpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCkt
PmNlbGxGb3JDb2x1bW5BbmRSb3coW1thcnJheSBvYmplY3RBdEluZGV4OjBdIHVuc2lnbmVkSW50
VmFsdWVdLCBbW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gdW5zaWduZWRJbnRWYWx1ZV0pOwotICAg
ICAgICAgICAgaWYgKCFjZWxsKQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHJldHVybiBjZWxsLT53cmFwcGVyKCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RleHRDb250cm9sKCkpIHsKLSAgICAgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcgKilrQVhMaW5lRm9ySW5k
ZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewotICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIg
PSBtX29iamVjdC0+ZG9BWExpbmVGb3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7Ci0gICAgICAg
ICAgICBpZiAobGluZU51bWJlciA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50OmxpbmVOdW1i
ZXJdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6IChOU1N0cmluZyAqKWtBWFJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVdKSB7Ci0gICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+
ZG9BWFJhbmdlRm9yTGluZShbbnVtYmVyIGludFZhbHVlXSk7Ci0gICAgICAgICAgICByZXR1cm4g
W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4
dFJhbmdlLmxlbmd0aCldOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyopa0FYU3RyaW5nRm9yUmFuZ2VQYXJhbWV0
ZXJpemVkQXR0cmlidXRlXSkgewotICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0
UmFuZ2UgPSBQbGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKLSAg
ICAgICAgICAgIHJldHVybiByYW5nZVNldCA/IChpZCkobV9vYmplY3QtPmRvQVhTdHJpbmdGb3JS
YW5nZShwbGFpblRleHRSYW5nZSkpIDogbmlsOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyopa0FYUmFuZ2VGb3JQ
b3NpdGlvblBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBpZiAoIXBvaW50
U2V0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICBJbnRQb2ludCB3
ZWJDb3JlUG9pbnQgPSBJbnRQb2ludChwb2ludCk7Ci0gICAgICAgICAgICBQbGFpblRleHRSYW5n
ZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+ZG9BWFJhbmdlRm9yUG9zaXRpb24od2ViQ29yZVBvaW50
KTsKLSAgICAgICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTogTlNNYWtlUmFu
Z2UodGV4dFJhbmdlLnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzogKE5TU3RyaW5nKilr
QVhSYW5nZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIFBs
YWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IG1fb2JqZWN0LT5kb0FYUmFuZ2VGb3JJbmRleChbbnVt
YmVyIGludFZhbHVlXSk7Ci0gICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOwotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
IChOU1N0cmluZyopa0FYQm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewot
ICAgICAgICAgICAgaWYgKCFyYW5nZVNldCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwot
ICAgICAgICAgICAgUGxhaW5UZXh0UmFuZ2UgcGxhaW5UZXh0UmFuZ2UgPSBQbGFpblRleHRSYW5n
ZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKTsKLSAgICAgICAgICAgIE5TUmVjdCByZWN0
ID0gbV9vYmplY3QtPmRvQVhCb3VuZHNGb3JSYW5nZShwbGFpblRleHRSYW5nZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcq
KWtBWFJURkZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pCi0gICAgICAgICAgICByZXR1
cm4gcmFuZ2VTZXQgPyBbc2VsZiBkb0FYUlRGRm9yUmFuZ2U6cmFuZ2VdIDogbmlsOwotICAgICAg
ICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtB
WEF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKQotICAgICAg
ICAgICAgcmV0dXJuIHJhbmdlU2V0ID8gW3NlbGYgZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5n
ZTpyYW5nZV0gOiBuaWw7Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6IChOU1N0cmluZyopa0FYU3R5bGVSYW5nZUZvckluZGV4UGFyYW1ldGVyaXplZEF0
dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IG1fb2Jq
ZWN0LT5kb0FYU3R5bGVSYW5nZUZvckluZGV4KFtudW1iZXIgaW50VmFsdWVdKTsKLSAgICAgICAg
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhSYW5nZTogTlNNYWtlUmFuZ2UodGV4dFJhbmdl
LnN0YXJ0LCB0ZXh0UmFuZ2UubGVuZ3RoKV07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAg
Ly8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBhcmUg
bm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBhdHRy
aWJ1dGVzLgotICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBlci4K
LSAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGUg
Zm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07Ci19Ci0KLS0gKEJPT0wpYWNjZXNzaWJpbGl0eVN1cHBv
cnRzT3ZlcnJpZGRlbkF0dHJpYnV0ZXMKLXsKLSAgICByZXR1cm4gWUVTOwotfQotCi0tIChCT09M
KWFjY2Vzc2liaWxpdHlTaG91bGRVc2VVbmlxdWVJZAotewotICAgIC8vIEFsbCBBWCBvYmplY3Qg
d3JhcHBlcnMgc2hvdWxkIHVzZSB1bmlxdWUgSUQncyBiZWNhdXNlIGl0J3MgZmFzdGVyIHdpdGhp
biBBcHBLaXQgdG8gbG9vayB0aGVtIHVwLgotICAgIHJldHVybiBZRVM7Ci19Ci0KLS8vIEFQSSB0
aGF0IEFwcEtpdCB1c2VzIGZvciBmYXN0ZXIgYWNjZXNzCi0tIChOU1VJbnRlZ2VyKWFjY2Vzc2li
aWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmpl
Y3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gTlNOb3RGb3VuZDsKLSAgICAKLSAgICAv
LyBUcmVlIG9iamVjdHMgcmV0dXJuIHRoZWlyIHJvd3MgYXMgdGhlaXIgY2hpbGRyZW4uIFdlIGNh
biB1c2UgdGhlIG9yaWdpbmFsIG1ldGhvZAotICAgIC8vIGhlcmUsIGJlY2F1c2Ugd2Ugd29uJ3Qg
Z2FpbiBhbnkgc3BlZWQgdXAuCi0gICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSkKLSAgICAgICAg
cmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOmNoaWxkXTsKLSAgICAKLSAg
ICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Im
IGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7Ci0gICAgCi0gICAgaWYgKGNoaWxkcmVu
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0g
aW5kZXhPZk9iamVjdDpjaGlsZF07Ci0gICAgCi0gICAgdW5zaWduZWQgY291bnQgPSBjaGlsZHJl
bi5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNvdW50OyArK2spIHsKLSAg
ICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIgPSBjaGlsZHJlbltr
XS0+d3JhcHBlcigpOwotICAgICAgICBpZiAod3JhcHBlciA9PSBjaGlsZCB8fCAoY2hpbGRyZW5b
a10tPmlzQXR0YWNobWVudCgpICYmIFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3XSA9PSBjaGlsZCkp
Ci0gICAgICAgICAgICByZXR1cm4gazsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIE5TTm90Rm91
bmQ7Ci19Ci0KLS0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6
KE5TU3RyaW5nICopYXR0cmlidXRlCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNr
aW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7Ci0gICAg
ICAgIC8vIFRyZWUgaXRlbXMgb2JqZWN0IHJldHVybnMgYSBkaWZmZXJlbnQgc2V0IG9mIGNoaWxk
cmVuIHRoYW4gdGhvc2UgdGhhdCBhcmUgaW4gY2hpbGRyZW4oKQotICAgICAgICAvLyBiZWNhdXNl
IGFuIEFYT3V0bGluZSAodGhlIG1hYyByb2xlIGlzIGJlY29tZXMpIGhhcyBzb21lIG9kZCBzdGlw
dWxhdGlvbnMuCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlKCkgfHwgbV9vYmplY3QtPmlz
VHJlZUl0ZW0oKSkKLSAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSBjb3VudF07Ci0gICAg
ICAgIAotICAgICAgICBjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hp
bGRyZW5WZWN0b3ImIGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7Ci0gICAgICAgIGlm
IChjaGlsZHJlbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gW1tzZWxmIHJlbmRlcldp
ZGdldENoaWxkcmVuXSBjb3VudF07Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gY2hpbGRyZW4u
c2l6ZSgpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gW3N1cGVyIGFjY2Vzc2liaWxpdHlBcnJh
eUF0dHJpYnV0ZUNvdW50OmF0dHJpYnV0ZV07Ci19Ci0KLS0gKE5TQXJyYXkgKilhY2Nlc3NpYmls
aXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0cmlidXRlIGluZGV4OihOU1VJ
bnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENvdW50Ci17Ci0gICAgaWYgKCFb
c2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IAotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5jaGlsZHJlbigpLmlzRW1w
dHkoKSkgewotICAgICAgICAgICAgTlNBcnJheSAqY2hpbGRyZW4gPSBbc2VsZiByZW5kZXJXaWRn
ZXRDaGlsZHJlbl07Ci0gICAgICAgICAgICBpZiAoIWNoaWxkcmVuKQotICAgICAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5TVUludGVnZXIgY2hpbGRD
b3VudCA9IFtjaGlsZHJlbiBjb3VudF07Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gY2hpbGRD
b3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBOU1VJbnRlZ2VyIGFycmF5TGVuZ3RoID0gbWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4
Q291bnQpOwotICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpO
U01ha2VSYW5nZShpbmRleCwgYXJyYXlMZW5ndGgpXTsKLSAgICAgICAgfSBlbHNlIGlmIChtX29i
amVjdC0+aXNUcmVlKCkpIHsKLSAgICAgICAgICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhl
aXIgcm93cyBhcyB0aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9k
IGluIHRoaXMgY2FzZS4KLSAgICAgICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUFy
cmF5QXR0cmlidXRlVmFsdWVzOmF0dHJpYnV0ZSBpbmRleDppbmRleCBtYXhDb3VudDptYXhDb3Vu
dF07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4gPSBtX29iamVjdC0+Y2hp
bGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRDb3VudCA9IGNoaWxkcmVuLnNpemUoKTsK
LSAgICAgICAgaWYgKGluZGV4ID49IGNoaWxkQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gbmls
OwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gbWluKGNoaWxkQ291bnQg
LSBpbmRleCwgbWF4Q291bnQpOwotICAgICAgICAKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnN1
YmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmF2YWlsYWJsZV07Ci0g
ICAgICAgIGZvciAodW5zaWduZWQgYWRkZWQgPSAwOyBhZGRlZCA8IGF2YWlsYWJsZTsgKytpbmRl
eCwgKythZGRlZCkgewotICAgICAgICAgICAgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
IHdyYXBwZXIgPSBjaGlsZHJlbltpbmRleF0tPndyYXBwZXIoKTsKLSAgICAgICAgICAgIGlmICh3
cmFwcGVyKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGF0dGFjaG1lbnQgdmlldyBzaG91bGQg
YmUgcmV0dXJuZWQsIG90aGVyd2lzZSBBWCBwYWxpbmRyb21lIGVycm9ycyBvY2N1ci4KLSAgICAg
ICAgICAgICAgICBpZiAoY2hpbGRyZW5baW5kZXhdLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBl
ciBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmpl
Y3Q6W3dyYXBwZXIgYXR0YWNobWVudFZpZXddXTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBzdWJhcnJheTsKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1
ZXM6YXR0cmlidXRlIGluZGV4OmluZGV4IG1heENvdW50Om1heENvdW50XTsKLX0KLQotQGVuZAot
Ci0jZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCShyZXZpc2lvbiAx
NDMxMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hl
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgotI2ltcG9ydCAiV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAK
ICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC01MSw3ICs1MSw3IEBACiAKIHZvaWQgQVhP
YmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmopCiB7Ci0g
ICAgUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiB3cmFwcGVyKEFkb3B0
TlMsIFtbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMgYWxsb2NdIGluaXRXaXRoQWNj
ZXNzaWJpbGl0eU9iamVjdDpvYmpdKTsKKyAgICBSZXRhaW5QdHI8V2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXI+IHdyYXBwZXIoQWRvcHROUywgW1tXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBhbGxvY10gaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0Om9ial0pOwogICAgIG9iai0+
c2V0V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJCYXNlLmgJKHJldmlzaW9uIDE0MzEzNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTUgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCi0jZGVmaW5lIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyX2gKKyNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlX2gKKyNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlX2gKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIFZp
c2libGVQb3NpdGlvbjsKIH0KIAotQGludGVyZmFjZSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciA6IE5TT2JqZWN0IHsKK0BpbnRlcmZhY2UgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlIDogTlNPYmplY3QgewogICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG1f
b2JqZWN0OwogfQogIApAQCAtNDksNCArNDksNCBAQAogCiBAZW5kCiAKLSNlbmRpZiAvLyBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCisjZW5kaWYgLy8gV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE0MzEzNikKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjE5LDggKzIxOSw4IEBACiAJCTA4RjJGMDA5MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFn
ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4RjJGMDA3MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmNwcCAq
LzsgfTsKIAkJMDhGMkYwMEExMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlckltYWdlUmVzb3VyY2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RjJGMDA4
MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5RDQxNDYzRjlDRDAwNjdE
OTMzIC8qIFNWR0ltYWdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUu
Y3BwICovOyB9OwotCQkwOEY4NTlENTE0NjNGOUNEMDA2N0Q5MzMgLyogU1ZHSW1hZ2VDYWNoZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGODU5RDMx
NDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwOEY4NTlENDE0NjNGOUNEMDA2N0Q5MzQgLyog
U1ZHSW1hZ2VGb3JDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhGODU5RDIxNDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29u
dGFpbmVyLmNwcCAqLzsgfTsKKwkJMDhGODU5RDUxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdl
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4
Rjg1OUQzMTQ2M0Y5Q0QwMDY3RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDhGODU5RDUxNDYzRjlDRDAwNjdE
OTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5MzQgLyogU1ZHSW1hZ2VG
b3JDb250YWluZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwOEZCMTdDMTEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0
eU1hcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCMTdDMDEzQkM3RTkxMDAwNDAwODYgLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5jcHAg
Ki87IH07CiAJCTA4RkIzRjg0MTNCQzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3Bl
cnR5TWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
OEZCM0Y4MzEzQkM3NTRDMDA5OUZDMTggLyogU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03NzgsOCAr
Nzc4LDggQEAKIAkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0
Qm94T3B0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOUE4MTIyNDBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3hPcHRpb24u
aCAqLzsgfTsKIAkJMjlBODEyNDMwRkJCOUMxRDAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlMaXN0
Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4
MTIyNTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guaCAqLzsgfTsKIAkJ
MjlBODEyNDgwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NDBGQkI5
Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbSAqLzsgfTsKLQkJMjlBODEy
NDkwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NTBGQkI5
Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCAqLzsgfTsKLQkJ
MjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlBODEy
NDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tICov
OyB9OworCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJCYXNlLmggKi87IH07CisJCTI5QTgxMjRBMEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NjBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tICovOyB9OwogCQkyOUE4MTI0QjBGQkI5Q0E5MDA1
MTAyOTMgLyogQVhPYmplY3RDYWNoZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI5QTgxMjQ3MEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENh
Y2hlTWFjLm1tICovOyB9OwogCQkyOUFDQjIxMjE0M0U3MTI4MDA2QkNBNUYgLyogQWNjZXNzaWJp
bGl0eU1vY2tPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5QUNCMjExMTQzRTcxMjgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09iamVj
dC5oICovOyB9OwogCQkyOUFDQjIxNDE0M0U3NDk4MDA2QkNBNUYgLyogQWNjZXNzaWJpbGl0eU1v
Y2tPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjlBQ0IyMTMxNDNFNzQ5ODAwNkJDQTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNw
cCAqLzsgfTsKQEAgLTM3MDgsNyArMzcwOCw2IEBACiAJCTk3QjhGRkQxMTZBRTdGOTYwMDM4Mzg4
RCAvKiBDaGFyYWN0ZXJSZWZlcmVuY2VQYXJzZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0I4RkZDRjE2QUU3RjkyMDAzODM4OEQgLyog
Q2hhcmFjdGVyUmVmZXJlbmNlUGFyc2VySW5saW5lcy5oICovOyB9OwogCQk5N0JDNjlEQTE1MDVG
MDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2OUQ2MTUwNUYwNzYwMDFCNzRBQyAvKiBEYXRh
YmFzZUJhY2tlbmQuY3BwICovOyB9OwogCQk5N0JDNjlEQjE1MDVGMDc2MDAxQjc0QUMgLyogRGF0
YWJhc2VCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VCYWNrZW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJRkUzNkZEMTUxNkM3
ODI2NTAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hh
bmdlVmVyc2lvbkRhdGEuaCAqLzsgfTsKIAkJOTdCQzY5REMxNTA1RjA3NjAwMUI3NEFDIC8qIENo
YW5nZVZlcnNpb25XcmFwcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJzaW9uV3Jh
cHBlci5jcHAgKi87IH07CiAJCTk3QkM2OUREMTUwNUYwNzYwMDFCNzRBQyAvKiBDaGFuZ2VWZXJz
aW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmggKi87
IH07CiAJCTk3QkM2QTIwMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRhYmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNjlERTE1MDVGMDgxMDAx
Qjc0QUMgLyogRGF0YWJhc2UuY3BwICovOyB9OwpAQCAtMzc0MiwyNyArMzc0MSwxOCBAQAogCQk5
N0JDNkE0NTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMUmVzdWx0U2V0Um93TGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMDMxNTA1RjA4MTAw
MUI3NEFDIC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuaCAqLzsgfTsKIAkJOTdCQzZBNDcxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkEwNTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVt
ZW50LmNwcCAqLzsgfTsKIAkJOTdCQzZBNDgxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZB
MDYxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5oICovOyB9OwotCQlGRThBNjc0NzE2
Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRThBNjc0NTE2Q0REMTlFMDA5MzBCRjgg
LyogU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgKi87IH07Ci0JCUZFOEE2NzQ4MTZDREQxOUUwMDkz
MEJGOCAvKiBTUUxTdGF0ZW1lbnRCYWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRThBNjc0NjE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVt
ZW50QmFja2VuZC5oICovOyB9OwogCQk5N0JDNkE0OTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3Rh
dGVtZW50Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3QkM2QTA3MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRDYWxsYmFjay5o
ICovOyB9OwogCQk5N0JDNkE0QjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTdCQzZBMDkxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suaCAq
LzsgfTsKIAkJOTdCQzZBNEQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudFN5bmMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMEIx
NTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudFN5bmMuY3BwICovOyB9OwogCQk5N0JDNkE0
RTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50U3luYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMEMxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFN0YXRlbWVudFN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBNEYxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QkM2QTBEMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbi5jcHAg
Ki87IH07CiAJCTk3QkM2QTUwMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMEUxNTA1
RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uLmggKi87IH07Ci0JCUZFRTE4MTEzMTZDMzE5
RTgwMDA4NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVFMTgxMTExNkMzMTlFODAwMDg0ODQ5IC8q
IFNRTFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgKi87IH07Ci0JCUZFRTE4MTE0MTZDMzE5RTgwMDA4
NDg0OSAvKiBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTE4MTEyMTZDMzE5RTgwMDA4NDg0OSAvKiBTUUxUcmFu
c2FjdGlvbkJhY2tlbmQuaCAqLzsgfTsKLQkJRkVBRDdEODcxNkMzMzlFRTAwRDQ2NzBCIC8qIFNR
TFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODUxNkMzMzlFRTAwRDQ2NzBCIC8qIFNRTFRyYW5zYWN0
aW9uQmFja2VuZFN5bmMuY3BwICovOyB9OwotCQlGRUFEN0Q4ODE2QzMzOUVFMDBENDY3MEIgLyog
U1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODYxNkMzMzlFRTAwRDQ2NzBCIC8qIFNRTFRyYW5zYWN0
aW9uQmFja2VuZFN5bmMuaCAqLzsgfTsKIAkJOTdCQzZBNTIxNTA1RjA4MTAwMUI3NEFDIC8qIFNR
TFRyYW5zYWN0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3QkM2QTEwMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrLmggKi87IH07CiAJCTk3QkM2QTU0MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2Fj
dGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5N0JDNkExMjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25DbGllbnQuY3Bw
ICovOyB9OwogCQk5N0JDNkE1NTE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25DbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3QkM2
QTEzMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5oICovOyB9OwogCQk5
N0JDNkE1NjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkExNDE1
MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi87IH07CiAJ
CTk3QkM2QTU3MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkExNTE1
MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovOyB9OwogCQk5
N0JDNkE1ODE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkExNjE1
MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmggKi87IH07Ci0J
CUZFMzZGRDE4MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxNDE2Qzc4MjY0
MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZS5oICovOyB9OwotCQlGRTM2RkQxNjE2Qzc4
MjY1MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUzNkZEMTIxNkM3ODI2NDAwRjg4
N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCAqLzsgfTsKLQkJRkUzNkZEMTcx
NkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQxMzE2Qzc4MjY0MDBG
ODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAqLzsgfTsKIAkJOTdCQzZBNUEx
NTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0JDNkExODE1MDVGMDgxMDAxQjc0QUMg
LyogU1FMVHJhbnNhY3Rpb25TeW5jLmNwcCAqLzsgfTsKIAkJOTdCQzZBNUIxNTA1RjA4MTAwMUI3
NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdCQzZBMTkxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0
aW9uU3luYy5oICovOyB9OwogCQk5N0JDNkE1RDE1MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNh
Y3Rpb25TeW5jQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3QkM2QTFCMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvblN5bmND
YWxsYmFjay5oICovOyB9OwpAQCAtNDY2Niw4ICs0NjU2LDggQEAKIAkJQUEyQTVBRDUxNkE0ODYx
NDAwOTc1QTI1IC8qIFNwZWVjaFN5bnRoZXNpcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTJBNUFCRDE2QTQ4NUQ1MDA5NzVBMjUgLyogU3BlZWNo
U3ludGhlc2lzLmNwcCAqLzsgfTsKIAkJQUEyQTVBRDYxNkE0ODYxNjAwOTc1QTI1IC8qIERPTVdp
bmRvd1NwZWVjaFN5bnRoZXNpcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUEyQTVBQjkxNkE0ODVENTAwOTc1QTI1IC8qIERPTVdpbmRvd1NwZWVjaFN5
bnRoZXNpcy5oICovOyB9OwogCQlBQTJBNUFENzE2QTQ4NjFBMDA5NzVBMjUgLyogRE9NV2luZG93
U3BlZWNoU3ludGhlc2lzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEFBMkE1QUI4MTZBNDg1RDUwMDk3NUEyNSAvKiBET01XaW5kb3dTcGVlY2hTeW50
aGVzaXMuY3BwICovOyB9OwotCQlBQTQ3OEE3RjE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdEMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlck1hYy5oICovOyB9OwotCQlBQTQ3OEE4MDE2Q0Q3MEMzMDA3RDFCQjQg
LyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTQ3OEE3RTE2Q0Q3MEMzMDA3RDFCQjQgLyog
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gKi87IH07CisJCUFBNDc4QTdGMTZD
RDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NzhBN0QxNkNENzBDMzAw
N0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmggKi87IH07CisJCUFBNDc4
QTgwMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNDc4QTdFMTZD
RDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSAqLzsgfTsK
IAkJQUE0QzNBNzYwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQTRDM0E3NDBCMkIxNjc5MDAy
MzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQUE0QzNBNzcwQjJCMTY3OTAwMjMz
NEEyIC8qIFN0eWxlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUE0QzNBNzUwQjJCMTY3OTAwMjMzNEEyIC8qIFN0eWxlRWxlbWVudC5oICov
OyB9OwogCQlBQTVGM0I4RDE2Q0MzM0QxMDA0NTVFQjAgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXplck1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFBRTI3Qjc1MTZDQkZDMEQwMDYyMzA0MyAvKiBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpemVyTW9j
ay5oICovOyB9OwpAQCAtNjU0MCwxNCArNjUzMCwxNCBAQAogCQlGQzU0RDA1ODE2QTc2NzZFMDA1
NzVFNEQgLyogSlNDU1NTdXBwb3J0c1J1bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZDODQ4MDJFMTY3QUI0NDQwMDhDRDEwMCAvKiBKU0NTU1N1cHBv
cnRzUnVsZS5oICovOyB9OwogCQlGQzYzQkRCMzE2N0FBQkFDMDBGOTM4MEYgLyogQ1NTU3VwcG9y
dHNSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZDNjNCREIwMTY3QUFCQUMwMEY5MzgwRiAvKiBDU1NTdXBwb3J0c1J1bGUuY3BwICovOyB9Owog
CQlGQzdFNjZFOTE2ODBFRjFGMDAyODM3MTYgLyogSlNDU1NTdXBwb3J0c1J1bGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkM4NDgwMkQxNjdBQjQ0
NDAwOENEMTAwIC8qIEpTQ1NTU3VwcG9ydHNSdWxlLmNwcCAqLzsgfTsKLQkJRkNEODgzMkExNkE0
OUY4MjAwOTYyMjI3IC8qIERPTUNTU1N1cHBvcnRzUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkNEODgzMjgxNkE0OUY4MjAwOTYyMjI3IC8qIERP
TUNTU1N1cHBvcnRzUnVsZS5oICovOyB9OwotCQlGQ0Q4ODMyQjE2QTQ5RjgyMDA5NjIyMjcgLyog
RE9NQ1NTU3VwcG9ydHNSdWxlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkNEODgzMjkxNkE0OUY4MjAwOTYyMjI3IC8qIERPTUNTU1N1cHBvcnRzUnVs
ZS5tbSAqLzsgfTsKLQkJRkNEODgzMkMxNkE0OUZCMDAwOTYyMjI3IC8qIERPTUNTU1N1cHBvcnRz
UnVsZS5oIGluIENvcHkgR2VuZXJhdGVkIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkNEODgzMjgxNkE0OUY4MjAwOTYyMjI3IC8qIERPTUNTU1N1cHBvcnRzUnVs
ZS5oICovOyB9OwotCQlGQ0VCQkFBQjE2QTQ5NjdBMDBGQTIwQTYgLyogRE9NQ1NTU3VwcG9ydHNS
dWxlSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZDRUJCQUFBMTZBNDk2N0EwMEZBMjBBNiAvKiBET01DU1NTdXBwb3J0c1J1bGVJbnRlcm5h
bC5oICovOyB9OwogCQlGQzlBMEY3NDE2NDA5NENGMDAzRDZCOEQgLyogRE9NV2luZG93Q1NTLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZDOUEwRjcx
MTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuY3BwICovOyB9OwogCQlGQzlBMEY3NTE2
NDA5NENGMDAzRDZCOEQgLyogRE9NV2luZG93Q1NTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzlBMEY3MjE2NDA5NENGMDAzRDZCOEQgLyogRE9NV2lu
ZG93Q1NTLmggKi87IH07CiAJCUZDOUUwRTREMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTVdpbmRv
d0NTUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkM5
RTBFNEIxNjQxOUMxRTAwMzkyQkUzIC8qIEpTRE9NV2luZG93Q1NTLmggKi87IH07CiAJCUZDOUUw
RTUxMTY0MTlDN0YwMDM5MkJFMyAvKiBKU0RPTVdpbmRvd0NTUy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzlFMEU0QTE2NDE5QzFFMDAzOTJCRTMg
LyogSlNET01XaW5kb3dDU1MuY3BwICovOyB9OworCQlGQ0Q4ODMyQTE2QTQ5RjgyMDA5NjIyMjcg
LyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQ0Q4ODMyODE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNS
dWxlLmggKi87IH07CisJCUZDRDg4MzJCMTZBNDlGODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0
c1J1bGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
Q0Q4ODMyOTE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLm1tICovOyB9Owor
CQlGQ0Q4ODMyQzE2QTQ5RkIwMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggaW4gQ29w
eSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
Q0Q4ODMyODE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggKi87IH07CisJ
CUZDRUJCQUFCMTZBNDk2N0EwMEZBMjBBNiAvKiBET01DU1NTdXBwb3J0c1J1bGVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkNFQkJBQUEx
NkE0OTY3QTAwRkEyMEE2IC8qIERPTUNTU1N1cHBvcnRzUnVsZUludGVybmFsLmggKi87IH07CiAJ
CUZEMDBEN0E0MTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMDBEN0EyMTRBM0Y2MTkwMDcz
NDAxMSAvKiBTaW5jUmVzYW1wbGVyLmNwcCAqLzsgfTsKIAkJRkQwMEQ3QTUxNEEzRjYxOTAwNzM0
MDExIC8qIFNpbmNSZXNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZEMDBEN0EzMTRBM0Y2MTkwMDczNDAxMSAvKiBTaW5jUmVzYW1wbGVyLmgg
Ki87IH07CiAJCUZEMDZERkE1MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5h
dGlvbk5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkQwNkRGQTMxMzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAgKi87IH07CkBAIC02Nzg4LDYgKzY3NzgsMTAgQEAKIAkJRkUxNkNGRDUxNjlEMURFRDAw
RDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkUxNkNGRDExNjlEMURFQzAwRDNBMEM3IC8qIERhdGFi
YXNlQmFja2VuZFN5bmMuY3BwICovOyB9OwogCQlGRTE2Q0ZENjE2OUQxREVEMDBEM0EwQzcgLyog
RGF0YWJhc2VCYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkUxNkNGRDIxNjlEMURFQzAwRDNBMEM3IC8qIERhdGFiYXNlQmFja2VuZFN5
bmMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlG
RTMzNzFBMjE2N0MxMUQ0MDBFREI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTMzNzFBMDE2N0MxMUQ0MDBF
REI3NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRkUzNkZEMTUxNkM3ODI2NTAwRjg4N0MxIC8qIENoYW5n
ZVZlcnNpb25EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTM2RkQxMTE2Qzc4MjY0MDBGODg3QzEgLyogQ2hhbmdlVmVyc2lvbkRhdGEuaCAqLzsg
fTsKKwkJRkUzNkZEMTYxNkM3ODI2NTAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNo
aW5lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
MzZGRDEyMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5jcHAg
Ki87IH07CisJCUZFMzZGRDE3MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRl
TWFjaGluZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUzNkZEMTMxNkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmgg
Ki87IH07CisJCUZFMzZGRDE4MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTM2RkQx
NDE2Qzc4MjY0MDBGODg3QzEgLyogU1FMVHJhbnNhY3Rpb25TdGF0ZS5oICovOyB9OwogCQlGRTQ1
NkYxODE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFNDU2RjE2MTY3N0Q3NEUwMDVFRERG
OSAvKiBEYXRhYmFzZU1hbmFnZXIuY3BwICovOyB9OwogCQlGRTQ1NkYxOTE2NzdENzRFMDA1RURE
RjkgLyogRGF0YWJhc2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTQ1NkYxNzE2NzdENzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2Vy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRkU2
RjZBQUYxNjlFMDU3NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU2RjZBQUQxNjlFMDU3
NTAwRkMzMEEyIC8qIERhdGFiYXNlQmFja2VuZENvbnRleHQuY3BwICovOyB9OwpAQCAtNjgwMyw2
ICs2Nzk3LDggQEAKIAkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYy
MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CiAJCUZFODBEQTcxMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpT
UG9zaXRpb25FcnJvci5jcHAgKi87IH07CiAJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsg
fTsKKwkJRkU4QTY3NDcxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4QTY3NDUx
NkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuY3BwICovOyB9OworCQlGRThB
Njc0ODE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4QTY3NDYxNkNERDE5RTAwOTMw
QkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuaCAqLzsgfTsKIAkJRkVBRDdEODcxNkMzMzlFRTAw
RDQ2NzBCIC8qIFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODUxNkMzMzlFRTAwRDQ2NzBCIC8q
IFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwICovOyB9OwogCQlGRUFEN0Q4ODE2QzMzOUVF
MDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBRDdEODYxNkMzMzlFRTAwRDQ2NzBCIC8q
IFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuaCAqLzsgfTsKIAkJRkVBRjY2NTQxNjc5NzAzMjAw
NjJEMEM1IC8qIERhdGFiYXNlU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NzUxNCw4ICs3NTEwLDggQEAKIAkJMDhGMkYwMDcxMjEzRTYxNzAwRENFQzQ4IC8qIFJlbmRlcklt
YWdlUmVzb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVu
ZGVySW1hZ2VSZXNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RjJG
MDA4MTIxM0U2MTcwMERDRUM0OCAvKiBSZW5kZXJJbWFnZVJlc291cmNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckltYWdlUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMDhGODU5RDIxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0ltYWdlQ2Fj
aGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHSW1hZ2VDYWNo
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA4Rjg1OUQzMTQ2M0Y5Q0QwMDY3
RDkzMyAvKiBTVkdJbWFnZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNWR0ltYWdlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDhGODU5RDIx
NDYzRjlDRDAwNjdEOTM0IC8qIFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ltYWdlRm9yQ29udGFpbmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDhGODU5RDMxNDYzRjlDRDAwNjdEOTMzIC8qIFNWR0lt
YWdlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHSW1hZ2VDYWNo
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwOEY4NTlEMzE0NjNGOUNEMDA2N0Q5
MzQgLyogU1ZHSW1hZ2VGb3JDb250YWluZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHSW1hZ2VGb3JDb250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDhGQjE3QzAxM0JDN0U5MTAwMDQwMDg2IC8qIFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQXR0cmlidXRlVG9Q
cm9wZXJ0eU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4RkIzRjgzMTNC
Qzc1NEMwMDk5RkMxOCAvKiBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0F0dHJpYnV0ZVRvUHJvcGVydHlNYXAuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgxMzMsOCArODEyOSw4IEBACiAJCTI5QTgxMjI0MEZC
QjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyOUE4MTIyNTBGQkI5QzFEMDA1MTAyOTMgLyogQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNj
ZXNzaWJpbGl0eUxpc3RCb3guaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEy
NDQwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyOUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMg
LyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTI5QTgxMjQ1MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTI5QTgxMjQ2MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlckJhc2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5QTgxMjQ3MEZCQjlDQTkwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVhPYmplY3RDYWNoZU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBQ0IyMTExNDNFNzEyODAwNkJD
QTVGIC8qIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTI5QUNCMjEzMTQzRTc0OTgwMDZCQ0E1RiAvKiBBY2Nlc3NpYmlsaXR5TW9ja09i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBY2Nlc3NpYmls
aXR5TW9ja09iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE3Niw3
ICsxMTE3Miw2IEBACiAJCTk3QjhGRkNGMTZBRTdGOTIwMDM4Mzg4RCAvKiBDaGFyYWN0ZXJSZWZl
cmVuY2VQYXJzZXJJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENo
YXJhY3RlclJlZmVyZW5jZVBhcnNlcklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdCQzY5RDYxNTA1RjA3NjAwMUI3NEFDIC8qIERhdGFiYXNlQmFja2VuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmQuY3BwOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5N0JDNjlENzE1MDVGMDc2MDAxQjc0QUMgLyogRGF0YWJhc2VC
YWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFja2Vu
ZC5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZUJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzNkZEMTExNkM3ODI2NDAwRjg4N0MxIC8qIENoYW5n
ZVZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENoYW5nZVZl
cnNpb25EYXRhLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25EYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OUQ4MTUwNUYwNzYwMDFCNzRB
QyAvKiBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBDaGFuZ2VWZXJzaW9uV3JhcHBlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTdCQzY5RDkxNTA1RjA3NjAwMUI3NEFDIC8qIENoYW5nZVZlcnNpb25XcmFwcGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENoYW5nZVZlcnNpb25XcmFwcGVyLmg7
IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0NoYW5nZVZlcnNpb25XcmFwcGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2OURFMTUwNUYwODEwMDFCNzRBQyAvKiBEYXRh
YmFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZS5j
cHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTExMjE3LDggKzExMjEyLDYgQEAKIAkJOTdCQzZBMDQxNTA1RjA4
MTAwMUI3NEFDIC8qIFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFt
ZSA9IFNRTFJlc3VsdFNldFJvd0xpc3QuaWRsOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9T
UUxSZXN1bHRTZXRSb3dMaXN0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdC
QzZBMDUxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFN0YXRlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxTdGF0ZW1lbnQuY3BwOyBwYXRoID0gTW9kdWxlcy93
ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5N0JDNkEwNjE1MDVGMDgxMDAxQjc0QUMgLyogU1FMU3RhdGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFN0YXRlbWVudC5oOyBwYXRoID0gTW9kdWxlcy93ZWJk
YXRhYmFzZS9TUUxTdGF0ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkU4
QTY3NDUxNkNERDE5RTAwOTMwQkY4IC8qIFNRTFN0YXRlbWVudEJhY2tlbmQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU1FMU3RhdGVtZW50QmFja2VuZC5jcHA7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJhY2tlbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlGRThBNjc0NjE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3Rh
dGVtZW50QmFja2VuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxTdGF0
ZW1lbnRCYWNrZW5kLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFN0YXRlbWVudEJh
Y2tlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMDcxNTA1RjA4MTAw
MUI3NEFDIC8qIFNRTFN0YXRlbWVudENhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFNRTFN0YXRlbWVudENhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFi
YXNlL1NRTFN0YXRlbWVudENhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3QkM2QTA4MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRDYWxsYmFjay5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBuYW1lID0gU1FMU3RhdGVtZW50Q2FsbGJhY2suaWRsOyBwYXRoID0gTW9k
dWxlcy93ZWJkYXRhYmFzZS9TUUxTdGF0ZW1lbnRDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk3QkM2QTA5MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRF
cnJvckNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyMjgs
MTAgKzExMjIxLDYgQEAKIAkJOTdCQzZBMEQxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0
aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFRyYW5zYWN0
aW9uLmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkEwRTE1MDVGMDgxMDAxQjc0QUMgLyog
U1FMVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJh
bnNhY3Rpb24uaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMEYxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFRyYW5zYWN0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2FjdGlv
bi5pZGw7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVFMTgxMTExNkMzMTlFODAwMDg0ODQ5IC8qIFNR
TFRyYW5zYWN0aW9uQmFja2VuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBTUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFz
ZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQlGRUUxODExMjE2QzMxOUU4MDAwODQ4NDkgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uQmFja2VuZC5oOyBw
YXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkJhY2tlbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkVBRDdEODUxNkMzMzlFRTAwRDQ2NzBCIC8qIFNRTFRy
YW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQlGRUFEN0Q4NjE2QzMzOUVFMDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNr
ZW5kU3luYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxUcmFuc2FjdGlv
bkJhY2tlbmRTeW5jLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
QmFja2VuZFN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMTAxNTA1
RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5oOyBwYXRoID0gTW9kdWxl
cy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3QkM2QTExMTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkNh
bGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkNhbGxiYWNr
LmlkbDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3QkM2QTEyMTUwNUYwODEwMDFCNzRB
QyAvKiBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkNsaWVudC5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL1NRTFRyYW5zYWN0aW9uQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTExMjQwLDkgKzExMjI5LDYgQEAKIAkJOTdCQzZBMTUxNTA1RjA4MTAwMUI3NEFDIC8q
IFNRTFRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gU1FMVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRh
YmFzZS9TUUxUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk3QkM2QTE2MTUwNUYwODEwMDFCNzRBQyAvKiBTUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU1FMVHJhbnNhY3Rpb25F
cnJvckNhbGxiYWNrLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
RXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkExNzE1
MDVGMDgxMDAxQjc0QUMgLyogU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsOyBwYXRoID0g
TW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM2RkQxNDE2Qzc4MjY0MDBGODg3QzEgLyogU1FM
VHJhbnNhY3Rpb25TdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTUUxU
cmFuc2FjdGlvblN0YXRlLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0
aW9uU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRkUzNkZEMTIxNkM3ODI2
NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmNwcDsg
cGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGRTM2RkQxMzE2Qzc4MjY0MDBGODg3QzEg
LyogU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaDsgcGF0aCA9IE1vZHVsZXMvd2Vi
ZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25TdGF0ZU1hY2hpbmUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTdCQzZBMTgxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3lu
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlv
blN5bmMuY3BwOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxUcmFuc2FjdGlvblN5bmMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5N0JDNkExOTE1MDVGMDgxMDAxQjc0
QUMgLyogU1FMVHJhbnNhY3Rpb25TeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFNRTFRyYW5zYWN0aW9uU3luYy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9TUUxU
cmFuc2FjdGlvblN5bmMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdCQzZBMUEx
NTA1RjA4MTAwMUI3NEFDIC8qIFNRTFRyYW5zYWN0aW9uU3luYy5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBuYW1lID0gU1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25TeW5jLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyMDY3LDggKzEyMDUzLDggQEAKIAkJQUEyQTVBQzYxNkE0ODVENTAwOTc1QTI1IC8qIFNwZWVj
aFN5bnRoZXNpc1ZvaWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmNwcDsgcGF0aCA9IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUEyQTVBQzcxNkE0ODVENTAwOTc1QTI1IC8q
IFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNwZWVjaFN5bnRoZXNpc1Zv
aWNlLmg7IHBhdGggPSBNb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNWb2ljZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTJBNUFDODE2QTQ4NUQ1MDA5NzVBMjUgLyogU3Bl
ZWNoU3ludGhlc2lzVm9pY2UuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFNwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbDsgcGF0
aCA9IE1vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1ZvaWNlLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQUE0NzhBN0QxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUFBNDc4QTdFMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0g
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUFBNDc4QTdEMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQTQ3
OEE3RTE2Q0Q3MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBQTRDM0E3NDBC
MkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHlsZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBQTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQUE1RjNCOTAxNkNDNUJFQjAwNDU1RUIwIC8qIENvcmVGb3VuZGF0
aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZvdW5kYXRpb24uZnJhbWV3b3Jr
OyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3JlRm91
bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDI2MSwx
NCArMTQyNDcsMTQgQEAKIAkJRkM2M0JEQjIxNjdBQUJBQzAwRjkzODBGIC8qIENTU1N1cHBvcnRz
UnVsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTU3VwcG9ydHNSdWxlLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM4NDgwMkQxNjdBQjQ0NDAwOENEMTAwIC8qIEpT
Q1NTU3VwcG9ydHNSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTQ1NTU3VwcG9ydHNSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkM4
NDgwMkUxNjdBQjQ0NDAwOENEMTAwIC8qIEpTQ1NTU3VwcG9ydHNSdWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ1NTU3VwcG9ydHNSdWxlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUZDRDg4MzI4MTZBNDlGODIwMDk2MjIyNyAvKiBET01DU1NTdXBwb3J0
c1J1bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTU3VwcG9ydHNS
dWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUZDRDg4MzI5MTZBNDlGODIwMDk2
MjIyNyAvKiBET01DU1NTdXBwb3J0c1J1bGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBET01DU1NTdXBwb3J0c1J1bGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUZDRUJCQUFBMTZBNDk2N0EwMEZBMjBBNiAvKiBET01DU1NTdXBwb3J0c1J1bGVJ
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01DU1NTdXBwb3J0
c1J1bGVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQzlBMEY3MTE2
NDA5NENGMDAzRDZCOEQgLyogRE9NV2luZG93Q1NTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERPTVdpbmRvd0NTUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUZDOUEwRjcyMTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93Q1NTLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUZDOUEwRjczMTY0MDk0Q0YwMDNENkI4RCAvKiBET01XaW5kb3dDU1Mu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvd0NTUy5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZDOUUwRTRBMTY0MTlDMUUwMDM5MkJFMyAvKiBKU0RPTVdpbmRv
d0NTUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTVdpbmRv
d0NTUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZDOUUwRTRCMTY0MTlDMUUw
MDM5MkJFMyAvKiBKU0RPTVdpbmRvd0NTUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0RPTVdpbmRvd0NTUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQ0Q4
ODMyODE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9ydHNSdWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUNTU1N1cHBvcnRzUnVsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGQ0Q4ODMyOTE2QTQ5RjgyMDA5NjIyMjcgLyogRE9NQ1NTU3VwcG9y
dHNSdWxlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NQ1NT
U3VwcG9ydHNSdWxlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQ0VCQkFBQTE2
QTQ5NjdBMDBGQTIwQTYgLyogRE9NQ1NTU3VwcG9ydHNSdWxlSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ1NTU3VwcG9ydHNSdWxlSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkNFQkNENzExNjIzQTc5MTAwMjk5NjVFIC8qIENT
U0dyYW1tYXIueS5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IENTU0dyYW1t
YXIueS5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkNFQkNENzIxNjIzQTc5MTAw
Mjk5NjVFIC8qIENTU0dyYW1tYXIueS5pbmNsdWRlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUueWFj
YzsgcGF0aCA9IENTU0dyYW1tYXIueS5pbmNsdWRlczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRkQwMEQ3QTIxNEEzRjYxOTAwNzM0MDExIC8qIFNpbmNSZXNhbXBsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2luY1Jlc2FtcGxlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDUzOSw2ICsxNDUyNSwxMCBAQAogCQlGRTE2Q0ZE
MTE2OUQxREVDMDBEM0EwQzcgLyogRGF0YWJhc2VCYWNrZW5kU3luYy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRTeW5jLmNwcDsgcGF0aCA9
IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3luYy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFMTZDRkQyMTY5RDFERUMwMEQzQTBDNyAvKiBEYXRhYmFzZUJh
Y2tlbmRTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERhdGFiYXNlQmFj
a2VuZFN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kU3lu
Yy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTMzNzFBMDE2N0MxMUQ0MDBFREI3
NTIgLyogRGF0YWJhc2VCYXNpY1R5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERhdGFiYXNlQmFzaWNUeXBlcy5oOyBwYXRoID0gTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZUJhc2ljVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNkZEMTEx
NkM3ODI2NDAwRjg4N0MxIC8qIENoYW5nZVZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IENoYW5nZVZlcnNpb25EYXRhLmg7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL0NoYW5nZVZlcnNpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFMzZGRDEyMTZDNzgyNjQwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGluZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlvblN0
YXRlTWFjaGluZS5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9u
U3RhdGVNYWNoaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkUzNkZEMTMx
NkM3ODI2NDAwRjg4N0MxIC8qIFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmg7IHBh
dGggPSBNb2R1bGVzL3dlYmRhdGFiYXNlL1NRTFRyYW5zYWN0aW9uU3RhdGVNYWNoaW5lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMzZGRDE0MTZDNzgyNjQwMEY4ODdDMSAvKiBT
UUxUcmFuc2FjdGlvblN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNR
TFRyYW5zYWN0aW9uU3RhdGUuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNh
Y3Rpb25TdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTQ1NkYxNjE2NzdE
NzRFMDA1RURERjkgLyogRGF0YWJhc2VNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERhdGFiYXNlTWFuYWdlci5jcHA7IHBhdGggPSBNb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFNDU2RjE3MTY3N0Q3NEUwMDVFRERGOSAvKiBEYXRhYmFzZU1hbmFnZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VNYW5hZ2VyLmg7IHBhdGggPSBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTZGNkFBRDE2OUUwNTc1MDBGQzMwQTIgLyogRGF0YWJhc2VCYWNrZW5kQ29udGV4dC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBEYXRhYmFzZUJhY2tlbmRD
b250ZXh0LmNwcDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VCYWNrZW5kQ29u
dGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDU1NSw2ICsxNDU0NSw4
IEBACiAJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9u
RXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTgwREE2RTBFOUM0NzJG
MDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RThBNjc0NTE2Q0REMTlFMDA5MzBCRjggLyogU1FMU3RhdGVtZW50QmFja2VuZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxTdGF0ZW1lbnRCYWNrZW5kLmNwcDsg
cGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50QmFja2VuZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFOEE2NzQ2MTZDREQxOUUwMDkzMEJGOCAvKiBTUUxT
dGF0ZW1lbnRCYWNrZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNRTFN0
YXRlbWVudEJhY2tlbmQuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMU3RhdGVtZW50
QmFja2VuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRUFEN0Q4NTE2QzMzOUVF
MDBENDY3MEIgLyogU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTUUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmNwcDsgcGF0
aCA9IE1vZHVsZXMvd2ViZGF0YWJhc2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFQUQ3RDg2MTZDMzM5RUUwMEQ0NjcwQiAvKiBT
UUxUcmFuc2FjdGlvbkJhY2tlbmRTeW5jLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFNRTFRyYW5zYWN0aW9uQmFja2VuZFN5bmMuaDsgcGF0aCA9IE1vZHVsZXMvd2ViZGF0YWJh
c2UvU1FMVHJhbnNhY3Rpb25CYWNrZW5kU3luYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRUFGNjY1MzE2Nzk3MDA3MDA2MkQwQzUgLyogRGF0YWJhc2VTZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRGF0YWJhc2VTZXJ2ZXIuaDsgcGF0aCA9IE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NDI5LDEwICsxNTQyMSwxMCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMjlBODEy
NDQwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0gKi8sCiAJCQkJ
MjlBODEyNDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVNYWMubW0gKi8sCi0JCQkJ
MjlBODEyNDUwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
LmggKi8sCi0JCQkJMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tICovLAotCQkJCUFBNDc4QTdEMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oICovLAotCQkJCUFBNDc4QTdFMTZDRDcwQzMw
MDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAqLywKKwkJCQky
OUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJC
YXNlLmggKi8sCisJCQkJMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5tbSAqLywKKwkJCQlBQTQ3OEE3RDE2Q0Q3MEMzMDA3RDFCQjQg
LyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCAqLywKKwkJCQlBQTQ3OEE3RTE2Q0Q3
MEMzMDA3RDFCQjQgLyogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gKi8sCiAJCQkp
OwogCQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNDk1NCw3
ICsyNDk0Niw3IEBACiAJCQkJMUFFMkFCMjIwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTExhYmVs
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFFMkFCMjQwQTFDRTYzQjAwQjQyQjI1IC8q
IEpTSFRNTExlZ2VuZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRTJBQjI2MEExQ0U2
M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUFBNDc4
QTdGMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQUE0NzhBN0YxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFN0IwRDBBMTlE
NjA2MDA3RkI4QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RTJBQjI4MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxNYXBFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzQ5MUI3OTBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjY0MTksNyArMjY0MTEsNyBAQAogCQkJCUZEN0YyOTk0MTNE
NEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ3
RjI5OTcxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZENTgxRkI1MTUyMEY5M0IwMDNBN0E3NSAvKiBXYXZlVGFibGUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTI5QTgxMjQ5MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjlBODEyNDkwRkJCOUNBOTAwNTEw
MjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNGMTk5QTgwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVGcmFtZVZpZXcuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNEQzY5RERBMTYzNzFGRDQwMDdDMzhERiAvKiBXZWJDb3JlRnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RDNjlERDYxNjMyMDI2
QzAwN0MzOERGIC8qIFdlYkNvcmVGdWxsU2NyZWVuV2FybmluZ1ZpZXcuaCBpbiBIZWFkZXJzICov
LApAQCAtMjkxOTQsNyArMjkxODYsNyBAQAogCQkJCTkzMUNCRDEwMTYxQTQ0RTkwMEU0Qzg3NCAv
KiBTY3JvbGxpbmdTdGF0ZVRyZWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGNjJGMjUxNERB
RkU5RTAwNDE1NTZDIC8qIFNjcm9sbGluZ1RocmVhZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUY2MkYyNDE0REFGRTkxMDA0MTU1NkMgLyogU2Nyb2xsaW5nVGhyZWFkTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJQUE0NzhBODAxNkNENzBDMzAwN0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQUE0NzhBODAxNkNENzBDMzAw
N0QxQkI0IC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFBQUREQTMxNERCNDA5RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTNDMzhDMDQxNjQ0NzNERDAwMDkxRUIyIC8qIFNjcm9sbGluZ1RyZWVG
aXhlZE5vZGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUFBRERFMzE0REM4QzhGMDBBRjY0QjMg
LyogU2Nyb2xsaW5nVHJlZU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yOTYyNCw3ICsyOTYx
Niw3IEBACiAJCQkJRkQ3RjI5OTMxM0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJOb2RlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEN0YyOTk2MTNENEMwQ0IwMEFEOTUzNSAvKiBXYXZlU2hh
cGVyUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENTgxRkI0MTUyMEY5M0IwMDNB
N0E3NSAvKiBXYXZlVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjlBODEyNEEwRkJCOUNB
OTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQmFzZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNEN0UwNTIyMTY1MUMyODIwMEMx
MjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlD
REM2OUREQjE2MzcxRkQ0MDA3QzM4REYgLyogV2ViQ29yZUZ1bGxTY3JlZW5QbGFjZWhvbGRlclZp
ZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlDREM2OURENzE2MzIwMjZDMDA3QzM4REYgLyogV2Vi
Q29yZUZ1bGxTY3JlZW5XYXJuaW5nVmlldy5tbSBpbiBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="208988"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="208997"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>