<?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>232415</bug_id>
          
          <creation_ts>2021-10-27 19:19:43 -0700</creation_ts>
          <short_desc>Isolated tree mode: Dispatch all calls to [WebAccessibilityObjectWrapper accessibilityAttributeValue] in WTR::AccessibilityUIElement to the AX thread.</short_desc>
          <delta_ts>2021-10-28 13:34:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809533</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-27 19:19:43 -0700</bug_when>
    <thetext>Isolated tree mode: Dispatch all calls to [WebAccessibilityObjectWrapper accessibilityAttributeValue] in WTR::AccessibilityUIElement to the AX thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809534</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-27 19:19:55 -0700</bug_when>
    <thetext>&lt;rdar://problem/84738483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809539</commentid>
    <comment_count>2</comment_count>
      <attachid>442665</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-27 19:29:29 -0700</bug_when>
    <thetext>Created attachment 442665
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809558</commentid>
    <comment_count>3</comment_count>
      <attachid>442665</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-10-27 20:51:31 -0700</bug_when>
    <thetext>Comment on attachment 442665
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:341
&gt; +    return ::WTR::attributeValue(m_element.get(), attributeName);

do we need the preceding colons? ::WTR

&gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:787
&gt; +    id description = descriptionOfValue(attributeValue(@&quot;AXLanguage&quot;), m_element.get());

do you want to make descriptionOfValue also take only one argument, and handle m_element inside of it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809660</commentid>
    <comment_count>4</comment_count>
      <attachid>442705</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-28 07:35:56 -0700</bug_when>
    <thetext>Created attachment 442705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809663</commentid>
    <comment_count>5</comment_count>
      <attachid>442706</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-28 07:42:23 -0700</bug_when>
    <thetext>Created attachment 442706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809664</commentid>
    <comment_count>6</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-10-28 07:46:28 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #3)
&gt; Comment on attachment 442665 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=442665&amp;action=review
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:341
&gt; &gt; +    return ::WTR::attributeValue(m_element.get(), attributeName);
&gt; 
&gt; do we need the preceding colons? ::WTR

Nope, removed it. When trying to put it in the header as an inline, the compiler was complaining about it, but ended up moving it to the .mm and now the compiler is fine without the ::.

&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:787
&gt; &gt; +    id description = descriptionOfValue(attributeValue(@&quot;AXLanguage&quot;), m_element.get());
&gt; 
&gt; do you want to make descriptionOfValue also take only one argument, and
&gt; handle m_element inside of it?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809813</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-28 13:34:18 -0700</bug_when>
    <thetext>Committed r284998 (243644@main): &lt;https://commits.webkit.org/243644@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442706.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442665</attachid>
            <date>2021-10-27 19:29:29 -0700</date>
            <delta_ts>2021-10-28 07:35:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232415-20211027222928.patch</filename>
            <type>text/plain</type>
            <size>49464</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIxN2JjMjBlOGE1OGE3
NWYzZWRjYjY1NjRjOWI2MmJlYTBjZTA3ZS4uM2IyZmRiMzRkNjM3ZmUyMjM2ZWE5ODBiMWZkYzg3
OTNhYzFjMjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTEwLTI3ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZCB0
cmVlIG1vZGU6IERpc3BhdGNoIGFsbCBjYWxscyB0byBbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlXSBpbiBXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgdG8gdGhlIEFYIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjQxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIEFTU0VSVFMgdG8gdmVyaWZ5IHRoYXQgQVhJc29sYXRl
ZFRyZWU6Om5vZGVGb3JJRCBhbmQKKyAgICAgICAgYXBwbHlQZW5kaW5nQ2hhbmdlcyBhcmUgY2Fs
bGVkIG9uIHRoZSBBWCB0aHJlYWQgZXhjbHVzaXZlbHkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
WElzb2xhdGVkVHJlZTo6bm9kZUZvcklEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNv
bGF0ZWRUcmVlOjphcHBseVBlbmRpbmdDaGFuZ2VzKToKKwogMjAyMS0xMC0yNyAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRWxpbWluYXRlIGR1cGxp
Y2F0ZWQgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBpbiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJ
c29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IGMxZGJhNDExMmI2NDYxNjlmZGEyNmFiNjVlN2M2
NTUwYzg1ZTAzMGEuLjhlYzkxM2I5YzFlZThiOWIwOWY1MDk3N2ZhZWUxZDk5MmZlZTkwZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVk
dHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTE0Miw2ICsxNDIsNyBAQCBSZWZQdHI8QVhJc29s
YXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIFJlZlB0cjxBWElzb2xhdGVkT2JqZWN0PiBBWElzb2xhdGVkVHJlZTo6bm9kZUZvcklE
KEFYSUQgYXhJRCkgY29uc3QKIHsKICAgICAvLyBJbiBpc29sYXRlZCB0cmVlIG1vZGUgMiwgb25s
eSBhY2Nlc3MgbV9yZWFkZXJUaHJlYWROb2RlTWFwIG9uIHRoZSBBWCB0aHJlYWQuCisgICAgQVNT
RVJUKG1fdXNlZE9uQVhUaHJlYWQgPyAhaXNNYWluVGhyZWFkKCkgOiBpc01haW5UaHJlYWQoKSk7
CiAgICAgaWYgKG1fdXNlZE9uQVhUaHJlYWQgJiYgaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCkBAIC00NDEsNiArNDQyLDcgQEAgdm9pZCBBWElzb2xhdGVkVHJlZTo6
YXBwbHlQZW5kaW5nQ2hhbmdlcygpCiAgICAgQVhUUkFDRSgiQVhJc29sYXRlZFRyZWU6OmFwcGx5
UGVuZGluZ0NoYW5nZXMiKTsKIAogICAgIC8vIEluIGlzb2xhdGVkIHRyZWUgbW9kZSAyLCBvbmx5
IGFwcGx5IHBlbmRpbmcgY2hhbmdlcyBvbiB0aGUgQVggdGhyZWFkLgorICAgIEFTU0VSVChtX3Vz
ZWRPbkFYVGhyZWFkID8gIWlzTWFpblRocmVhZCgpIDogaXNNYWluVGhyZWFkKCkpOwogICAgIGlm
IChtX3VzZWRPbkFYVGhyZWFkICYmIGlzTWFpblRocmVhZCgpKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2NjQw
Y2Y0ZGY0YTQ3MjRlNDRhNjAwMzIzOTQ3MmI4Y2YyMDJiNzIxLi41YWFmMmY1MTMzODNmYWFjY2U3
NDU0YjEyOTQ4YTU4MDczMTkxZGY3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAxIEBACisyMDIxLTEwLTI3ICBBbmRyZXMgR29u
emFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZCB0cmVlIG1v
ZGU6IERpc3BhdGNoIGFsbCBjYWxscyB0byBbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlXSBpbiBXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQgdG8gdGhlIEFYIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMjQxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHNpbXVsYXRlIHJ1bm5pbmcgYWNjZXNz
aWJpbGl0eSBsYXlvdXQgdGVzdHMgb24gdGhlCisgICAgICAgIHNlY29uZGFyeSBBWCB0aHJlYWQu
CisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvbUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRMaW5rZWRVSUVsZW1lbnRzKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRl
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW4g
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJl
bik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMgY29u
c3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJz
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEZv
ckF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVsZW1lbnRGb3JBdHRyaWJ1dGVBdEluZGV4IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6ZGV0YWlsc0VsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZXJyb3JNZXNzYWdlRWxlbWVudHMgY29uc3QpOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0
cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJp
bmdBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om51bWJlckF0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c3Vicm9sZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnJvbGVEZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNvbXB1dGVkUm9sZVN0cmluZyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnRpdGxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVz
Y3JpcHRpb24pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRh
dGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmlu
Z1ZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2Up
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp5KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6d2lkdGgpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWlnaHQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1Bv
aW50WCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRZ
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVJlY3RzQW5kVGV4
dCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVl
IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24pOgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1i
ZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1JlcXVpcmVkIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzSW5kZXRlcm1pbmF0ZSBj
b25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQg
Y29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjdXJyZW50U3Rh
dGVWYWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNv
cnREaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoaWVyYXJjaGljYWxMZXZlbCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNsYXNzTGlzdCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnNwZWFrQXMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjphcmlhSXNHcmFiYmVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6YXJpYURyb3BFZmZlY3RzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycyk6CisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlJvd0hlYWRlcnMpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5zKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93cyk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZlZpc2libGVDZWxs
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhl
YWRlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4SW5UYWJs
ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0luZGV4UmFuZ2Up
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5JbmRleFJhbmdl
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aG9yaXpvbnRhbFNjcm9s
bGJhciBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZlcnRp
Y2FsU2Nyb2xsYmFyIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VsZWN0ZWRUZXh0UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzZXRTZWxlY3RlZENoaWxkQXRJbmRleCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbkF0SW5kZXggY29uc3QpOgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVuY29kaW5nKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkpOgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc011bHRpU2VsZWN0YWJsZSBjb25zdCk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzT25TY3JlZW4gY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbWJlZGRlZEltYWdlRGVzY3JpcHRpb24gY29uc3Qp
OgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbWFnZU92ZXJsYXlFbGVt
ZW50cyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhhc1Bv
cHVwIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cG9wdXBW
YWx1ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cmVzZXRTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmVuZFRleHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpfY29udmVydE1h
dGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptYXRoUG9zdHNjcmlwdHNEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQcmVzY3JpcHRzRGVzY3JpcHRpb24gY29u
c3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUm9vdFJhZGlj
YW5kIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERl
c2NyaXB0aW9uIGNvbnN0KToKKwogMjAyMS0xMC0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9yZSBXUFQtc3R5bGUgZnV6enkgcGl4ZWwgbWF0
Y2hpbmcgZGF0YSBpbiBJbWFnZURpZmZSZXN1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgK
aW5kZXggZDM1NGU5ZDRkZDhiNjBlZmYzY2RlODBhZWZiZjZlY2Y3NWI3ZWIyOS4uNGQwMmRiNjZh
OGUxMzhhYmRmMGVkNmZjNWQxYmM0Mzc4NzU3NzgxNyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50LmgKQEAgLTM5Nyw2ICszOTcsMTAgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KFBsYXRmb3JtVUlFbGVtZW50KTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNv
bnN0IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQmKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBp
ZCBhdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqKSBjb25zdDsKKyNlbmRpZgorCiAjaWYgIVBMQVRG
T1JNKENPQ09BKSAmJiAhVVNFKEFUU1BJKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVu
dDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5k
ZXggMjUzM2NlZjJkZmE3MjhkNGUwNzhlZTllNTM1YjM0ZjJiMTU1NDlmNS4uZTNlMzMxYWFiMTMz
YjA1MTI0NDc3N2UxMTU1MzU5ODljYzkyY2NhMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCkBAIC0zMzYsOSArMzM2LDE0IEBAIHN0YXRpYyBOU0RpY3Rpb25h
cnkgKm1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVyaXplZEF0dHJpYnV0ZUZvckNyaXRlcmlhKEFj
Y2Vzc2liCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKK2lubGluZSBpZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0cmlidXRlTmFtZSkgY29u
c3QKK3sKKyAgICByZXR1cm4gOjpXVFI6OmF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwg
YXR0cmlidXRlTmFtZSk7Cit9CisKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpkb21JZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICBpZCB2YWx1ZSA9IGF0
dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5RE9NSWRlbnRpZmll
ckF0dHJpYnV0ZSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxp
dHlET01JZGVudGlmaWVyQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdS
ZWZdOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMzQ2LDE3ICszNTEsMTcgQEAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvbUlkZW50aWZpZXIoKSBj
b25zdAogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExpbmtlZFVJRWxlbWVudHMo
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRWZWN0b3IpCiB7
Ci0gICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eUxp
bmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUpKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNz
aWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUpKTsKIH0KIAogdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4+JiBlbGVtZW50VmVjdG9yKQogewotICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtl
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFsdWUobV9l
bGVtZW50LmdldCgpLCBAIkFYTGlua1VJRWxlbWVudHMiKSk7CisgICAgZWxlbWVudFZlY3RvciA9
IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1
ZShAIkFYTGlua1VJRWxlbWVudHMiKSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRlLCBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVudHMpIGNvbnN0CiB7Ci0g
ICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIFtOU1N0cmluZyBz
dHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1
dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOwogICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQogICAgICAgICBlbGVt
ZW50cyA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7
CiB9CkBAIC0zNjQsNyArMzY5LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRV
SUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUsIFYKIEpTVmFsdWVS
ZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW4oKSBjb25zdAogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBtYWtlSlNBcnJheShtYWtlVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFsdWUobV9lbGVtZW50Lmdl
dCgpLCBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSkpKTsKKyAgICByZXR1cm4gbWFr
ZUpTQXJyYXkobWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJp
YnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlKSkpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMzcyLDcgKzM3Nyw3
IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW4oKSBjb25zdAog
CiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikKIHsKLSAgICBlbGVtZW50
VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJp
YnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1
dGUpKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0
eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlKSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRyZW5XaXRo
UmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50VmVj
dG9yLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzkwLDcgKzM5NSw3
IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycygpIGNvbnN0
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pj4gZWxlbWVudHM7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVW
YWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNB
dHRyaWJ1dGUpOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5
Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKICAgICByZXR1cm4gbWFrZUpTQXJy
YXkoZWxlbWVudHMpOwpAQCAtNDAxLDcgKzQwNiw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gZWxl
bWVudHM7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5T
QWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGUpOworICAgIGlkIHZh
bHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5Q29sdW1uSGVhZGVyVUlFbGVtZW50
c0F0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNz
XV0pCiAgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KHZhbHVlKTsKICAgICByZXR1cm4gbWFrZUpTQXJyYXkoZWxlbWVudHMpOwpAQCAt
NDUxLDEzICs0NTYsMTMgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmQKIAogUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVsZW1lbnRGb3JBdHRy
aWJ1dGUoTlNTdHJpbmcqIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICBpZCBlbGVtZW50ID0gYXR0
cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBhdHRyaWJ1dGUpOworICAgIGlkIGVsZW1lbnQg
PSBhdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUpOwogICAgIHJldHVybiBlbGVtZW50ID8gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQpIDogUmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+KCk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleChOU1N0cmluZyogYXR0
cmlidXRlLCB1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICBOU0FycmF5KiBlbGVtZW50cyA9
IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgYXR0cmlidXRlKTsKKyAgICBOU0FycmF5
KiBlbGVtZW50cyA9IGF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIGluZGV4
IDwgZWxlbWVudHMuY291bnQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjcmVhdGUoW2VsZW1l
bnRzIG9iamVjdEF0SW5kZXg6aW5kZXhdKSA6IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PigpOwogfQogCkBAIC00NjksNyArNDc0LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVudEF0SW5kZXgodW4KIEpT
VmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGV0YWlsc0VsZW1lbnRzKCkgY29uc3QK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5ICplbGVtZW50cyA9
IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgQCJBWERldGFpbHNFbGVtZW50cyIpOwor
ICAgIE5TQXJyYXkgKmVsZW1lbnRzID0gYXR0cmlidXRlVmFsdWUoQCJBWERldGFpbHNFbGVtZW50
cyIpOwogICAgIGlmIChbZWxlbWVudHMgaXNLaW5kT2ZDbGFzczpOU0FycmF5LmNsYXNzXSkKICAg
ICAgICAgcmV0dXJuIG1ha2VKU0FycmF5KG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ+PihlbGVtZW50cykpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTQ4
MCw3ICs0ODUsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRldGFpbHNF
bGVtZW50cygpIGNvbnN0CiBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVycm9y
TWVzc2FnZUVsZW1lbnRzKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU0FycmF5ICplbGVtZW50cyA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwg
QCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIik7CisgICAgTlNBcnJheSAqZWxlbWVudHMgPSBhdHRy
aWJ1dGVWYWx1ZShAIkFYRXJyb3JNZXNzYWdlRWxlbWVudHMiKTsKICAgICBpZiAoW2VsZW1lbnRz
IGlzS2luZE9mQ2xhc3M6TlNBcnJheS5jbGFzc10pCiAgICAgICAgIHJldHVybiBtYWtlSlNBcnJh
eShtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oZWxlbWVudHMpKTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC01OTAsMTQgKzU5NSwxNCBAQCBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygp
CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJp
bmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogewot
ICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIGlkIHZhbHVlID0gYXR0cmli
dXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKICAg
ICBOU1N0cmluZyogdmFsdWVEZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZSh2YWx1ZSwg
bV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gW3ZhbHVlRGVzY3JpcHRpb24gY3JlYXRlSlNT
dHJpbmdSZWZdOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogewot
ICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIGlkIHZhbHVlID0gYXR0cmli
dXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKICAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJl
dHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIHJldHVybiBudWxscHRyOwpAQCAt
NjA1LDcgKzYxMCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlCiAKIGRvdWJsZSBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUpCiB7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIFtO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXSk7CisgICAgaWQgdmFsdWUg
PSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0
ZV0pOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuIFt2YWx1ZSBkb3VibGVWYWx1ZV07CiAgICAgcmV0dXJuIDA7CkBAIC02MjAs
MTMgKzYyNSwxMyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVu
dEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cgogCiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRl
VmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewotICAgIGlkIHZhbHVlID0gYXR0
cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5n
UmVmOmF0dHJpYnV0ZV0pOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoW05TU3RyaW5n
IHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y3JlYXRlKHZhbHVlKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKQogewotICAg
IGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRl
VmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKICAgICBp
ZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVy
biBbdmFsdWUgYm9vbFZhbHVlXTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC02OTgsNyArNzAzLDcg
QEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgTlNTdHJpbmcgKnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUo
bV9lbGVtZW50LmdldCgpLCBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlKSwgbV9lbGVtZW50
LmdldCgpKTsKKyAgICBOU1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlKSwgbV9lbGVtZW50LmdldCgpKTsK
ICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYUm9sZSIsIHJvbGUp
OwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzA4LDcgKzcxMyw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlKCkKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyAqc3Vicm9sZSA9IGRl
c2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNz
aWJpbGl0eVN1YnJvbGVBdHRyaWJ1dGUpLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5TU3RyaW5n
ICpzdWJyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJp
bGl0eVN1YnJvbGVBdHRyaWJ1dGUpLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25j
YXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhTdWJyb2xlIiwgc3Vicm9sZSk7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MTgsMjcgKzcyMywyNyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogcm9sZSA9IGRl
c2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkp
OworICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVl
KE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSksIG1fZWxlbWVudC5nZXQo
KSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNj
cmlwdGlvbiIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAg
IHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKCkKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRp
b25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklB
Um9sZSJdLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5TU3RyaW5nICpjb21wdXRlZFJvbGVTdHJp
bmcgPSBkZXNjcmlwdGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUoQCJBWEFSSUFSb2xlIiksIG1f
ZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIFtjb21wdXRlZFJvbGVTdHJpbmcgY3JlYXRlSlNT
dHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVy
biBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dGl0bGUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5T
U3RyaW5nKiB0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0sIG1fZWxlbWVu
dC5nZXQoKSk7CisgICAgTlNTdHJpbmcgKnRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJp
YnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlKSwgbV9lbGVtZW50LmdldCgp
KTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0
aXRsZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03NDgsNyArNzUzLDcgQEAg
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlw
dGlvbigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRp
b24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0
KCkpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZh
bHVlKE5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlKSwgbV9lbGVtZW50LmdldCgp
KTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYRGVzY3JpcHRp
b24iLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03NTgs
NyArNzYzLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRlc2NyaXB0aW9uKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25B
dHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3Jp
cHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0
cmlidXRlKSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1
dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBkZXNjcmlwdGlvbik7ICAgIAogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzY4LDcgKzc3Myw3IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpvcmllbnRhdGlvbigpIGNvbnN0CiBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUo
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0g
ZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
Ok5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKKyAgICBp
ZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vz
c2liaWxpdHlWYWx1ZUF0dHJpYnV0ZSksIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgaWYgKGRlc2Ny
aXB0aW9uKQogICAgICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFY
VmFsdWUiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtNzc5
LDcgKzc4NCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpzdHJpbmdWYWx1ZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFnZSJdLCBtX2VsZW1lbnQuZ2V0KCkpOwor
ICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKEAi
QVhMYW5ndWFnZSIpLCBtX2VsZW1lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0
dHJpYnV0ZUFuZFZhbHVlKEAiQVhMYW5ndWFnZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCiAKQEAgLTc4OSw3ICs3OTQsNyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlIZWxwQXR0cmlidXRlXSwgbV9lbGVtZW50LmdldCgpKTsKKyAgICBpZCBkZXNjcmlw
dGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlI
ZWxwQXR0cmlidXRlKSwgbV9lbGVtZW50LmdldCgpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVB
dHRyaWJ1dGVBbmRWYWx1ZShAIkFYSGVscCIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCiAgICAgCkBAIC03OTksNjcgKzgwNCw2NyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogZG91Ymxl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV07CisgICAg
TlNWYWx1ZSAqcG9zaXRpb25WYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVBv
c2l0aW9uQXR0cmlidXRlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRp
b25WYWx1ZSBwb2ludFZhbHVlXS54KTsgICAgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIAorCiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojp5KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1ZhbHVlKiBw
b3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdOworICAgIE5TVmFsdWUgKnBvc2l0aW9uVmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSk7CiAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRWYWx1ZV0u
eSk7ICAgIAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiAw
LjBmOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgoKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUqIHNpemVWYWx1ZSA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRy
aWJ1dGVdOworICAgIE5TVmFsdWUgKnNpemVWYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNz
aWJpbGl0eVNpemVBdHRyaWJ1dGUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtz
aXplVmFsdWUgc2l6ZVZhbHVlXS53aWR0aCk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwot
ICAgIAorCiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpoZWlnaHQoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFs
dWUqIHNpemVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdOworICAgIE5TVmFsdWUgKnNpemVWYWx1ZSA9IGF0
dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxkb3VibGU+KFtzaXplVmFsdWUgc2l6ZVZhbHVlXS5oZWlnaHQpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiAwLjBmOwogfQogCiBkb3Vi
bGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2xpY2tQb2ludCJdOworICAgIE5TVmFs
dWUgKnBvc2l0aW9uVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYQ2xpY2tQb2ludCIpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLngp
OyAgICAgICAgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJu
IDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNWYWx1ZSogcG9zaXRpb25W
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDbGlja1Bv
aW50Il07CisgICAgTlNWYWx1ZSAqcG9zaXRpb25WYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhD
bGlja1BvaW50Iik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFs
dWUgcG9pbnRWYWx1ZV0ueSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAg
ICAgcmV0dXJuIDAuMGY7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpsaW5lUmVjdHNBbmRUZXh0KCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBpZCBsaW5lUmVjdHNBbmRUZXh0ID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVSZWN0c0FuZFRleHQiXTsKKyAgICBpZCBs
aW5lUmVjdHNBbmRUZXh0ID0gYXR0cmlidXRlVmFsdWUoQCJBWExpbmVSZWN0c0FuZFRleHQiKTsK
ICAgICBpZiAoIVtsaW5lUmVjdHNBbmRUZXh0IGlzS2luZE9mQ2xhc3M6TlNBcnJheS5jbGFzc10p
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIFtbbGluZVJlY3RzQW5kVGV4dCBjb21w
b25lbnRzSm9pbmVkQnlTdHJpbmc6QCJ8Il0gY3JlYXRlSlNTdHJpbmdSZWZdOwpAQCAtODcxLDcg
Kzg3Niw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpsaW5lUmVjdHNBbmRUZXh0KCkgY29uc3QKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjppbnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
aWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShO
U0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWUg
ZG91YmxlVmFsdWVdOyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC04ODIsNyArODg3
LDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKIGRv
dWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CisgICAgaWQg
dmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZSk7
CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAg
ICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCkBAIC04OTMsNyArODk4LDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om1pblZhbHVlKCkKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1
ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1
ZUF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxp
dHlNYXhWYWx1ZUF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFs
dWVdOyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC05MDQsMjIgKzkwOSwyMiBAQCBk
b3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUoKQogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nKiB2YWx1ZURlc2NyaXB0
aW9uID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgTlNTdHJpbmcgKnZhbHVlRGVzY3Jp
cHRpb24gPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlWYWx1ZURlc2NyaXB0aW9uQXR0
cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlRGVzY3JpcHRpb24gaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUo
QCJBWFZhbHVlRGVzY3JpcHRpb24iLCB2YWx1ZURlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogaW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExpbmVOdW1i
ZXJBdHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmls
aXR5SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbKE5TTnVtYmVy
ICopdmFsdWUgaW50VmFsdWVdOyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisK
ICAgICByZXR1cm4gLTE7CiB9CiAKQEAgLTk1NiwzOSArOTYxLDM5IEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNEZWNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKQogYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0VuYWJsZWQoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRy
aWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlKTsKICAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFs
dWUgYm9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJl
ZCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmVxdWlyZWQiXTsK
KyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhSZXF1aXJlZCIpOwogICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2
YWx1ZSBib29sVmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3Vz
ZWQoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
Rm9jdXNlZEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vz
c2liaWxpdHlGb2N1c2VkQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
IGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0CiB7Ci0gICAg
aWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQXR0cmlidXRlKTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNj
ZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsK
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDAxLDIzICsxMDA2LDIzIEBAIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0CiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKIHsKLSAgICBCT09M
IHJlc3VsdCA9IE5POwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
VmFsdWVBdHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3Np
YmlsaXR5VmFsdWVBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmVzdWx0ID0gW3ZhbHVlIGludFZhbHVlXSA9PSAyOwor
ICAgICAgICByZXR1cm4gW3ZhbHVlIGludFZhbHVlXSA9PSAyOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQoKSBjb25zdAogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOwor
ICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRy
aWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkK
ICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTAyOSw3ICsxMDM0LDcg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAogCiBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRl
VmFsdWUoKSBjb25zdAogewotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50
LmdldCgpLCBOU0FjY2Vzc2liaWxpdHlBUklBQ3VycmVudEF0dHJpYnV0ZSk7CisgICAgaWQgdmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlBUklBQ3VycmVudEF0dHJpYnV0ZSk7
CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAg
ICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTEwMzcsNyArMTA0Miw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjdXJyZW50U3RhdGVWYWx1ZSgpIGNvbnN0CiAKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpzb3J0RGlyZWN0aW9uKCkgY29uc3QK
IHsKLSAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uQXR0cmlidXRlKTsKICAgICBpZiAo
W3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBb
dmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA0Niw3
ICsxMDUxLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OnNvcnREaXJlY3Rpb24oKSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhp
ZXJhcmNoaWNhbExldmVsKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBh
dHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGUpOwog
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAg
cmV0dXJuIFt2YWx1ZSBpbnRWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAt
MTA1NywzOSArMTA2MiwzOSBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hp
Y2FsTGV2ZWwoKSBjb25zdAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNsYXNzTGlzdCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpAIkFYRE9NQ2xhc3NMaXN0Il07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFY
RE9NQ2xhc3NMaXN0Iik7CiAgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBj
bGFzc11dKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBOU011dGFibGVTdHJp
bmcqIGNsYXNzTGlzdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKworICAgIE5TTXV0YWJs
ZVN0cmluZyAqY2xhc3NMaXN0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwogICAgIE5TSW50
ZWdlciBsZW5ndGggPSBbdmFsdWUgY291bnRdOwogICAgIGZvciAoTlNJbnRlZ2VyIGsgPSAwOyBr
IDwgbGVuZ3RoOyArK2spIHsKICAgICAgICAgW2NsYXNzTGlzdCBhcHBlbmRTdHJpbmc6W3ZhbHVl
IG9iamVjdEF0SW5kZXg6a11dOwogICAgICAgICBpZiAoayA8IGxlbmd0aCAtIDEpCiAgICAgICAg
ICAgICBbY2xhc3NMaXN0IGFwcGVuZFN0cmluZzpAIiwgIl07CiAgICAgfQotICAgIAorCiAgICAg
cmV0dXJuIFtjbGFzc0xpc3QgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRFJUU3BlZWNoQXR0cmlidXRlIl07CisgICAgaWQgdmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYRFJUU3BlZWNoQXR0cmlidXRlIik7CiAgICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbWyhO
U0FycmF5ICopdmFsdWUgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXSBjcmVhdGVKU1N0
cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgICAgICAKKwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dy
YWJiZWQoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5R3JhYmJlZEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0Fj
Y2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xh
c3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsK
ICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0xMTAwLDIxICsxMTA1LDIxIEBAIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0CiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkg
Y29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURyb3BF
ZmZlY3RzQXR0cmlidXRlXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNz
aWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlKTsKICAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgTlNN
dXRhYmxlU3RyaW5nKiBkcm9wRWZmZWN0cyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKyAg
ICBOU011dGFibGVTdHJpbmcgKmRyb3BFZmZlY3RzID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdd
OwogICAgIE5TSW50ZWdlciBsZW5ndGggPSBbdmFsdWUgY291bnRdOwogICAgIGZvciAoTlNJbnRl
Z2VyIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKICAgICAgICAgW2Ryb3BFZmZlY3RzIGFwcGVu
ZFN0cmluZzpbdmFsdWUgb2JqZWN0QXRJbmRleDprXV07CiAgICAgICAgIGlmIChrIDwgbGVuZ3Ro
IC0gMSkKICAgICAgICAgICAgIFtkcm9wRWZmZWN0cyBhcHBlbmRTdHJpbmc6QCIsIl07CiAgICAg
fQotICAgIAorCiAgICAgcmV0dXJuIFtkcm9wRWZmZWN0cyBjcmVhdGVKU1N0cmluZ1JlZl07CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTEyNzUsNzAgKzEyODAsNzAgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQogewogICAgIC8v
IG5vdCB5ZXQgZGVmaW5lZCBpbiBBcHBLaXQuLi4gb2RkCiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgTlNBcnJheSogY29sdW1uSGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENvbHVtbkhlYWRlclVJRWxlbWVudHMiXTsKKyAg
ICBOU0FycmF5ICpjb2x1bW5IZWFkZXJzQXJyYXkgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYQ29sdW1u
SGVhZGVyVUlFbGVtZW50cyIpOwogICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3RvciA9IG1ha2VW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb2x1bW5IZWFkZXJzQXJyYXkp
OwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uSGVhZGVyc1ZlY3Rvcik7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojph
dHRyaWJ1dGVzT2ZSb3dIZWFkZXJzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU0FycmF5KiByb3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOworICAgIE5TQXJyYXkgKnJv
d0hlYWRlcnNBcnJheSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIik7
CiAgICAgYXV0byByb3dIZWFkZXJzVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4+KHJvd0hlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9u
T2ZFbGVtZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMoKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGNvbHVtbnNBcnJheSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVt
bnNBdHRyaWJ1dGVdOworICAgIE5TQXJyYXkgKmNvbHVtbnNBcnJheSA9IGF0dHJpYnV0ZVZhbHVl
KE5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGUpOwogICAgIGF1dG8gY29sdW1uc1ZlY3Rv
ciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb2x1bW5zQXJy
YXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uc1ZlY3Rvcik7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRy
aWJ1dGVzT2ZSb3dzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0Fy
cmF5KiByb3dzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAgICBOU0FycmF5ICpyb3dzQXJyYXkgPSBh
dHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlKTsKICAgICBhdXRvIHJv
d3NWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93
c0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwog
fQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlc09mVmlzaWJsZUNlbGxzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU0FycmF5KiBjZWxsc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6QCJBWFZpc2libGVDZWxscyJdOworICAgIE5TQXJyYXkgKmNlbGxzQXJyYXkgPSBh
dHRyaWJ1dGVWYWx1ZShAIkFYVmlzaWJsZUNlbGxzIik7CiAgICAgYXV0byBjZWxsc1ZlY3RvciA9
IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjZWxsc0FycmF5KTsK
ICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKICAgICBFTkRf
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNP
ZkhlYWRlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgaGVhZGVy
T2JqZWN0ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5SGVhZGVyQXR0cmlidXRlXTsKKyAgICBpZCBoZWFkZXJPYmplY3QgPSBhdHRyaWJ1dGVW
YWx1ZShOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGUpOwogICAgIGlmICghaGVhZGVyT2Jq
ZWN0KQogICAgICAgICByZXR1cm4gW0AiIiBjcmVhdGVKU1N0cmluZ1JlZl07Ci0gICAgCi0gICAg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGhlYWRlclZlY3RvcjsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGhlYWRlclZlY3RvcjsK
ICAgICBoZWFkZXJWZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSho
ZWFkZXJPYmplY3QpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGhlYWRlclZl
Y3Rvcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51
bGxwdHI7CiB9CiAKQEAgLTEzNjMsNyArMTM2OCw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojpjb2x1bW5Db3VudCgpCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRh
YmxlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogaW5k
ZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlJbmRleEF0dHJpYnV0ZV07CisgICAgTlNOdW1iZXIgKmluZGV4TnVtYmVyID0gYXR0
cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGUpOwogICAgIGlmIChpbmRl
eE51bWJlcikKICAgICAgICAgcmV0dXJuIFtpbmRleE51bWJlciBpbnRWYWx1ZV07CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTM3NSwxMyArMTM4MCwxMyBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSgpCiB7CiAg
ICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIE5TVmFsdWUqIGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUm93SW5kZXhSYW5nZSJdOworICAgIE5TVmFsdWUgKmlu
ZGV4UmFuZ2UgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYUm93SW5kZXhSYW5nZSIpOwogICAgIGlmIChp
bmRleFJhbmdlKQogICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOwotICAg
IE5TTXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihy
YW5nZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0aCld
OworICAgIE5TTXV0YWJsZVN0cmluZyAqcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihyYW5nZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxl
bmd0aCldOwogICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKQEAgLTEzODksMTMgKzEzOTQsMTMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2UoKQogewogICAgIE5TUmFuZ2Ug
cmFuZ2UgPSBOU01ha2VSYW5nZSgwLCAwKTsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU051bWJlciogaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhDb2x1bW5JbmRleFJhbmdlIl07CisgICAgTlNOdW1iZXIgKmluZGV4UmFu
Z2UgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYQ29sdW1uSW5kZXhSYW5nZSIpOwogICAgIGlmIChpbmRl
eFJhbmdlKQogICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOwotICAgIE5T
TXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyYW5n
ZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0aCldOwor
ICAgIE5TTXV0YWJsZVN0cmluZyAqcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihyYW5nZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0
aCldOwogICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTE0MTUsOSArMTQyMCw5IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmli
dXRlXSk7CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlKSk7CiAg
ICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAKLSAgICAKKwogICAgIHJldHVybiBudWxscHRy
OwogfQogCkBAIC0xNDI1LDkgKzE0MzAsOSBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAogewog
ICAgIGlmICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpjcmVhdGUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdKTsKKyAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVZl
cnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlKSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAg
ICAgICAgCiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NTgsNyArMTQ2Myw3IEBAIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRS
YW5nZSgpCiB7CiAgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDAp
OwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUgKmluZGV4UmFuZ2Ug
PSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
VGV4dFJhbmdlQXR0cmlidXRlKTsKKyAgICBOU1ZhbHVlICppbmRleFJhbmdlID0gYXR0cmlidXRl
VmFsdWUoTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGUpOwogICAgIGlm
IChpbmRleFJhbmdlKQogICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOwog
ICAgIE5TTXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcg
c3RyaW5nV2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihyYW5nZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0
aCldOwpAQCAtMTU1NSw3ICsxNTYwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpz
ZXRTZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIWVs
ZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4g
PSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVk
Q2hpbGRyZW5BdHRyaWJ1dGUpOworICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBhdHRy
aWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKTsKICAg
ICBOU0FycmF5ICphcnJheSA9IEBbZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CiAgICAg
aWYgKHNlbGVjdGVkQ2hpbGRyZW4pCiAgICAgICAgIGFycmF5ID0gW3NlbGVjdGVkQ2hpbGRyZW4g
YXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6YXJyYXldOwpAQCAtMTU2OSw3ICsxNTc0LDcg
QEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KHVu
c2lnbmVkIGluZGV4KSBjb25zdAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgTlNBcnJheSAqc2VsZWN0ZWRDaGlsZHJlbiA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVu
dC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSk7CisgICAg
TlNBcnJheSAqc2VsZWN0ZWRDaGlsZHJlbiA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUpOwogICAgIGlmICghc2VsZWN0ZWRDaGlsZHJlbikK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTkxLDcgKzE1OTYsNyBAQCBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29u
c3QKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1
bWVudEVuY29kaW5nKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEb2N1bWVu
dEVuY29kaW5nIl07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYRG9jdW1lbnRF
bmNvZGluZyIpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3Nd
XSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwpAQCAtMTYwMSw3ICsxNjA2LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEb2N1bWVudFVSSSJdOworICAgIGlk
IHZhbHVlID0gYXR0cmlidXRlVmFsdWUoQCJBWERvY3VtZW50VVJJIik7CiAgICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVl
IGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0xNjEx
LDcgKzE2MTYsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6ZG9jdW1lbnRVUkkoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnVybCgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
TlNVUkwgKnVybCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CisgICAgTlNVUkwgKnVybCA9IGF0dHJpYnV0ZVZhbHVl
KE5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIFtbdXJsIGFic29sdXRl
U3RyaW5nXSBjcmVhdGVKU1N0cmluZ1JlZl07ICAgIAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2NjYsMTMgKzE2NzEsMTIgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAogCiBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKIHsKLSAgICBCT09MIHJl
c3VsdCA9IE5POwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWElzTXVsdGlTZWxlY3Rh
YmxlIl07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYSXNNdWx0aVNlbGVjdGFi
bGUiKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0g
ICAgICAgIHJlc3VsdCA9IFt2YWx1ZSBib29sVmFsdWVdOworICAgICAgICByZXR1cm4gW3ZhbHVl
IGJvb2xWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiByZXN1
bHQ7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzVmlzaWJsZSgpIGNvbnN0CkBAIC0xNjgyLDcgKzE2ODYsNyBAQCBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNPblNjcmVlbigpIGNvbnN0CiB7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1
ZShtX2VsZW1lbnQuZ2V0KCksIEAiQVhJc09uU2NyZWVuIik7CisgICAgaWQgdmFsdWUgPSBhdHRy
aWJ1dGVWYWx1ZShAIkFYSXNPblNjcmVlbiIpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE3MDEsNyArMTcwNSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbigpIGNvbnN0
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcgKnZhbHVlID0g
ZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgQCJBWEVt
YmVkZGVkSW1hZ2VEZXNjcmlwdGlvbiIpLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5TU3RyaW5n
ICp2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShAIkFYRW1iZWRkZWRJ
bWFnZURlc2NyaXB0aW9uIiksIG1fZWxlbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWEVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbiIsIHZhbHVl
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0x
NzEwLDcgKzE3MTQsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6ZW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uKCkgY29ucwogSlNWYWx1ZVJlZiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjppbWFnZU92ZXJsYXlFbGVtZW50cygpIGNvbnN0CiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIG1ha2VKU0FycmF5KG1ha2VWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1l
bnQuZ2V0KCksIEAiQVhJbWFnZU92ZXJsYXlFbGVtZW50cyIpKSk7CisgICAgcmV0dXJuIG1ha2VK
U0FycmF5KG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1
dGVWYWx1ZShAIkFYSW1hZ2VPdmVybGF5RWxlbWVudHMiKSkpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTczOCw3ICsxNzQyLDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc011bHRpTGluZSgpIGNvbnN0CiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhhc1BvcHVwKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhIYXNQb3B1cCJdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUo
QCJBWEhhc1BvcHVwIik7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBj
bGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwpAQCAtMTc0OSw3ICsxNzUzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpoYXNQb3B1cCgpIGNvbnN0CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cG9wdXBWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYUG9wdXBWYWx1ZSJdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFs
dWUoQCJBWFBvcHVwVmFsdWUiKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTE5MDMsNyArMTkwNyw3IEBAIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0
TWFya2VyUmFuZ2VGb3JSCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IGF0dHJpYnV0
ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2VBdHRyaWJ1dGUpOworICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IGF0dHJpYnV0ZVZhbHVl
KE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlKTsKICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5n
ZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC0xOTEyLDcgKzE5MTYsNyBAQCBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6c2VsZWN0ZWRUZXh0TWFya2VyUgogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJl
c2V0U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewotICAgIGlkIHN0YXJ0ID0gYXR0cmlidXRl
VmFsdWUobV9lbGVtZW50LmdldCgpLCBAIkFYU3RhcnRUZXh0TWFya2VyIik7CisgICAgaWQgc3Rh
cnQgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYU3RhcnRUZXh0TWFya2VyIik7CiAgICAgaWYgKCFzdGFy
dCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTIyLDI0ICsyMTI2LDI0IEBAIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZv
ckluZGV4KGludCB0CiAgICAgCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9Ci0gICAgCisKIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRU
ZXh0TWFya2VyKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0
TWFya2VyID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0
VGV4dE1hcmtlciJdOworICAgIGlkIHRleHRNYXJrZXIgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYU3Rh
cnRUZXh0TWFya2VyIik7CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhFbmRUZXh0TWFya2VyIl07CisgICAgaWQgdGV4dE1hcmtlciA9
IGF0dHJpYnV0ZVZhbHVlKEAiQVhFbmRUZXh0TWFya2VyIik7CiAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTIyODAsMzQgKzIy
ODQsMzQgQEAgc3RhdGljIE5TU3RyaW5nICpfY29udmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9T
dHJpbmcoTlNBcnJheSAqcGFpcnMpCiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBwYWly
KQogICAgICAgICAgICAgW3Jlc3VsdCBhcHBlbmRGb3JtYXQ6QCJcdCVsdS4gJUAgPSAlQFxuIiwg
KHVuc2lnbmVkIGxvbmcpaW5kZXgsIGtleSwgW1twYWlyIG9iamVjdEZvcktleTprZXldIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXV07
CiAgICAgfV07Ci0gICAgCisKICAgICByZXR1cm4gcmVzdWx0OwogfQotICAgIAorCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFBvc3RzY3JpcHRz
RGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TQXJyYXkgKnBhaXJzID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
QCJBWE1hdGhQb3N0c2NyaXB0cyJdOworICAgIE5TQXJyYXkgKnBhaXJzID0gYXR0cmlidXRlVmFs
dWUoQCJBWE1hdGhQb3N0c2NyaXB0cyIpOwogICAgIHJldHVybiBbX2NvbnZlcnRNYXRoTXVsdGlz
Y3JpcHRQYWlyc1RvU3RyaW5nKHBhaXJzKSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0
YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0
c0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICBOU0FycmF5ICpwYWlycyA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVl
OkAiQVhNYXRoUHJlc2NyaXB0cyJdOworICAgIE5TQXJyYXkgKnBhaXJzID0gYXR0cmlidXRlVmFs
dWUoQCJBWE1hdGhQcmVzY3JpcHRzIik7CiAgICAgcmV0dXJuIFtfY29udmVydE1hdGhNdWx0aXNj
cmlwdFBhaXJzVG9TdHJpbmcocGFpcnMpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNWYWx1
ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUm9vdFJhZGljYW5kKCkgY29uc3QKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbWFrZUpTQXJyYXkobWFr
ZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKG1f
ZWxlbWVudC5nZXQoKSwgQCJBWE1hdGhSb290UmFkaWNhbmQiKSkpOworICAgIHJldHVybiBtYWtl
SlNBcnJheShtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmli
dXRlVmFsdWUoQCJBWE1hdGhSb290UmFkaWNhbmQiKSkpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMjMxNyw4ICsyMzIxLDggQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlv
bigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNNdXRhYmxl
U3RyaW5nICpyZXN1bHQgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhTdHJpbmc6QCJcblN0
YXJ0IFBhdGhcbiJdOwotICAgIE5TQmV6aWVyUGF0aCAqYmV6aWVyUGF0aCA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1dGVd
OwotICAgIAorICAgIE5TQmV6aWVyUGF0aCAqYmV6aWVyUGF0aCA9IGF0dHJpYnV0ZVZhbHVlKE5T
QWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1dGUpOworCiAgICAgTlNVSW50ZWdlciBlbGVtZW50Q291
bnQgPSBbYmV6aWVyUGF0aCBlbGVtZW50Q291bnRdOwogICAgIE5TUG9pbnQgcG9pbnRzWzNdOwog
ICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKSB7CkBAIC0y
MzI2LDI0ICsyMzMwLDI0IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAogICAgICAgICBjYXNlIE5TTW92ZVRv
QmV6aWVyUGF0aEVsZW1lbnQ6CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIlx0
TW92ZSB0byBwb2ludFxuIl07CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCiAg
ICAgICAgIGNhc2UgTlNMaW5lVG9CZXppZXJQYXRoRWxlbWVudDoKICAgICAgICAgICAgIFtyZXN1
bHQgYXBwZW5kU3RyaW5nOkAiXHRMaW5lIHRvXG4iXTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgCisKICAgICAgICAgY2FzZSBOU0N1cnZlVG9CZXppZXJQYXRoRWxlbWVudDoKICAg
ICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXHRDdXJ2ZSB0b1xuIl07CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2UgTlNDbG9zZVBhdGhCZXpp
ZXJQYXRoRWxlbWVudDoKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXHRDbG9z
ZVxuIl07CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiBbcmVzdWx0IGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442705</attachid>
            <date>2021-10-28 07:35:56 -0700</date>
            <delta_ts>2021-10-28 07:42:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232415-20211028103555.patch</filename>
            <type>text/plain</type>
            <size>54744</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIxN2JjMjBlOGE1OGE3
NWYzZWRjYjY1NjRjOWI2MmJlYTBjZTA3ZS4uMGM3MGY4NDE0NDI1ZGFkZDEwMWViNDgwOThhYjY1
ZmZlYWZiMWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTI4ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZCB0
cmVlIG1vZGU6IERpc3BhdGNoIGFsbCBjYWxscyB0byBbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlXSBpbiBXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgdG8gdGhlIEFYIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjQxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ3Mzg0
ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgQWRk
ZWQgQVNTRVJUUyB0byB2ZXJpZnkgdGhhdCBBWElzb2xhdGVkVHJlZTo6bm9kZUZvcklEIGFuZAor
ICAgICAgICBhcHBseVBlbmRpbmdDaGFuZ2VzIGFyZSBjYWxsZWQgb24gdGhlIEFYIHRocmVhZCBp
biBpc29sYXRlZCB0cmVlIG1vZGUgMi4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjpub2RlRm9ySUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6
OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgorCiAyMDIxLTEwLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxt
cm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBFbGltaW5hdGUgZHVwbGljYXRlZCBwbGF0
Zm9ybS1zcGVjaWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAKaW5kZXggYzFkYmE0MTEyYjY0NjE2OWZkYTI2YWI2NWU3YzY1NTBjODVlMDMw
YS4uOGVjOTEzYjljMWVlOGI5YjA5ZjUwOTc3ZmFlZTFkOTkyZmVlOTBkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcApAQCAtMTQyLDYgKzE0Miw3IEBAIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4g
QVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogUmVm
UHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpub2RlRm9ySUQoQVhJRCBheElE
KSBjb25zdAogewogICAgIC8vIEluIGlzb2xhdGVkIHRyZWUgbW9kZSAyLCBvbmx5IGFjY2VzcyBt
X3JlYWRlclRocmVhZE5vZGVNYXAgb24gdGhlIEFYIHRocmVhZC4KKyAgICBBU1NFUlQobV91c2Vk
T25BWFRocmVhZCA/ICFpc01haW5UaHJlYWQoKSA6IGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
bV91c2VkT25BWFRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKQEAgLTQ0MSw2ICs0NDIsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRp
bmdDaGFuZ2VzKCkKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hh
bmdlcyIpOwogCiAgICAgLy8gSW4gaXNvbGF0ZWQgdHJlZSBtb2RlIDIsIG9ubHkgYXBwbHkgcGVu
ZGluZyBjaGFuZ2VzIG9uIHRoZSBBWCB0aHJlYWQuCisgICAgQVNTRVJUKG1fdXNlZE9uQVhUaHJl
YWQgPyAhaXNNYWluVGhyZWFkKCkgOiBpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fdXNlZE9u
QVhUaHJlYWQgJiYgaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY2NDBjZjRkZjRhNDcy
NGU0NGE2MDAzMjM5NDcyYjhjZjIwMmI3MjEuLjY2MDI0NTNkMmUyZDliNTM4NGE4ZjBkOWU1OTZl
MzRlNDBlZTM1N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMjEtMTAtMjggIEFuZHJlcyBHb256YWxleiAgPGFu
ZHJlc2dfMjJAYXBwbGUuY29tPgorCisgICAgICAgIElzb2xhdGVkIHRyZWUgbW9kZTogRGlzcGF0
Y2ggYWxsIGNhbGxzIHRvIFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWVdIGluIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0byB0aGUg
QVggdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMyNDE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDczODQ4Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSB0
byBzaW11bGF0ZSBydW5uaW5nIGFjY2Vzc2liaWxpdHkgbGF5b3V0IHRlc3RzIG9uIHRoZQorICAg
ICAgICBzZWNvbmRhcnkgQVggdGhyZWFkLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb25PZlZh
bHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6ZGVzY3JpcHRpb25PZkVsZW1lbnRzKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlVmFsdWUgY29uc3QpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb21JZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVt
ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50
TGlua3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1l
bnRzV2l0aEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dIZWFkZXJzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29sdW1uSGVhZGVycyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVsZW1lbnRGb3JBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleCBjb25zdCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRldGFpbHNFbGVtZW50cyBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVycm9yTWVzc2FnZUVsZW1l
bnRzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0
cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rl
c2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhl
bHBUZXh0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNsaWNrUG9pbnRYKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2xpY2tQb2ludFkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5lUmVjdHNBbmRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aW50VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjptaW5WYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1h
eFZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNj
cmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlv
blBvaW50TGluZU51bWJlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzRW5hYmxlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVx
dWlyZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Zv
Y3VzZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Nl
bGVjdGVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJ
bmRldGVybWluYXRlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmN1cnJlbnRTdGF0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c29ydERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xhc3NMaXN0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNv
bHVtbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZSb3dzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mVmlzaWJsZUNlbGxzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mSGVhZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW5kZXhJblRhYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm93SW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uQXRJbmRleCBj
b25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5j
b2RpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVS
SSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPblNjcmVlbiBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVtYmVkZGVkSW1hZ2VEZXNj
cmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlt
YWdlT3ZlcmxheUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGFzUG9wdXAgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpwb3B1cFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcik6CisgICAgICAgIChX
VFI6Ol9jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1hdGhSb290UmFkaWNhbmQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwYXRoRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV1RSOjpkZXNjcmlwdGlv
bk9mVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjphdHRyaWJ1dGVzT2ZFbGVtZW50KTog
RGVsZXRlZC4KKwogMjAyMS0xMC0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdG9yZSBXUFQtc3R5bGUgZnV6enkgcGl4ZWwgbWF0Y2hpbmcgZGF0
YSBpbiBJbWFnZURpZmZSZXN1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggZDM1
NGU5ZDRkZDhiNjBlZmYzY2RlODBhZWZiZjZlY2Y3NWI3ZWIyOS4uYWRhMmY1Mjk0Njc5NDMzMzE0
NzQyODkxZTkxYTlkNzNlZGQyNjg1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAg
LTM5Nyw2ICszOTcsMTEgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBs
YXRmb3JtVUlFbGVtZW50KTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQmKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZCBhdHRyaWJ1
dGVWYWx1ZShOU1N0cmluZyAqKSBjb25zdDsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25PZlZh
bHVlKGlkIHZhbHVlT2JqZWN0KSBjb25zdDsKKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKEFUU1BJKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggMjUzM2Nl
ZjJkZmE3MjhkNGUwNzhlZTllNTM1YjM0ZjJiMTU1NDlmNS4uODY0OTdiNGMzZTEzOTcxMWM1Mjlh
YTljYjcxNzBhYTQwMzdkYWE4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShpZCBl
bGVtZW50LCBOU1N0cmluZyogYXR0cmlidXRlLCBpZCB2YWx1ZSwgYm9vbCBzeW5jaHJvbm8KICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKLXN0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRp
b25PZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBpZCBlbGVtZW50KQorTlNTdHJpbmcgKkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCkgY29uc3QK
IHsKICAgICBpZiAoIXZhbHVlT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTg3LDgg
KzE4Nyw4IEBAIHN0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRpb25PZlZhbHVlKGlkIHZhbHVlT2Jq
ZWN0LCBpZCBlbGVtZW50KQogICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWVPYmplY3Qg
c3RyaW5nVmFsdWVdOwogCiAgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU1Zh
bHVlIGNsYXNzXV0pIHsKLSAgICAgICAgTlNTdHJpbmcqIHR5cGUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENTdHJpbmc6W3ZhbHVlT2JqZWN0IG9iakNUeXBlXSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5n
RW5jb2RpbmddOwotICAgICAgICBOU1ZhbHVlKiB2YWx1ZSA9IChOU1ZhbHVlKil2YWx1ZU9iamVj
dDsKKyAgICAgICAgTlNTdHJpbmcgKnR5cGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6
W3ZhbHVlT2JqZWN0IG9iakNUeXBlXSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOwor
ICAgICAgICBOU1ZhbHVlICp2YWx1ZSA9IChOU1ZhbHVlICopdmFsdWVPYmplY3Q7CiAgICAgICAg
IGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNSZWN0Il0ubGVuZ3RoID4gMCkKICAgICAgICAg
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5TUmVjdDogJUAiLCBOU1N0
cmluZ0Zyb21SZWN0KFt2YWx1ZSByZWN0VmFsdWVdKV07CiAgICAgICAgIGlmIChbdHlwZSByYW5n
ZU9mU3RyaW5nOkAiTlNQb2ludCJdLmxlbmd0aCA+IDApCkBAIC0yMDAsMTUgKzIwMCwxNSBAQCBz
dGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZWxl
bWVudCkKICAgICB9CiAKICAgICAvLyBTdHJpcCBhYnNvbHV0ZSBVUkwgcGF0aHMKLSAgICBOU1N0
cmluZyogZGVzY3JpcHRpb24gPSBbdmFsdWVPYmplY3QgZGVzY3JpcHRpb25dOworICAgIE5TU3Ry
aW5nICpkZXNjcmlwdGlvbiA9IFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07CiAgICAgTlNSYW5n
ZSByYW5nZSA9IFtkZXNjcmlwdGlvbiByYW5nZU9mU3RyaW5nOkAiTGF5b3V0VGVzdHMiXTsKICAg
ICBpZiAocmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gW2Rlc2NyaXB0aW9uIHN1YnN0cmlu
Z0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbl07CiAKICAgICAvLyBTdHJpcCBwb2ludGVyIGxvY2F0
aW9ucwogICAgIGlmIChbZGVzY3JpcHRpb24gcmFuZ2VPZlN0cmluZzpAIjB4Il0ubGVuZ3RoKSB7
Ci0gICAgICAgIE5TU3RyaW5nKiByb2xlID0gYXR0cmlidXRlVmFsdWUoZWxlbWVudCwgTlNBY2Nl
c3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSk7Ci0gICAgICAgIE5TU3RyaW5nKiB0aXRsZSA9IGF0dHJp
YnV0ZVZhbHVlKGVsZW1lbnQsIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlKTsKKyAgICAg
ICAgTlNTdHJpbmcgKnJvbGUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlSb2xlQXR0
cmlidXRlKTsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nl
c3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUpOwogICAgICAgICBpZiAodGl0bGUubGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAnJUAnPiIs
IHJvbGUsIHRpdGxlXTsKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiPCVAPiIsIHJvbGVdOwpAQCAtMjE3LDI5ICsyMTcsNiBAQCBzdGF0aWMgTlNTdHJpbmcqIGRl
c2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZWxlbWVudCkKICAgICByZXR1cm4g
W3ZhbHVlT2JqZWN0IGRlc2NyaXB0aW9uXTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICphdHRyaWJ1
dGVzT2ZFbGVtZW50KGlkIGFjY2Vzc2liaWxpdHlPYmplY3QpCi17Ci0gICAgYXV0byBhdHRyaWJ1
dGVzID0gc3VwcG9ydGVkQXR0cmlidXRlcyhhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKLQotICAgIE5T
TXV0YWJsZVN0cmluZyogYXR0cmlidXRlc1N0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5n
XTsKLSAgICBmb3IgKE5TU3RyaW5nKiBhdHRyaWJ1dGUgaW4gYXR0cmlidXRlcy5nZXQoKSkgewot
ICAgICAgICAvLyBQb3NpdGlvbiBwcm92aWRlcyB1c2VsZXNzIGFuZCBzY3JlZW4tc3BlY2lmaWMg
aW5mb3JtYXRpb24sIHNvIHdlIGRvIG5vdAotICAgICAgICAvLyB3YW50IHRvIGluY2x1ZGUgaXQg
Zm9yIHRoZSBzYWtlIG9mIHVuaXZlcnNhbGx5IHBhc3NpbmcgdGVzdHMuCi0gICAgICAgIGlmIChb
YXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUG9zaXRpb24iXSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIC8vIFNraXAgc2NyZWVuLXNwZWNpZmljIGluZm9ybWF0aW9uLgot
ICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJfQVhQcmltYXJ5U2NyZWVu
SGVpZ2h0Il0gfHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFJlbGF0aXZlRnJhbWUi
XSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlkIHZhbHVlT2JqZWN0ID0gYXR0
cmlidXRlVmFsdWUoYWNjZXNzaWJpbGl0eU9iamVjdCwgYXR0cmlidXRlKTsKLSAgICAgICAgTlNT
dHJpbmcqIHZhbHVlID0gZGVzY3JpcHRpb25PZlZhbHVlKHZhbHVlT2JqZWN0LCBhY2Nlc3NpYmls
aXR5T2JqZWN0KTsKLSAgICAgICAgW2F0dHJpYnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUA6
ICVAXG4iLCBhdHRyaWJ1dGUsIHZhbHVlXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXR0cmlidXRl
c1N0cmluZzsKLX0KLQogc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2YWx1ZSkK
IHsKICAgICBWZWN0b3I8VW5pQ2hhcj4gYnVmZmVyKFthdHRyaWJ1dGUgbGVuZ3RoXSk7CkBAIC0y
NTQsMTEgKzIzMSwxMSBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZQogICAgIHJldHVybiBhZG9w
dChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpKTsKIH0KIAotc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkZXNjcmlwdGlvbk9m
RWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50
VmVjdG9yKQorc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkZXNjcmlwdGlvbk9mRWxl
bWVudHMoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1l
bnRzKQogewotICAgIE5TTXV0YWJsZVN0cmluZyogYWxsRWxlbWVudFN0cmluZyA9IFtOU011dGFi
bGVTdHJpbmcgc3RyaW5nXTsKLSAgICBmb3IgKGF1dG8gdWlFbGVtZW50IDogZWxlbWVudFZlY3Rv
cikgewotICAgICAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQo
dWlFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpKTsKKyAgICBOU011dGFibGVTdHJpbmcgKmFs
bEVsZW1lbnRTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgZm9yIChhdXRv
IGVsZW1lbnQgOiBlbGVtZW50cykgeworICAgICAgICBOU1N0cmluZyAqYXR0cmlidXRlcyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6ZWxlbWVudC0+YWxsQXR0cmlidXRlcygpLmdl
dCgpXTsKICAgICAgICAgW2FsbEVsZW1lbnRTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUBcbi0tLS0t
LS0tLS0tLVxuIiwgYXR0cmlidXRlc107CiAgICAgfQogCkBAIC0zMzYsOSArMzEzLDE0IEBAIHN0
YXRpYyBOU0RpY3Rpb25hcnkgKm1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZUZvckNyaXRlcmlhKEFjY2Vzc2liCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKK2lubGlu
ZSBpZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0
cmlidXRlTmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gOjpXVFI6OmF0dHJpYnV0ZVZhbHVlKG1f
ZWxlbWVudC5nZXQoKSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb21JZGVudGlmaWVyKCkgY29uc3QKIHsKLSAg
ICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmls
aXR5RE9NSWRlbnRpZmllckF0dHJpYnV0ZSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1
ZShOU0FjY2Vzc2liaWxpdHlET01JZGVudGlmaWVyQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUg
Y3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMzQ2LDE3ICszMjgs
MTcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRv
bUlkZW50aWZpZXIoKSBjb25zdAogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldExp
bmtlZFVJRWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVs
ZW1lbnRWZWN0b3IpCiB7Ci0gICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5T
QWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUpKTsKKyAgICBlbGVtZW50VmVj
dG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0
ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUpKTsKIH0KIAog
dm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXREb2N1bWVudExpbmtzKFZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVtZW50VmVjdG9yKQogewotICAgIGVsZW1l
bnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0
cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBAIkFYTGlua1VJRWxlbWVudHMiKSk7CisgICAg
ZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+
PihhdHRyaWJ1dGVWYWx1ZShAIkFYTGlua1VJRWxlbWVudHMiKSk7CiB9CiAKIHZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlLCBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVu
dHMpIGNvbnN0CiB7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0
KCksIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXSk7CisgICAgaWQg
dmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0
dHJpYnV0ZV0pOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11d
KQogICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+Pih2YWx1ZSk7CiB9CkBAIC0zNjQsNyArMzQ2LDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRVSUVsZW1lbnRzV2l0aEF0dHJpYnV0ZShKU1N0cmluZ1JlZiBhdHRyaWJ1
dGUsIFYKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hpbGRyZW4oKSBjb25z
dAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBtYWtlSlNBcnJh
eShtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFs
dWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSkpKTsK
KyAgICByZXR1cm4gbWFrZUpTQXJyYXkobWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRl
KSkpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBudWxscHRyOwpA
QCAtMzcyLDcgKzM1NCw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2hp
bGRyZW4oKSBjb25zdAogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldENoaWxkcmVu
KFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYgZWxlbWVudFZlY3RvcikK
IHsKLSAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5BdHRyaWJ1dGUpKTsKKyAgICBlbGVtZW50VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0
eUNoaWxkcmVuQXR0cmlidXRlKSk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Z2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
PiA+JiBlbGVtZW50VmVjdG9yLCB1bnNpZ25lZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKQpA
QCAtMzkwLDcgKzM3Miw3IEBAIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93
SGVhZGVycygpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgVmVj
dG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gZWxlbWVudHM7Ci0gICAgaWQgdmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVJvd0hl
YWRlclVJRWxlbWVudHNBdHRyaWJ1dGUpOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUo
TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZSk7CiAgICAgaWYgKFt2
YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIGVsZW1lbnRzID0g
bWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKICAgICBy
ZXR1cm4gbWFrZUpTQXJyYXkoZWxlbWVudHMpOwpAQCAtNDAxLDcgKzM4Myw3IEBAIEpTVmFsdWVS
ZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0CiB7CiAgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4gZWxlbWVudHM7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2Vs
ZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eUNvbHVtbkhlYWRlclVJRWxlbWVudHNBdHRyaWJ1
dGUpOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5Q29sdW1u
SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNz
OltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIGVsZW1lbnRzID0gbWFrZVZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KHZhbHVlKTsKICAgICByZXR1cm4gbWFrZUpTQXJyYXko
ZWxlbWVudHMpOwpAQCAtNDUxLDEzICs0MzMsMTMgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmQK
IAogUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmVsZW1lbnRGb3JBdHRyaWJ1dGUoTlNTdHJpbmcqIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAgICBp
ZCBlbGVtZW50ID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBhdHRyaWJ1dGUpOwor
ICAgIGlkIGVsZW1lbnQgPSBhdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUpOwogICAgIHJldHVybiBl
bGVtZW50ID8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQpIDogUmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+KCk7CiB9CiAKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjplbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRl
eChOU1N0cmluZyogYXR0cmlidXRlLCB1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICBOU0Fy
cmF5KiBlbGVtZW50cyA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgYXR0cmlidXRl
KTsKKyAgICBOU0FycmF5KiBlbGVtZW50cyA9IGF0dHJpYnV0ZVZhbHVlKGF0dHJpYnV0ZSk7CiAg
ICAgcmV0dXJuIGluZGV4IDwgZWxlbWVudHMuY291bnQgPyBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpjcmVhdGUoW2VsZW1lbnRzIG9iamVjdEF0SW5kZXg6aW5kZXhdKSA6IFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PigpOwogfQogCkBAIC00NjksNyArNDUxLDcgQEAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmtlZFVJRWxlbWVu
dEF0SW5kZXgodW4KIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGV0YWlsc0Vs
ZW1lbnRzKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0Fy
cmF5ICplbGVtZW50cyA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgQCJBWERldGFp
bHNFbGVtZW50cyIpOworICAgIE5TQXJyYXkgKmVsZW1lbnRzID0gYXR0cmlidXRlVmFsdWUoQCJB
WERldGFpbHNFbGVtZW50cyIpOwogICAgIGlmIChbZWxlbWVudHMgaXNLaW5kT2ZDbGFzczpOU0Fy
cmF5LmNsYXNzXSkKICAgICAgICAgcmV0dXJuIG1ha2VKU0FycmF5KG1ha2VWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihlbGVtZW50cykpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKQEAgLTQ4MCw3ICs0NjIsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmRldGFpbHNFbGVtZW50cygpIGNvbnN0CiBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmVycm9yTWVzc2FnZUVsZW1lbnRzKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5ICplbGVtZW50cyA9IGF0dHJpYnV0ZVZhbHVlKG1f
ZWxlbWVudC5nZXQoKSwgQCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIik7CisgICAgTlNBcnJheSAq
ZWxlbWVudHMgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYRXJyb3JNZXNzYWdlRWxlbWVudHMiKTsKICAg
ICBpZiAoW2VsZW1lbnRzIGlzS2luZE9mQ2xhc3M6TlNBcnJheS5jbGFzc10pCiAgICAgICAgIHJl
dHVybiBtYWtlSlNBcnJheShtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4oZWxlbWVudHMpKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC01ODQsMjAgKzU2
NiwzMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mQ2hpbGRyZW4oKQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0cmlidXRlcygpCiB7Ci0gICAgTlNTdHJpbmcqIGF0dHJp
YnV0ZXMgPSBhdHRyaWJ1dGVzT2ZFbGVtZW50KG1fZWxlbWVudC5nZXQoKSk7Ci0gICAgcmV0dXJu
IFthdHRyaWJ1dGVzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKKyAgICBhdXRvIGF0dHJpYnV0ZXMgPSBz
dXBwb3J0ZWRBdHRyaWJ1dGVzKG1fZWxlbWVudC5nZXQoKSk7CisKKyAgICBOU011dGFibGVTdHJp
bmcgKnZhbHVlcyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKyAgICBmb3IgKE5TU3RyaW5n
ICphdHRyaWJ1dGUgaW4gYXR0cmlidXRlcy5nZXQoKSkgeworICAgICAgICAvLyBFeGNsdWRlIHNj
cmVlbi1zcGVjaWZpYyB2YWx1ZXMsIHNpbmNlIHRoZXkgY2FuIGNoYW5nZSBkZXBlbmRpbmcgb24g
dGhlIHN5c3RlbS4KKyAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQ
b3NpdGlvbiJdCisgICAgICAgICAgICB8fCBbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIl9B
WFByaW1hcnlTY3JlZW5IZWlnaHQiXQorICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6QCJBWFJlbGF0aXZlRnJhbWUiXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1
ZShhdHRyaWJ1dGUpKTsKKyAgICAgICAgW3ZhbHVlcyBhcHBlbmRGb3JtYXQ6QCIlQDogJUBcbiIs
IGF0dHJpYnV0ZSwgdmFsdWVdOworICAgIH0KKworICAgIHJldHVybiBbdmFsdWVzIGNyZWF0ZUpT
U3RyaW5nUmVmXTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0Rlc2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBh
dHRyaWJ1dGUpCiB7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0
KCksIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXSk7Ci0gICAgTlNT
dHJpbmcqIHZhbHVlRGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUodmFsdWUsIG1fZWxl
bWVudC5nZXQoKSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3Ry
aW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIE5TU3RyaW5nICp2YWx1ZURlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKHZhbHVlKTsKICAgICByZXR1cm4gW3ZhbHVlRGVz
Y3JpcHRpb24gY3JlYXRlSlNTdHJpbmdSZWZdOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdS
ZWYgYXR0cmlidXRlKQogewotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50
LmdldCgpLCBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAg
IGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1Jl
ZjphdHRyaWJ1dGVdKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIHJl
dHVybiBudWxscHRyOwpAQCAtNjA1LDcgKzYwMCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1Jl
CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpudW1iZXJBdHRyaWJ1dGVWYWx1ZShK
U1N0cmluZ1JlZiBhdHRyaWJ1dGUpCiB7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZSht
X2VsZW1lbnQuZ2V0KCksIFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRl
XSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShbTlNTdHJpbmcgc3RyaW5nV2l0aEpT
U3RyaW5nUmVmOmF0dHJpYnV0ZV0pOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBkb3VibGVWYWx1ZV07CiAgICAg
cmV0dXJuIDA7CkBAIC02MjAsMTMgKzYxNSwxMyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnVpRWxlbWVudEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cgog
CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmlidXRlKSBjb25zdAogewot
ICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBbTlNTdHJpbmcg
c3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIGlkIHZhbHVlID0gYXR0cmli
dXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKHZhbHVlKTsKIH0KIAogYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpib29sQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYg
YXR0cmlidXRlKQogewotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50Lmdl
dCgpLCBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIGlk
IHZhbHVlID0gYXR0cmlidXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjph
dHRyaWJ1dGVdKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNz
XV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKICAgICByZXR1cm4gZmFsc2U7
CkBAIC02OTgsNyArNjkzLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVOYW1lcygpCiBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcgKnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFs
dWUoYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0
cmlidXRlKSwgbV9lbGVtZW50LmdldCgpKTsKKyAgICBOU1N0cmluZyAqcm9sZSA9IGRlc2NyaXB0
aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlKSk7
CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWFJvbGUiLCByb2xl
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTcwOCw3ICs3MDMsNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZSgpCiBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcgKnN1YnJvbGUgPSBk
ZXNjcmlwdGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vz
c2liaWxpdHlTdWJyb2xlQXR0cmlidXRlKSwgbV9lbGVtZW50LmdldCgpKTsKKyAgICBOU1N0cmlu
ZyAqc3Vicm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2li
aWxpdHlTdWJyb2xlQXR0cmlidXRlKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRl
QW5kVmFsdWUoQCJBWFN1YnJvbGUiLCBzdWJyb2xlKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCiAKQEAgLTcxOCwyNyArNzEzLDI3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb2xlRGVzY3JpcHRpb24oKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nKiByb2xlID0gZGVzY3JpcHRpb25PZlZhbHVl
KFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJv
bGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CisgICAgTlNTdHJpbmcg
KnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5
Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmli
dXRlQW5kVmFsdWUoQCJBWFJvbGVEZXNjcmlwdGlvbiIsIHJvbGUpOwogICAgIEVORF9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5n
KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyAqY29tcHV0
ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhBUklBUm9sZSJdLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5T
U3RyaW5nICpjb21wdXRlZFJvbGVTdHJpbmcgPSBkZXNjcmlwdGlvbk9mVmFsdWUoYXR0cmlidXRl
VmFsdWUoQCJBWEFSSUFSb2xlIikpOwogICAgIHJldHVybiBbY29tcHV0ZWRSb2xlU3RyaW5nIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU1N0cmluZyogdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGVdLCBt
X2VsZW1lbnQuZ2V0KCkpOworICAgIE5TU3RyaW5nICp0aXRsZSA9IGRlc2NyaXB0aW9uT2ZWYWx1
ZShhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZSkpOwogICAgIHJl
dHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhUaXRsZSIsIHRpdGxlKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc0OCw3ICs3NDMsNyBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUoKQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uKCkKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2Ny
aXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CisgICAg
TlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVl
KE5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlKSk7CiAgICAgcmV0dXJuIGNvbmNh
dGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWERlc2NyaXB0aW9uIiwgZGVzY3JpcHRpb24pOwog
ICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzU4LDcgKzc1Myw3IEBAIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6b3JpZW50YXRp
b24oKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSwgbV9lbGVtZW50
LmdldCgpKTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
YXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGUpKTsKICAg
ICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYT3JpZW50YXRpb24iLCBk
ZXNjcmlwdGlvbik7ICAgIAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzY4LDcg
Kzc2Myw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpvcmllbnRhdGlvbigpIGNvbnN0CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c3RyaW5nVmFsdWUoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRl
XSwgbV9lbGVtZW50LmdldCgpKTsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb24gPSBkZXNjcmlw
dGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGUp
KTsKICAgICBpZiAoZGVzY3JpcHRpb24pCiAgICAgICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJp
YnV0ZUFuZFZhbHVlKEAiQVhWYWx1ZSIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCkBAIC03NzksNyArNzc0LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbk9mVmFsdWUo
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExhbmd1YWdlIl0sIG1f
ZWxlbWVudC5nZXQoKSk7CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25P
ZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKEAiQVhMYW5ndWFnZSIpKTsKICAgICByZXR1cm4gY29uY2F0
ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYTGFuZ3VhZ2UiLCBkZXNjcmlwdGlvbik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03ODksNyArNzg0LDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omxhbmd1YWdlKCkKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoZWxwVGV4dCgpIGNvbnN0
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZV0sIG1fZWxlbWVudC5nZXQoKSk7CisgICAgTlNT
dHJpbmcgKmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKE5T
QWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGUpKTsKICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRy
aWJ1dGVBbmRWYWx1ZShAIkFYSGVscCIsIGRlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgCkBAIC03OTksNjcgKzc5NCw2NyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAogZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OngoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV07CisgICAgTlNW
YWx1ZSAqcG9zaXRpb25WYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVBvc2l0
aW9uQXR0cmlidXRlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25W
YWx1ZSBwb2ludFZhbHVlXS54KTsgICAgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IAorCiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojp5KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1ZhbHVlKiBwb3Np
dGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdOworICAgIE5TVmFsdWUgKnBvc2l0aW9uVmFsdWUg
PSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSk7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUgcG9pbnRWYWx1ZV0ueSk7
ICAgIAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiAwLjBm
OwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6d2lkdGgoKQogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUqIHNpemVWYWx1ZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1
dGVdOworICAgIE5TVmFsdWUgKnNpemVWYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJp
bGl0eVNpemVBdHRyaWJ1dGUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtzaXpl
VmFsdWUgc2l6ZVZhbHVlXS53aWR0aCk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IAorCiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpoZWlnaHQoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUq
IHNpemVWYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGVdOworICAgIE5TVmFsdWUgKnNpemVWYWx1ZSA9IGF0dHJp
YnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUpOwogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KFtzaXplVmFsdWUgc2l6ZVZhbHVlXS5oZWlnaHQpOwogICAgIEVORF9B
WF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiAwLjBmOwogfQogCiBkb3VibGUg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFgoKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2xpY2tQb2ludCJdOworICAgIE5TVmFsdWUg
KnBvc2l0aW9uVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYQ2xpY2tQb2ludCIpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLngpOyAg
ICAgICAgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIDAu
MGY7CiB9CiAKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjbGlja1BvaW50WSgpCiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNWYWx1ZSogcG9zaXRpb25WYWx1
ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhDbGlja1BvaW50
Il07CisgICAgTlNWYWx1ZSAqcG9zaXRpb25WYWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhDbGlj
a1BvaW50Iik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFsdWUg
cG9pbnRWYWx1ZV0ueSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAg
cmV0dXJuIDAuMGY7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpsaW5lUmVjdHNBbmRUZXh0KCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBpZCBsaW5lUmVjdHNBbmRUZXh0ID0gW21fZWxlbWVudCBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVSZWN0c0FuZFRleHQiXTsKKyAgICBpZCBsaW5l
UmVjdHNBbmRUZXh0ID0gYXR0cmlidXRlVmFsdWUoQCJBWExpbmVSZWN0c0FuZFRleHQiKTsKICAg
ICBpZiAoIVtsaW5lUmVjdHNBbmRUZXh0IGlzS2luZE9mQ2xhc3M6TlNBcnJheS5jbGFzc10pCiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgcmV0dXJuIFtbbGluZVJlY3RzQW5kVGV4dCBjb21wb25l
bnRzSm9pbmVkQnlTdHJpbmc6QCJ8Il0gY3JlYXRlSlNTdHJpbmdSZWZdOwpAQCAtODcxLDcgKzg2
Niw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5lUmVjdHNBbmRUZXh0KCkgY29uc3QKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
bnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQg
dmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlWYWx1ZUF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0Fj
Y2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNz
OltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91
YmxlVmFsdWVdOyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC04ODIsNyArODc3LDcg
QEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmludFZhbHVlKCkgY29uc3QKIGRvdWJs
ZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptaW5WYWx1ZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZV07CisgICAgaWQgdmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlNaW5WYWx1ZUF0dHJpYnV0ZSk7CiAg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICBy
ZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVdOyAKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCkBAIC04OTMsNyArODg4LDcgQEAgZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6Om1pblZhbHVlKCkKIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXhWYWx1ZSgp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVt
ZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlNYXhWYWx1ZUF0
dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlN
YXhWYWx1ZUF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJl
ciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWUgZG91YmxlVmFsdWVd
OyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC05MDQsMjIgKzg5OSwyMiBAQCBkb3Vi
bGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUoKQogSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnZhbHVlRGVzY3JpcHRpb24oKQogewogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nKiB2YWx1ZURlc2NyaXB0aW9u
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07CisgICAgTlNTdHJpbmcgKnZhbHVlRGVzY3JpcHRp
b24gPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlWYWx1ZURlc2NyaXB0aW9uQXR0cmli
dXRlKTsKICAgICBpZiAoW3ZhbHVlRGVzY3JpcHRpb24gaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcg
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJB
WFZhbHVlRGVzY3JpcHRpb24iLCB2YWx1ZURlc2NyaXB0aW9uKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogaW50IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6Omluc2VydGlvblBvaW50TGluZU51bWJlcigpCiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlJbnNlcnRpb25Qb2ludExpbmVOdW1iZXJB
dHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5
SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbKE5TTnVtYmVyICop
dmFsdWUgaW50VmFsdWVdOyAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAg
ICByZXR1cm4gLTE7CiB9CiAKQEAgLTk1NiwzOSArOTUxLDM5IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNEZWNyZW1lbnRBY3Rpb25TdXBwb3J0ZWQoKQogYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc0VuYWJsZWQoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUg
Ym9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNSZXF1aXJlZCgp
IGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUmVxdWlyZWQiXTsKKyAg
ICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhSZXF1aXJlZCIpOwogICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1
ZSBib29sVmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0ZvY3VzZWQo
KSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Rm9j
dXNlZEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2li
aWxpdHlGb2N1c2VkQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgpIGNvbnN0CiB7Ci0gICAgaWQg
dmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVNl
bGVjdGVkQXR0cmlidXRlKTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNz
aWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xMDAxLDIzICs5OTYsMjMgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojppc1NlbGVjdGVkT3B0aW9uQWN0aXZlKCkgY29uc3QKIAogYm9vbCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc0luZGV0ZXJtaW5hdGUoKSBjb25zdAogewotICAgIEJPT0wgcmVz
dWx0ID0gTk87CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1
ZUF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxp
dHlWYWx1ZUF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJl
ciBjbGFzc11dKQotICAgICAgICByZXN1bHQgPSBbdmFsdWUgaW50VmFsdWVdID09IDI7CisgICAg
ICAgIHJldHVybiBbdmFsdWUgaW50VmFsdWVdID09IDI7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIHJldHVybiByZXN1bHQ7CisKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNFeHBhbmRlZCgpIGNvbnN0CiB7CiAgICAgQkVHSU5f
QVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0ZV07CisgICAg
aWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlFeHBhbmRlZEF0dHJpYnV0
ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAg
ICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC0xMDI5LDcgKzEwMjQsNyBAQCBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzQ2hlY2tlZCgpIGNvbnN0CiAKIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjdXJyZW50U3RhdGVWYWx1
ZSgpIGNvbnN0CiB7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0
KCksIE5TQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50QXR0cmlidXRlKTsKKyAgICBpZCB2YWx1ZSA9
IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUFSSUFDdXJyZW50QXR0cmlidXRlKTsKICAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJl
dHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIHJldHVybiBudWxscHRyOwpAQCAt
MTAzNyw3ICsxMDMyLDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmN1cnJlbnRTdGF0ZVZhbHVlKCkgY29uc3QKIAogSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNvcnREaXJlY3Rpb24oKSBjb25zdAogewot
ICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vzc2li
aWxpdHlTb3J0RGlyZWN0aW9uQXR0cmlidXRlKTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZh
bHVlKE5TQWNjZXNzaWJpbGl0eVNvcnREaXJlY3Rpb25BdHRyaWJ1dGUpOwogICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1
ZSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xMDQ2LDcgKzEw
NDEsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c29ydERpcmVjdGlvbigpIGNvbnN0CiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFy
Y2hpY2FsTGV2ZWwoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5RGlzY2xvc3VyZUxldmVsQXR0cmlidXRlXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJp
YnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZSk7CiAgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1
cm4gW3ZhbHVlIGludFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0xMDU3
LDM5ICsxMDUyLDM5IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxM
ZXZlbCgpIGNvbnN0CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Y2xhc3NMaXN0KCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAi
QVhET01DbGFzc0xpc3QiXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhET01D
bGFzc0xpc3QiKTsKICAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNz
XV0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIE5TTXV0YWJsZVN0cmluZyog
Y2xhc3NMaXN0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworCisgICAgTlNNdXRhYmxlU3Ry
aW5nICpjbGFzc0xpc3QgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CiAgICAgTlNJbnRlZ2Vy
IGxlbmd0aCA9IFt2YWx1ZSBjb3VudF07CiAgICAgZm9yIChOU0ludGVnZXIgayA9IDA7IGsgPCBs
ZW5ndGg7ICsraykgewogICAgICAgICBbY2xhc3NMaXN0IGFwcGVuZFN0cmluZzpbdmFsdWUgb2Jq
ZWN0QXRJbmRleDprXV07CiAgICAgICAgIGlmIChrIDwgbGVuZ3RoIC0gMSkKICAgICAgICAgICAg
IFtjbGFzc0xpc3QgYXBwZW5kU3RyaW5nOkAiLCAiXTsKICAgICB9Ci0gICAgCisKICAgICByZXR1
cm4gW2NsYXNzTGlzdCBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzcGVha0FzKCkKIHsKICAgICBCRUdJTl9B
WF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhEUlRTcGVlY2hBdHRyaWJ1dGUiXTsKKyAgICBpZCB2YWx1ZSA9
IGF0dHJpYnV0ZVZhbHVlKEAiQVhEUlRTcGVlY2hBdHRyaWJ1dGUiKTsKICAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFtbKE5TQXJy
YXkgKil2YWx1ZSBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCIsICJdIGNyZWF0ZUpTU3RyaW5n
UmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgICAgIAorCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJl
ZCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlH
cmFiYmVkQXR0cmlidXRlXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNz
aWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwogICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTExMDAsMjEgKzEwOTUsMjEgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhSXNHcmFiYmVkKCkgY29uc3QKIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMoKSBjb25z
dAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVj
dHNBdHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmls
aXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUpOwogICAgIGlmICghW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TQXJyYXkgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBOU011dGFi
bGVTdHJpbmcqIGRyb3BFZmZlY3RzID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOworICAgIE5T
TXV0YWJsZVN0cmluZyAqZHJvcEVmZmVjdHMgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CiAg
ICAgTlNJbnRlZ2VyIGxlbmd0aCA9IFt2YWx1ZSBjb3VudF07CiAgICAgZm9yIChOU0ludGVnZXIg
ayA9IDA7IGsgPCBsZW5ndGg7ICsraykgewogICAgICAgICBbZHJvcEVmZmVjdHMgYXBwZW5kU3Ry
aW5nOlt2YWx1ZSBvYmplY3RBdEluZGV4OmtdXTsKICAgICAgICAgaWYgKGsgPCBsZW5ndGggLSAx
KQogICAgICAgICAgICAgW2Ryb3BFZmZlY3RzIGFwcGVuZFN0cmluZzpAIiwiXTsKICAgICB9Ci0g
ICAgCisKICAgICByZXR1cm4gW2Ryb3BFZmZlY3RzIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApA
QCAtMTI3NSw3MCArMTI3MCw3MCBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1uSGVhZGVycygpCiB7CiAgICAgLy8gbm90
IHlldCBkZWZpbmVkIGluIEFwcEtpdC4uLiBvZGQKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBOU0FycmF5KiBjb2x1bW5IZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2li
aWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ29sdW1uSGVhZGVyVUlFbGVtZW50cyJdOworICAgIE5T
QXJyYXkgKmNvbHVtbkhlYWRlcnNBcnJheSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhDb2x1bW5IZWFk
ZXJVSUVsZW1lbnRzIik7CiAgICAgYXV0byBjb2x1bW5IZWFkZXJzVmVjdG9yID0gbWFrZVZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbHVtbkhlYWRlcnNBcnJheSk7CiAg
ICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5IZWFkZXJzVmVjdG9yKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJp
YnV0ZXNPZlJvd0hlYWRlcnMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TQXJyYXkqIHJvd0hlYWRlcnNBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZVZhbHVlOkAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIl07CisgICAgTlNBcnJheSAqcm93SGVh
ZGVyc0FycmF5ID0gYXR0cmlidXRlVmFsdWUoQCJBWFJvd0hlYWRlclVJRWxlbWVudHMiKTsKICAg
ICBhdXRvIHJvd0hlYWRlcnNWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4ocm93SGVhZGVyc0FycmF5KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVs
ZW1lbnRzKHJvd0hlYWRlcnNWZWN0b3IpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAg
ICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mQ29sdW1ucygpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSogY29sdW1uc0FycmF5ID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0
dHJpYnV0ZV07CisgICAgTlNBcnJheSAqY29sdW1uc0FycmF5ID0gYXR0cmlidXRlVmFsdWUoTlNB
Y2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0ZSk7CiAgICAgYXV0byBjb2x1bW5zVmVjdG9yID0g
bWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNvbHVtbnNBcnJheSk7
CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVtZW50cyhjb2x1bW5zVmVjdG9yKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZlJvd3MoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkq
IHJvd3NBcnJheSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNj
ZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOworICAgIE5TQXJyYXkgKnJvd3NBcnJheSA9IGF0dHJp
YnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGUpOwogICAgIGF1dG8gcm93c1Zl
Y3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihyb3dzQXJy
YXkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMocm93c1ZlY3Rvcik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZWaXNpYmxlQ2VsbHMoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TQXJyYXkqIGNlbGxzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpAIkFYVmlzaWJsZUNlbGxzIl07CisgICAgTlNBcnJheSAqY2VsbHNBcnJheSA9IGF0dHJp
YnV0ZVZhbHVlKEAiQVhWaXNpYmxlQ2VsbHMiKTsKICAgICBhdXRvIGNlbGxzVmVjdG9yID0gbWFr
ZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGNlbGxzQXJyYXkpOwogICAg
IHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY2VsbHNWZWN0b3IpOwogICAgIEVORF9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mSGVh
ZGVyKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBoZWFkZXJPYmpl
Y3QgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlIZWFkZXJBdHRyaWJ1dGVdOworICAgIGlkIGhlYWRlck9iamVjdCA9IGF0dHJpYnV0ZVZhbHVl
KE5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZSk7CiAgICAgaWYgKCFoZWFkZXJPYmplY3Qp
CiAgICAgICAgIHJldHVybiBbQCIiIGNyZWF0ZUpTU3RyaW5nUmVmXTsKLSAgICAKLSAgICBWZWN0
b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gaGVhZGVyVmVjdG9yOworCisgICAg
VmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gaGVhZGVyVmVjdG9yOwogICAg
IGhlYWRlclZlY3Rvci5hcHBlbmQoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGhlYWRl
ck9iamVjdCkpOwogICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoaGVhZGVyVmVjdG9y
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIApAQCAtMTM2Myw3ICsxMzU4LDcgQEAgaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNvbHVtbkNvdW50KCkKIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEluVGFibGUo
KQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TTnVtYmVyKiBpbmRleE51
bWJlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eUluZGV4QXR0cmlidXRlXTsKKyAgICBOU051bWJlciAqaW5kZXhOdW1iZXIgPSBhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZSk7CiAgICAgaWYgKGluZGV4TnVt
YmVyKQogICAgICAgICByZXR1cm4gW2luZGV4TnVtYmVyIGludFZhbHVlXTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCkBAIC0xMzc1LDEzICsxMzcwLDEzIEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dJbmRleFJhbmdlKCkKIHsKICAgICBO
U1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoMCwgMCk7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgTlNWYWx1ZSogaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOkAiQVhSb3dJbmRleFJhbmdlIl07CisgICAgTlNWYWx1ZSAqaW5kZXhS
YW5nZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhSb3dJbmRleFJhbmdlIik7CiAgICAgaWYgKGluZGV4
UmFuZ2UpCiAgICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07Ci0gICAgTlNN
dXRhYmxlU3RyaW5nKiByYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAieyVsdSwgJWx1fSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdl
LmxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ocmFuZ2UubGVuZ3RoKV07Cisg
ICAgTlNNdXRhYmxlU3RyaW5nICpyYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBz
dHJpbmdXaXRoRm9ybWF0OkAieyVsdSwgJWx1fSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KHJhbmdlLmxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ocmFuZ2UubGVuZ3Ro
KV07CiAgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IApAQCAtMTM4OSwxMyArMTM4NCwxMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSW5kZXhSYW5nZSgpCiB7CiAgICAgTlNSYW5nZSByYW5n
ZSA9IE5TTWFrZVJhbmdlKDAsIDApOwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IE5TTnVtYmVyKiBpbmRleFJhbmdlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6QCJBWENvbHVtbkluZGV4UmFuZ2UiXTsKKyAgICBOU051bWJlciAqaW5kZXhSYW5nZSA9
IGF0dHJpYnV0ZVZhbHVlKEAiQVhDb2x1bW5JbmRleFJhbmdlIik7CiAgICAgaWYgKGluZGV4UmFu
Z2UpCiAgICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07Ci0gICAgTlNNdXRh
YmxlU3RyaW5nKiByYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAieyVsdSwgJWx1fSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxv
Y2F0aW9uKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ocmFuZ2UubGVuZ3RoKV07CisgICAg
TlNNdXRhYmxlU3RyaW5nICpyYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAieyVsdSwgJWx1fSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJh
bmdlLmxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ocmFuZ2UubGVuZ3RoKV07
CiAgICAgcmV0dXJuIFtyYW5nZURlc2NyaXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApA
QCAtMTQxNSw5ICsxNDEwLDkgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Omhvcml6b250YWxTY3JvbGxiYXIoKSBjb24KICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGVd
KTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3JlYXRlKGF0dHJpYnV0ZVZh
bHVlKE5TQWNjZXNzaWJpbGl0eUhvcml6b250YWxTY3JvbGxCYXJBdHRyaWJ1dGUpKTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TICAgIAotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTE0MjUsOSArMTQyMCw5IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2ZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX2VsZW1lbnQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAorCiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV0pOworICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpjcmVhdGUoYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5VmVydGlj
YWxTY3JvbGxCYXJBdHRyaWJ1dGUpKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TICAgICAg
ICAKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTQ1OCw3ICsxNDUzLDcgQEAgSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dFJhbmdl
KCkKIHsKICAgICBOU1JhbmdlIHJhbmdlID0gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNWYWx1ZSAqaW5kZXhSYW5nZSA9IGF0
dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0
UmFuZ2VBdHRyaWJ1dGUpOworICAgIE5TVmFsdWUgKmluZGV4UmFuZ2UgPSBhdHRyaWJ1dGVWYWx1
ZShOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZSk7CiAgICAgaWYgKGlu
ZGV4UmFuZ2UpCiAgICAgICAgIHJhbmdlID0gW2luZGV4UmFuZ2UgcmFuZ2VWYWx1ZV07CiAgICAg
TlNNdXRhYmxlU3RyaW5nKiByYW5nZURlc2NyaXB0aW9uID0gW05TTXV0YWJsZVN0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAieyVsdSwgJWx1fSIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJh
bmdlLmxvY2F0aW9uKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ocmFuZ2UubGVuZ3RoKV07
CkBAIC0xNTU1LDcgKzE1NTAsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNldFNl
bGVjdGVkQ2hpbGRBdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNBcnJheSAqc2VsZWN0ZWRDaGlsZHJlbiA9IGF0
dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGls
ZHJlbkF0dHJpYnV0ZSk7CisgICAgTlNBcnJheSAqc2VsZWN0ZWRDaGlsZHJlbiA9IGF0dHJpYnV0
ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUpOwogICAgIE5T
QXJyYXkgKmFycmF5ID0gQFtlbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpXTsKICAgICBpZiAo
c2VsZWN0ZWRDaGlsZHJlbikKICAgICAgICAgYXJyYXkgPSBbc2VsZWN0ZWRDaGlsZHJlbiBhcnJh
eUJ5QWRkaW5nT2JqZWN0c0Zyb21BcnJheTphcnJheV07CkBAIC0xNTY5LDcgKzE1NjQsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZVNlbGVjdGlvbkF0SW5kZXgodW5zaWdu
ZWQgaW5kZXgpIGNvbnN0CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBOU0FycmF5ICpzZWxlY3RlZENoaWxkcmVuID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50Lmdl
dCgpLCBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKTsKKyAgICBOU0Fy
cmF5ICpzZWxlY3RlZENoaWxkcmVuID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSk7CiAgICAgaWYgKCFzZWxlY3RlZENoaWxkcmVuKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTE1OTEsNyArMTU4Niw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphY2Nlc3NpYmlsaXR5VmFsdWUoKSBjb25zdAog
SlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50
RW5jb2RpbmcoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVl
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERvY3VtZW50RW5j
b2RpbmciXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhEb2N1bWVudEVuY29k
aW5nIik7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQog
ICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCkBAIC0xNjAxLDcgKzE1OTYsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRFbmNvZGluZygpCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9jdW1lbnRVUkkoKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWERvY3VtZW50VVJJIl07CisgICAgaWQgdmFs
dWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYRG9jdW1lbnRVUkkiKTsKICAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgY3Jl
YXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTE2MTEsNyAr
MTYwNiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpkb2N1bWVudFVSSSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dXJsKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1VS
TCAqdXJsID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3Np
YmlsaXR5VVJMQXR0cmlidXRlXTsKKyAgICBOU1VSTCAqdXJsID0gYXR0cmlidXRlVmFsdWUoTlNB
Y2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlKTsKICAgICByZXR1cm4gW1t1cmwgYWJzb2x1dGVTdHJp
bmddIGNyZWF0ZUpTU3RyaW5nUmVmXTsgICAgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwog
ICAgIHJldHVybiBudWxscHRyOwpAQCAtMTY2NiwxMyArMTY2MSwxMiBAQCBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0YWJsZSgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNNdWx0aVNlbGVjdGFibGUoKSBjb25zdAogewotICAgIEJPT0wgcmVzdWx0
ID0gTk87CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSXNNdWx0aVNlbGVjdGFibGUi
XTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhJc011bHRpU2VsZWN0YWJsZSIp
OwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAg
ICAgcmVzdWx0ID0gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgICAgIHJldHVybiBbdmFsdWUgYm9v
bFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIHJlc3VsdDsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNW
aXNpYmxlKCkgY29uc3QKQEAgLTE2ODIsNyArMTY3Niw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNWaXNpYmxlKCkgY29uc3QKIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc09uU2NyZWVuKCkgY29uc3QKIHsKLSAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1f
ZWxlbWVudC5nZXQoKSwgQCJBWElzT25TY3JlZW4iKTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0
ZVZhbHVlKEAiQVhJc09uU2NyZWVuIik7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTcwMSw3ICsxNjk1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojppc0NvbGxhcHNlZCgpIGNvbnN0CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW1iZWRkZWRJbWFnZURlc2NyaXB0aW9uKCkgY29uc3QKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyAqdmFsdWUgPSBkZXNj
cmlwdGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBAIkFYRW1iZWRk
ZWRJbWFnZURlc2NyaXB0aW9uIiksIG1fZWxlbWVudC5nZXQoKSk7CisgICAgTlNTdHJpbmcgKnZh
bHVlID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKEAiQVhFbWJlZGRlZEltYWdl
RGVzY3JpcHRpb24iKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUo
QCJBWEVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbiIsIHZhbHVlKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0xNzEwLDcgKzE3MDQsNyBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW1iZWRkZWRJbWFn
ZURlc2NyaXB0aW9uKCkgY29ucwogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpp
bWFnZU92ZXJsYXlFbGVtZW50cygpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJ
T05TCi0gICAgcmV0dXJuIG1ha2VKU0FycmF5KG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIEAiQVhJbWFnZU92
ZXJsYXlFbGVtZW50cyIpKSk7CisgICAgcmV0dXJuIG1ha2VKU0FycmF5KG1ha2VWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShAIkFYSW1hZ2VPdmVy
bGF5RWxlbWVudHMiKSkpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTczOCw3ICsxNzMyLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc011bHRpTGluZSgpIGNvbnN0CiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhh
c1BvcHVwKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2
YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhIYXNQb3B1
cCJdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoQCJBWEhhc1BvcHVwIik7CiAgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1
cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTc0
OSw3ICsxNzQzLDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQb3B1cCgpIGNv
bnN0CiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cG9w
dXBWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQg
dmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYUG9wdXBW
YWx1ZSJdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoQCJBWFBvcHVwVmFsdWUiKTsK
ICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAg
IHJldHVybiBbdmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQ
VElPTlMKQEAgLTE5MDMsNyArMTg5Nyw3IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
clJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyUmFuZ2VGb3JSCiBSZWZQ
dHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIGlkIHRleHRNYXJrZXJSYW5nZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQo
KSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2VBdHRyaWJ1dGUpOworICAg
IGlkIHRleHRNYXJrZXJSYW5nZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlKTsKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZTo6Y3JlYXRlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwogCkBAIC0xOTEyLDcgKzE5MDYsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2Vy
UgogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlc2V0U2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UoKQogewotICAgIGlkIHN0YXJ0ID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgp
LCBAIkFYU3RhcnRUZXh0TWFya2VyIik7CisgICAgaWQgc3RhcnQgPSBhdHRyaWJ1dGVWYWx1ZShA
IkFYU3RhcnRUZXh0TWFya2VyIik7CiAgICAgaWYgKCFzdGFydCkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yMTIyLDI0ICsyMTE2LDI0IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KGludCB0CiAgICAgCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9Ci0gICAgCisKIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKCkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB0ZXh0TWFya2VyID0gW21fZWxlbWVudCBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFN0YXJ0VGV4dE1hcmtlciJdOworICAgIGlk
IHRleHRNYXJrZXIgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYU3RhcnRUZXh0TWFya2VyIik7CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVhdGUodGV4dE1hcmtlcik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZW5kVGV4dE1hcmtlcigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQg
dGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhF
bmRUZXh0TWFya2VyIl07CisgICAgaWQgdGV4dE1hcmtlciA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhF
bmRUZXh0TWFya2VyIik7CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyOjpjcmVh
dGUodGV4dE1hcmtlcik7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKQEAgLTIyODAsMzQgKzIyNzQsMzQgQEAgc3RhdGljIE5TU3Ry
aW5nICpfY29udmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcoTlNBcnJheSAqcGFpcnMp
CiAgICAgICAgIGZvciAoTlNTdHJpbmcgKmtleSBpbiBwYWlyKQogICAgICAgICAgICAgW3Jlc3Vs
dCBhcHBlbmRGb3JtYXQ6QCJcdCVsdS4gJUAgPSAlQFxuIiwgKHVuc2lnbmVkIGxvbmcpaW5kZXgs
IGtleSwgW1twYWlyIG9iamVjdEZvcktleTprZXldIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXV07CiAgICAgfV07Ci0gICAgCisKICAg
ICByZXR1cm4gcmVzdWx0OwogfQotICAgIAorCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFBvc3RzY3JpcHRzRGVzY3JpcHRpb24oKSBjb25zdAog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkgKnBhaXJzID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWE1hdGhQb3N0c2NyaXB0cyJd
OworICAgIE5TQXJyYXkgKnBhaXJzID0gYXR0cmlidXRlVmFsdWUoQCJBWE1hdGhQb3N0c2NyaXB0
cyIpOwogICAgIHJldHVybiBbX2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKHBh
aXJzKSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAg
IAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYXRoUHJlc2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5ICpwYWlycyA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUHJlc2NyaXB0cyJd
OworICAgIE5TQXJyYXkgKnBhaXJzID0gYXR0cmlidXRlVmFsdWUoQCJBWE1hdGhQcmVzY3JpcHRz
Iik7CiAgICAgcmV0dXJuIFtfY29udmVydE1hdGhNdWx0aXNjcmlwdFBhaXJzVG9TdHJpbmcocGFp
cnMpIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
CisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjptYXRoUm9vdFJhZGljYW5kKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VY
Q0VQVElPTlMKLSAgICByZXR1cm4gbWFrZUpTQXJyYXkobWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgQCJBWE1h
dGhSb290UmFkaWNhbmQiKSkpOworICAgIHJldHVybiBtYWtlSlNBcnJheShtYWtlVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFsdWUoQCJBWE1hdGhSb290
UmFkaWNhbmQiKSkpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKIAogICAgIHJldHVybiBu
dWxscHRyOwpAQCAtMjMxNyw4ICsyMzExLDggQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCiAgICAgTlNNdXRhYmxlU3RyaW5nICpyZXN1bHQgPSBbTlNN
dXRhYmxlU3RyaW5nIHN0cmluZ1dpdGhTdHJpbmc6QCJcblN0YXJ0IFBhdGhcbiJdOwotICAgIE5T
QmV6aWVyUGF0aCAqYmV6aWVyUGF0aCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVBhdGhBdHRyaWJ1dGVdOwotICAgIAorICAgIE5TQmV6aWVy
UGF0aCAqYmV6aWVyUGF0aCA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVBhdGhBdHRy
aWJ1dGUpOworCiAgICAgTlNVSW50ZWdlciBlbGVtZW50Q291bnQgPSBbYmV6aWVyUGF0aCBlbGVt
ZW50Q291bnRdOwogICAgIE5TUG9pbnQgcG9pbnRzWzNdOwogICAgIGZvciAoTlNVSW50ZWdlciBp
ID0gMDsgaSA8IGVsZW1lbnRDb3VudDsgaSsrKSB7CkBAIC0yMzI2LDI0ICsyMzIwLDI0IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3Jp
cHRpb24oKSBjb25zdAogICAgICAgICBjYXNlIE5TTW92ZVRvQmV6aWVyUGF0aEVsZW1lbnQ6CiAg
ICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIlx0TW92ZSB0byBwb2ludFxuIl07CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCiAgICAgICAgIGNhc2UgTlNMaW5lVG9C
ZXppZXJQYXRoRWxlbWVudDoKICAgICAgICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXHRM
aW5lIHRvXG4iXTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCisKICAgICAgICAg
Y2FzZSBOU0N1cnZlVG9CZXppZXJQYXRoRWxlbWVudDoKICAgICAgICAgICAgIFtyZXN1bHQgYXBw
ZW5kU3RyaW5nOkAiXHRDdXJ2ZSB0b1xuIl07CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIAorCiAgICAgICAgIGNhc2UgTlNDbG9zZVBhdGhCZXppZXJQYXRoRWxlbWVudDoKICAgICAg
ICAgICAgIFtyZXN1bHQgYXBwZW5kU3RyaW5nOkAiXHRDbG9zZVxuIl07CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBbcmVzdWx0IGNyZWF0
ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442706</attachid>
            <date>2021-10-28 07:42:23 -0700</date>
            <delta_ts>2021-10-28 13:34:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232415-20211028104222.patch</filename>
            <type>text/plain</type>
            <size>54742</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0OTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjIxN2JjMjBlOGE1OGE3
NWYzZWRjYjY1NjRjOWI2MmJlYTBjZTA3ZS4uMGM3MGY4NDE0NDI1ZGFkZDEwMWViNDgwOThhYjY1
ZmZlYWZiMWMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIxLTEwLTI4ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBJc29sYXRlZCB0
cmVlIG1vZGU6IERpc3BhdGNoIGFsbCBjYWxscyB0byBbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlXSBpbiBXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQgdG8gdGhlIEFYIHRocmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMjQxNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODQ3Mzg0
ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRmxlaXphY2guCisKKyAgICAgICAgQWRk
ZWQgQVNTRVJUUyB0byB2ZXJpZnkgdGhhdCBBWElzb2xhdGVkVHJlZTo6bm9kZUZvcklEIGFuZAor
ICAgICAgICBhcHBseVBlbmRpbmdDaGFuZ2VzIGFyZSBjYWxsZWQgb24gdGhlIEFYIHRocmVhZCBp
biBpc29sYXRlZCB0cmVlIG1vZGUgMi4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvaXNvbGF0
ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYSXNvbGF0ZWRU
cmVlOjpub2RlRm9ySUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhJc29sYXRlZFRyZWU6
OmFwcGx5UGVuZGluZ0NoYW5nZXMpOgorCiAyMDIxLTEwLTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxt
cm9iaW5zb25Ad2Via2l0Lm9yZz4KIAogICAgICAgICBFbGltaW5hdGUgZHVwbGljYXRlZCBwbGF0
Zm9ybS1zcGVjaWZpYyBjb2RlIGluIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xh
dGVkVHJlZS5jcHAKaW5kZXggYzFkYmE0MTEyYjY0NjE2OWZkYTI2YWI2NWU3YzY1NTBjODVlMDMw
YS4uOGVjOTEzYjljMWVlOGI5YjA5ZjUwOTc3ZmFlZTFkOTkyZmVlOTBkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNv
bGF0ZWRUcmVlLmNwcApAQCAtMTQyLDYgKzE0Miw3IEBAIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4g
QVhJc29sYXRlZFRyZWU6OnRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogUmVm
UHRyPEFYSXNvbGF0ZWRPYmplY3Q+IEFYSXNvbGF0ZWRUcmVlOjpub2RlRm9ySUQoQVhJRCBheElE
KSBjb25zdAogewogICAgIC8vIEluIGlzb2xhdGVkIHRyZWUgbW9kZSAyLCBvbmx5IGFjY2VzcyBt
X3JlYWRlclRocmVhZE5vZGVNYXAgb24gdGhlIEFYIHRocmVhZC4KKyAgICBBU1NFUlQobV91c2Vk
T25BWFRocmVhZCA/ICFpc01haW5UaHJlYWQoKSA6IGlzTWFpblRocmVhZCgpKTsKICAgICBpZiAo
bV91c2VkT25BWFRocmVhZCAmJiBpc01haW5UaHJlYWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKQEAgLTQ0MSw2ICs0NDIsNyBAQCB2b2lkIEFYSXNvbGF0ZWRUcmVlOjphcHBseVBlbmRp
bmdDaGFuZ2VzKCkKICAgICBBWFRSQUNFKCJBWElzb2xhdGVkVHJlZTo6YXBwbHlQZW5kaW5nQ2hh
bmdlcyIpOwogCiAgICAgLy8gSW4gaXNvbGF0ZWQgdHJlZSBtb2RlIDIsIG9ubHkgYXBwbHkgcGVu
ZGluZyBjaGFuZ2VzIG9uIHRoZSBBWCB0aHJlYWQuCisgICAgQVNTRVJUKG1fdXNlZE9uQVhUaHJl
YWQgPyAhaXNNYWluVGhyZWFkKCkgOiBpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKG1fdXNlZE9u
QVhUaHJlYWQgJiYgaXNNYWluVGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDY2NDBjZjRkZjRhNDcy
NGU0NGE2MDAzMjM5NDcyYjhjZjIwMmI3MjEuLjY2MDI0NTNkMmUyZDliNTM4NGE4ZjBkOWU1OTZl
MzRlNDBlZTM1N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMDcgQEAKKzIwMjEtMTAtMjggIEFuZHJlcyBHb256YWxleiAgPGFu
ZHJlc2dfMjJAYXBwbGUuY29tPgorCisgICAgICAgIElzb2xhdGVkIHRyZWUgbW9kZTogRGlzcGF0
Y2ggYWxsIGNhbGxzIHRvIFtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWVdIGluIFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudCB0byB0aGUg
QVggdGhyZWFkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjMyNDE1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NDczODQ4Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBDaHJpcyBGbGVpemFjaC4KKworICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSB0
byBzaW11bGF0ZSBydW5uaW5nIGFjY2Vzc2liaWxpdHkgbGF5b3V0IHRlc3RzIG9uIHRoZQorICAg
ICAgICBzZWNvbmRhcnkgQVggdGhyZWFkLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5t
bToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb25PZlZh
bHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6ZGVzY3JpcHRpb25PZkVsZW1lbnRzKToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlVmFsdWUgY29uc3QpOgor
ICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb21JZGVudGlmaWVyIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0TGlua2VkVUlFbGVt
ZW50cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmdldERvY3VtZW50
TGlua3MpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRVSUVsZW1l
bnRzV2l0aEF0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNoaWxkcmVuIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6Z2V0Q2hpbGRyZW4pOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojpyb3dIZWFkZXJzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y29sdW1uSGVhZGVycyBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmVsZW1lbnRGb3JBdHRyaWJ1dGUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjplbGVtZW50Rm9yQXR0cmlidXRlQXRJbmRleCBjb25zdCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRldGFpbHNFbGVtZW50cyBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVycm9yTWVzc2FnZUVsZW1l
bnRzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWxsQXR0
cmlidXRlcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0Rl
c2NyaXB0aW9uT2ZBdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZSBjb25zdCk6CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmJvb2xBdHRyaWJ1dGVWYWx1ZSk6Cisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdWJyb2xlKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKToKKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6Y29tcHV0ZWRSb2xlU3RyaW5nKToKKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dGl0bGUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpkZXNjcmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6Om9yaWVudGF0aW9uIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c3RyaW5nVmFsdWUpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpsYW5ndWFnZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omhl
bHBUZXh0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6eCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnkpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp3aWR0aCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmhlaWdodCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNsaWNrUG9pbnRYKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6Y2xpY2tQb2ludFkpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5lUmVjdHNBbmRUZXh0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aW50VmFsdWUgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjptaW5WYWx1ZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1h
eFZhbHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dmFsdWVEZXNj
cmlwdGlvbik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omluc2VydGlv
blBvaW50TGluZU51bWJlcik6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmlzRW5hYmxlZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVx
dWlyZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0Zv
Y3VzZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1Nl
bGVjdGVkIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNJ
bmRldGVybWluYXRlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNFeHBhbmRlZCBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmN1cnJlbnRTdGF0ZVZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c29ydERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsIGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xhc3NMaXN0IGNvbnN0KToKKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphcmlhRHJvcEVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV1RS
OjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVzT2ZDb2x1bW5IZWFkZXJzKToKKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRlc09mUm93SGVhZGVy
cyk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNv
bHVtbnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZSb3dzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mVmlzaWJsZUNlbGxzKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YXR0cmlidXRlc09mSGVhZGVyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aW5kZXhJblRhYmxlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
cm93SW5kZXhSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNv
bHVtbkluZGV4UmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpo
b3Jpem9udGFsU2Nyb2xsYmFyIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSk6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnNldFNlbGVjdGVkQ2hpbGRBdEluZGV4IGNvbnN0KToKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlU2VsZWN0aW9uQXRJbmRleCBj
b25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5j
b2RpbmcpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudFVS
SSk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVybCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlIGNvbnN0KToK
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNPblNjcmVlbiBjb25zdCk6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVtYmVkZGVkSW1hZ2VEZXNj
cmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omlt
YWdlT3ZlcmxheUVsZW1lbnRzIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aGFzUG9wdXAgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojpwb3B1cFZhbHVlIGNvbnN0KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2VsZWN0ZWRUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RhcnRUZXh0TWFya2VyKToKKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZW5kVGV4dE1hcmtlcik6CisgICAgICAgIChX
VFI6Ol9jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyk6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNE
ZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
Om1hdGhSb290UmFkaWNhbmQgY29uc3QpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpwYXRoRGVzY3JpcHRpb24gY29uc3QpOgorICAgICAgICAoV1RSOjpkZXNjcmlwdGlv
bk9mVmFsdWUpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjphdHRyaWJ1dGVzT2ZFbGVtZW50KTog
RGVsZXRlZC4KKwogMjAyMS0xMC0yNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdG9yZSBXUFQtc3R5bGUgZnV6enkgcGl4ZWwgbWF0Y2hpbmcgZGF0
YSBpbiBJbWFnZURpZmZSZXN1bHQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggZDM1
NGU5ZDRkZDhiNjBlZmYzY2RlODBhZWZiZjZlY2Y3NWI3ZWIyOS4uYWRhMmY1Mjk0Njc5NDMzMzE0
NzQyODkxZTkxYTlkNzNlZGQyNjg1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAg
LTM5Nyw2ICszOTcsMTEgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBs
YXRmb3JtVUlFbGVtZW50KTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNvbnN0IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQmKTsKIAorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZCBhdHRyaWJ1
dGVWYWx1ZShOU1N0cmluZyAqKSBjb25zdDsKKyAgICBOU1N0cmluZyAqZGVzY3JpcHRpb25PZlZh
bHVlKGlkIHZhbHVlT2JqZWN0KSBjb25zdDsKKyNlbmRpZgorCiAjaWYgIVBMQVRGT1JNKENPQ09B
KSAmJiAhVVNFKEFUU1BJKQogICAgIFBsYXRmb3JtVUlFbGVtZW50IG1fZWxlbWVudDsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggMjUzM2Nl
ZjJkZmE3MjhkNGUwNzhlZTllNTM1YjM0ZjJiMTU1NDlmNS4uMTdlYThhNTBiNTA5YWQ0MzJjZTYw
YWJhYzJlNjJmNTY1MTk2ZWQ3NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShpZCBl
bGVtZW50LCBOU1N0cmluZyogYXR0cmlidXRlLCBpZCB2YWx1ZSwgYm9vbCBzeW5jaHJvbm8KICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiB9CiAKLXN0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRp
b25PZlZhbHVlKGlkIHZhbHVlT2JqZWN0LCBpZCBlbGVtZW50KQorTlNTdHJpbmcgKkFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCkgY29uc3QK
IHsKICAgICBpZiAoIXZhbHVlT2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtMTg3LDgg
KzE4Nyw4IEBAIHN0YXRpYyBOU1N0cmluZyogZGVzY3JpcHRpb25PZlZhbHVlKGlkIHZhbHVlT2Jq
ZWN0LCBpZCBlbGVtZW50KQogICAgICAgICByZXR1cm4gWyhOU051bWJlciopdmFsdWVPYmplY3Qg
c3RyaW5nVmFsdWVdOwogCiAgICAgaWYgKFt2YWx1ZU9iamVjdCBpc0tpbmRPZkNsYXNzOltOU1Zh
bHVlIGNsYXNzXV0pIHsKLSAgICAgICAgTlNTdHJpbmcqIHR5cGUgPSBbTlNTdHJpbmcgc3RyaW5n
V2l0aENTdHJpbmc6W3ZhbHVlT2JqZWN0IG9iakNUeXBlXSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5n
RW5jb2RpbmddOwotICAgICAgICBOU1ZhbHVlKiB2YWx1ZSA9IChOU1ZhbHVlKil2YWx1ZU9iamVj
dDsKKyAgICAgICAgTlNTdHJpbmcgKnR5cGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aENTdHJpbmc6
W3ZhbHVlT2JqZWN0IG9iakNUeXBlXSBlbmNvZGluZzpOU0FTQ0lJU3RyaW5nRW5jb2RpbmddOwor
ICAgICAgICBOU1ZhbHVlICp2YWx1ZSA9IChOU1ZhbHVlICopdmFsdWVPYmplY3Q7CiAgICAgICAg
IGlmIChbdHlwZSByYW5nZU9mU3RyaW5nOkAiTlNSZWN0Il0ubGVuZ3RoID4gMCkKICAgICAgICAg
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIk5TUmVjdDogJUAiLCBOU1N0
cmluZ0Zyb21SZWN0KFt2YWx1ZSByZWN0VmFsdWVdKV07CiAgICAgICAgIGlmIChbdHlwZSByYW5n
ZU9mU3RyaW5nOkAiTlNQb2ludCJdLmxlbmd0aCA+IDApCkBAIC0yMDAsMTUgKzIwMCwxNSBAQCBz
dGF0aWMgTlNTdHJpbmcqIGRlc2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZWxl
bWVudCkKICAgICB9CiAKICAgICAvLyBTdHJpcCBhYnNvbHV0ZSBVUkwgcGF0aHMKLSAgICBOU1N0
cmluZyogZGVzY3JpcHRpb24gPSBbdmFsdWVPYmplY3QgZGVzY3JpcHRpb25dOworICAgIE5TU3Ry
aW5nICpkZXNjcmlwdGlvbiA9IFt2YWx1ZU9iamVjdCBkZXNjcmlwdGlvbl07CiAgICAgTlNSYW5n
ZSByYW5nZSA9IFtkZXNjcmlwdGlvbiByYW5nZU9mU3RyaW5nOkAiTGF5b3V0VGVzdHMiXTsKICAg
ICBpZiAocmFuZ2UubGVuZ3RoKQogICAgICAgICByZXR1cm4gW2Rlc2NyaXB0aW9uIHN1YnN0cmlu
Z0Zyb21JbmRleDpyYW5nZS5sb2NhdGlvbl07CiAKICAgICAvLyBTdHJpcCBwb2ludGVyIGxvY2F0
aW9ucwogICAgIGlmIChbZGVzY3JpcHRpb24gcmFuZ2VPZlN0cmluZzpAIjB4Il0ubGVuZ3RoKSB7
Ci0gICAgICAgIE5TU3RyaW5nKiByb2xlID0gYXR0cmlidXRlVmFsdWUoZWxlbWVudCwgTlNBY2Nl
c3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSk7Ci0gICAgICAgIE5TU3RyaW5nKiB0aXRsZSA9IGF0dHJp
YnV0ZVZhbHVlKGVsZW1lbnQsIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlKTsKKyAgICAg
ICAgTlNTdHJpbmcgKnJvbGUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlSb2xlQXR0
cmlidXRlKTsKKyAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nl
c3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUpOwogICAgICAgICBpZiAodGl0bGUubGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAnJUAnPiIs
IHJvbGUsIHRpdGxlXTsKICAgICAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0
OkAiPCVAPiIsIHJvbGVdOwpAQCAtMjE3LDI5ICsyMTcsNiBAQCBzdGF0aWMgTlNTdHJpbmcqIGRl
c2NyaXB0aW9uT2ZWYWx1ZShpZCB2YWx1ZU9iamVjdCwgaWQgZWxlbWVudCkKICAgICByZXR1cm4g
W3ZhbHVlT2JqZWN0IGRlc2NyaXB0aW9uXTsKIH0KIAotc3RhdGljIE5TU3RyaW5nICphdHRyaWJ1
dGVzT2ZFbGVtZW50KGlkIGFjY2Vzc2liaWxpdHlPYmplY3QpCi17Ci0gICAgYXV0byBhdHRyaWJ1
dGVzID0gc3VwcG9ydGVkQXR0cmlidXRlcyhhY2Nlc3NpYmlsaXR5T2JqZWN0KTsKLQotICAgIE5T
TXV0YWJsZVN0cmluZyogYXR0cmlidXRlc1N0cmluZyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5n
XTsKLSAgICBmb3IgKE5TU3RyaW5nKiBhdHRyaWJ1dGUgaW4gYXR0cmlidXRlcy5nZXQoKSkgewot
ICAgICAgICAvLyBQb3NpdGlvbiBwcm92aWRlcyB1c2VsZXNzIGFuZCBzY3JlZW4tc3BlY2lmaWMg
aW5mb3JtYXRpb24sIHNvIHdlIGRvIG5vdAotICAgICAgICAvLyB3YW50IHRvIGluY2x1ZGUgaXQg
Zm9yIHRoZSBzYWtlIG9mIHVuaXZlcnNhbGx5IHBhc3NpbmcgdGVzdHMuCi0gICAgICAgIGlmIChb
YXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUG9zaXRpb24iXSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIC8vIFNraXAgc2NyZWVuLXNwZWNpZmljIGluZm9ybWF0aW9uLgot
ICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJfQVhQcmltYXJ5U2NyZWVu
SGVpZ2h0Il0gfHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFJlbGF0aXZlRnJhbWUi
XSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlkIHZhbHVlT2JqZWN0ID0gYXR0
cmlidXRlVmFsdWUoYWNjZXNzaWJpbGl0eU9iamVjdCwgYXR0cmlidXRlKTsKLSAgICAgICAgTlNT
dHJpbmcqIHZhbHVlID0gZGVzY3JpcHRpb25PZlZhbHVlKHZhbHVlT2JqZWN0LCBhY2Nlc3NpYmls
aXR5T2JqZWN0KTsKLSAgICAgICAgW2F0dHJpYnV0ZXNTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUA6
ICVAXG4iLCBhdHRyaWJ1dGUsIHZhbHVlXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYXR0cmlidXRl
c1N0cmluZzsKLX0KLQogc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBjb25jYXRlbmF0
ZUF0dHJpYnV0ZUFuZFZhbHVlKE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TU3RyaW5nKiB2YWx1ZSkK
IHsKICAgICBWZWN0b3I8VW5pQ2hhcj4gYnVmZmVyKFthdHRyaWJ1dGUgbGVuZ3RoXSk7CkBAIC0y
NTQsMTEgKzIzMSwxMSBAQCBzdGF0aWMgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUoTlNTdHJpbmcqIGF0dHJpYnV0ZQogICAgIHJldHVybiBhZG9w
dChKU1N0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXpl
KCkpKTsKIH0KIAotc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkZXNjcmlwdGlvbk9m
RWxlbWVudHMoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiBlbGVtZW50
VmVjdG9yKQorc3RhdGljIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBkZXNjcmlwdGlvbk9mRWxl
bWVudHMoY29uc3QgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1l
bnRzKQogewotICAgIE5TTXV0YWJsZVN0cmluZyogYWxsRWxlbWVudFN0cmluZyA9IFtOU011dGFi
bGVTdHJpbmcgc3RyaW5nXTsKLSAgICBmb3IgKGF1dG8gdWlFbGVtZW50IDogZWxlbWVudFZlY3Rv
cikgewotICAgICAgICBOU1N0cmluZyogYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXNPZkVsZW1lbnQo
dWlFbGVtZW50LT5wbGF0Zm9ybVVJRWxlbWVudCgpKTsKKyAgICBOU011dGFibGVTdHJpbmcgKmFs
bEVsZW1lbnRTdHJpbmcgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgZm9yIChhdXRv
IGVsZW1lbnQgOiBlbGVtZW50cykgeworICAgICAgICBOU1N0cmluZyAqYXR0cmlidXRlcyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6ZWxlbWVudC0+YWxsQXR0cmlidXRlcygpLmdl
dCgpXTsKICAgICAgICAgW2FsbEVsZW1lbnRTdHJpbmcgYXBwZW5kRm9ybWF0OkAiJUBcbi0tLS0t
LS0tLS0tLVxuIiwgYXR0cmlidXRlc107CiAgICAgfQogCkBAIC0zMzYsOSArMzEzLDE0IEBAIHN0
YXRpYyBOU0RpY3Rpb25hcnkgKm1pc3NwZWxsaW5nU2VhcmNoUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZUZvckNyaXRlcmlhKEFjY2Vzc2liCiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKK2lubGlu
ZSBpZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVWYWx1ZShOU1N0cmluZyAqYXR0
cmlidXRlTmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gV1RSOjphdHRyaWJ1dGVWYWx1ZShtX2Vs
ZW1lbnQuZ2V0KCksIGF0dHJpYnV0ZU5hbWUpOworfQorCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZG9tSWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAg
aWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0
eURPTUlkZW50aWZpZXJBdHRyaWJ1dGUpOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUo
TlNBY2Nlc3NpYmlsaXR5RE9NSWRlbnRpZmllckF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGNy
ZWF0ZUpTU3RyaW5nUmVmXTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTM0NiwxNyArMzI4LDE3
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb21J
ZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRMaW5r
ZWRVSUVsZW1lbnRzKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBlbGVt
ZW50VmVjdG9yKQogewotICAgIGVsZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0Fj
Y2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlKSk7CisgICAgZWxlbWVudFZlY3Rv
ciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVW
YWx1ZShOU0FjY2Vzc2liaWxpdHlMaW5rZWRVSUVsZW1lbnRzQXR0cmlidXRlKSk7CiB9CiAKIHZv
aWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0RG9jdW1lbnRMaW5rcyhWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiYgZWxlbWVudFZlY3RvcikKIHsKLSAgICBlbGVtZW50
VmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJp
YnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgQCJBWExpbmtVSUVsZW1lbnRzIikpOworICAgIGVs
ZW1lbnRWZWN0b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4o
YXR0cmlidXRlVmFsdWUoQCJBWExpbmtVSUVsZW1lbnRzIikpOwogfQogCiB2b2lkIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmdldFVJRWxlbWVudHNXaXRoQXR0cmlidXRlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSwgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4mIGVsZW1lbnRz
KSBjb25zdAogewotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgp
LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOworICAgIGlkIHZh
bHVlID0gYXR0cmlidXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRy
aWJ1dGVdKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkK
ICAgICAgICAgZWxlbWVudHMgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Pj4odmFsdWUpOwogfQpAQCAtMzY0LDcgKzM0Niw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Z2V0VUlFbGVtZW50c1dpdGhBdHRyaWJ1dGUoSlNTdHJpbmdSZWYgYXR0cmlidXRl
LCBWCiBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxkcmVuKCkgY29uc3QK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICByZXR1cm4gbWFrZUpTQXJyYXko
bWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVl
KG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGUpKSk7Cisg
ICAgcmV0dXJuIG1ha2VKU0FycmF5KG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSkp
KTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAg
LTM3Miw3ICszNTQsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNoaWxk
cmVuKCkgY29uc3QKIAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpnZXRDaGlsZHJlbihW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mIGVsZW1lbnRWZWN0b3IpCiB7
Ci0gICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eUNo
aWxkcmVuQXR0cmlidXRlKSk7CisgICAgZWxlbWVudFZlY3RvciA9IG1ha2VWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlD
aGlsZHJlbkF0dHJpYnV0ZSkpOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Omdl
dENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4g
PiYgZWxlbWVudFZlY3RvciwgdW5zaWduZWQgbG9jYXRpb24sIHVuc2lnbmVkIGxlbmd0aCkKQEAg
LTM5MCw3ICszNzIsNyBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hl
YWRlcnMoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIFZlY3Rv
cjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGVsZW1lbnRzOwotICAgIGlkIHZhbHVl
ID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vzc2liaWxpdHlSb3dIZWFk
ZXJVSUVsZW1lbnRzQXR0cmlidXRlKTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5T
QWNjZXNzaWJpbGl0eVJvd0hlYWRlclVJRWxlbWVudHNBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQogICAgICAgICBlbGVtZW50cyA9IG1h
a2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7CiAgICAgcmV0
dXJuIG1ha2VKU0FycmF5KGVsZW1lbnRzKTsKQEAgLTQwMSw3ICszODMsNyBAQCBKU1ZhbHVlUmVm
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdAogewogICAgIEJF
R0lOX0FYX09CSkNfRVhDRVBUSU9OUwogICAgIFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+IGVsZW1lbnRzOwotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVt
ZW50LmdldCgpLCBOU0FjY2Vzc2liaWxpdHlDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRl
KTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUNvbHVtbkhl
YWRlclVJRWxlbWVudHNBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNBcnJheSBjbGFzc11dKQogICAgICAgICBlbGVtZW50cyA9IG1ha2VWZWN0b3I8UmVmUHRyPEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pih2YWx1ZSk7CiAgICAgcmV0dXJuIG1ha2VKU0FycmF5KGVs
ZW1lbnRzKTsKQEAgLTQ1MSwxMyArNDMzLDEzIEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpjaGlsZEF0SW5kZXgodW5zaWduZWQgaW5kCiAK
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpl
bGVtZW50Rm9yQXR0cmlidXRlKE5TU3RyaW5nKiBhdHRyaWJ1dGUpIGNvbnN0CiB7Ci0gICAgaWQg
ZWxlbWVudCA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgYXR0cmlidXRlKTsKKyAg
ICBpZCBlbGVtZW50ID0gYXR0cmlidXRlVmFsdWUoYXR0cmlidXRlKTsKICAgICByZXR1cm4gZWxl
bWVudCA/IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KSA6IFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50PigpOwogfQogCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxl
bWVudD4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZWxlbWVudEZvckF0dHJpYnV0ZUF0SW5kZXgo
TlNTdHJpbmcqIGF0dHJpYnV0ZSwgdW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgTlNBcnJh
eSogZWxlbWVudHMgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIGF0dHJpYnV0ZSk7
CisgICAgTlNBcnJheSogZWxlbWVudHMgPSBhdHRyaWJ1dGVWYWx1ZShhdHRyaWJ1dGUpOwogICAg
IHJldHVybiBpbmRleCA8IGVsZW1lbnRzLmNvdW50ID8gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
Y3JlYXRlKFtlbGVtZW50cyBvYmplY3RBdEluZGV4OmluZGV4XSkgOiBSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4oKTsKIH0KIApAQCAtNDY5LDcgKzQ1MSw3IEBAIFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5rZWRVSUVsZW1lbnRB
dEluZGV4KHVuCiBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRldGFpbHNFbGVt
ZW50cygpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJh
eSAqZWxlbWVudHMgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIEAiQVhEZXRhaWxz
RWxlbWVudHMiKTsKKyAgICBOU0FycmF5ICplbGVtZW50cyA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhE
ZXRhaWxzRWxlbWVudHMiKTsKICAgICBpZiAoW2VsZW1lbnRzIGlzS2luZE9mQ2xhc3M6TlNBcnJh
eS5jbGFzc10pCiAgICAgICAgIHJldHVybiBtYWtlSlNBcnJheShtYWtlVmVjdG9yPFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oZWxlbWVudHMpKTsKICAgICBFTkRfQVhfT0JKQ19FWENF
UFRJT05TCkBAIC00ODAsNyArNDYyLDcgQEAgSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50OjpkZXRhaWxzRWxlbWVudHMoKSBjb25zdAogSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjplcnJvck1lc3NhZ2VFbGVtZW50cygpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgTlNBcnJheSAqZWxlbWVudHMgPSBhdHRyaWJ1dGVWYWx1ZShtX2Vs
ZW1lbnQuZ2V0KCksIEAiQVhFcnJvck1lc3NhZ2VFbGVtZW50cyIpOworICAgIE5TQXJyYXkgKmVs
ZW1lbnRzID0gYXR0cmlidXRlVmFsdWUoQCJBWEVycm9yTWVzc2FnZUVsZW1lbnRzIik7CiAgICAg
aWYgKFtlbGVtZW50cyBpc0tpbmRPZkNsYXNzOk5TQXJyYXkuY2xhc3NdKQogICAgICAgICByZXR1
cm4gbWFrZUpTQXJyYXkobWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+
KGVsZW1lbnRzKSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtNTg0LDIwICs1NjYs
MzMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0
dHJpYnV0ZXNPZkNoaWxkcmVuKCkKIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmFsbEF0dHJpYnV0ZXMoKQogewotICAgIE5TU3RyaW5nKiBhdHRyaWJ1
dGVzID0gYXR0cmlidXRlc09mRWxlbWVudChtX2VsZW1lbnQuZ2V0KCkpOwotICAgIHJldHVybiBb
YXR0cmlidXRlcyBjcmVhdGVKU1N0cmluZ1JlZl07CisgICAgYXV0byBhdHRyaWJ1dGVzID0gc3Vw
cG9ydGVkQXR0cmlidXRlcyhtX2VsZW1lbnQuZ2V0KCkpOworCisgICAgTlNNdXRhYmxlU3RyaW5n
ICp2YWx1ZXMgPSBbTlNNdXRhYmxlU3RyaW5nIHN0cmluZ107CisgICAgZm9yIChOU1N0cmluZyAq
YXR0cmlidXRlIGluIGF0dHJpYnV0ZXMuZ2V0KCkpIHsKKyAgICAgICAgLy8gRXhjbHVkZSBzY3Jl
ZW4tc3BlY2lmaWMgdmFsdWVzLCBzaW5jZSB0aGV5IGNhbiBjaGFuZ2UgZGVwZW5kaW5nIG9uIHRo
ZSBzeXN0ZW0uCisgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUG9z
aXRpb24iXQorICAgICAgICAgICAgfHwgW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJfQVhQ
cmltYXJ5U2NyZWVuSGVpZ2h0Il0KKyAgICAgICAgICAgIHx8IFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOkAiQVhSZWxhdGl2ZUZyYW1lIl0pCisgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICBOU1N0cmluZyAqdmFsdWUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUo
YXR0cmlidXRlKSk7CisgICAgICAgIFt2YWx1ZXMgYXBwZW5kRm9ybWF0OkAiJUA6ICVAXG4iLCBh
dHRyaWJ1dGUsIHZhbHVlXTsKKyAgICB9CisKKyAgICByZXR1cm4gW3ZhbHVlcyBjcmVhdGVKU1N0
cmluZ1JlZl07CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpzdHJpbmdEZXNjcmlwdGlvbk9mQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0
cmlidXRlKQogewotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgp
LCBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0pOwotICAgIE5TU3Ry
aW5nKiB2YWx1ZURlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKHZhbHVlLCBtX2VsZW1l
bnQuZ2V0KCkpOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoW05TU3RyaW5nIHN0cmlu
Z1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKKyAgICBOU1N0cmluZyAqdmFsdWVEZXNjcmlw
dGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZSh2YWx1ZSk7CiAgICAgcmV0dXJuIFt2YWx1ZURlc2Ny
aXB0aW9uIGNyZWF0ZUpTU3RyaW5nUmVmXTsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVm
IGF0dHJpYnV0ZSkKIHsKLSAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5n
ZXQoKSwgW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKKyAgICBp
ZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6
YXR0cmlidXRlXSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICByZXR1
cm4gbnVsbHB0cjsKQEAgLTYwNSw3ICs2MDAsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZQog
CiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bnVtYmVyQXR0cmlidXRlVmFsdWUoSlNT
dHJpbmdSZWYgYXR0cmlidXRlKQogewotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9l
bGVtZW50LmdldCgpLCBbTlNTdHJpbmcgc3RyaW5nV2l0aEpTU3RyaW5nUmVmOmF0dHJpYnV0ZV0p
OworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0
cmluZ1JlZjphdHRyaWJ1dGVdKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVt
YmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgZG91YmxlVmFsdWVdOwogICAgIHJl
dHVybiAwOwpAQCAtNjIwLDEzICs2MTUsMTMgQEAgSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHIKIAog
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVp
RWxlbWVudEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHJpYnV0ZSkgY29uc3QKIHsKLSAg
ICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgW05TU3RyaW5nIHN0
cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0
ZVZhbHVlKFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0cmlidXRlXSk7CiAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZSh2YWx1ZSk7CiB9CiAKIGJvb2wg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Ym9vbEF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0
dHJpYnV0ZSkKIHsKLSAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQo
KSwgW05TU3RyaW5nIHN0cmluZ1dpdGhKU1N0cmluZ1JlZjphdHRyaWJ1dGVdKTsKKyAgICBpZCB2
YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKFtOU1N0cmluZyBzdHJpbmdXaXRoSlNTdHJpbmdSZWY6YXR0
cmlidXRlXSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11d
KQogICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjk4LDcgKzY5Myw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpwYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXMoKQogSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nICpyb2xlID0gZGVzY3JpcHRpb25PZlZhbHVl
KGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJp
YnV0ZSksIG1fZWxlbWVudC5nZXQoKSk7CisgICAgTlNTdHJpbmcgKnJvbGUgPSBkZXNjcmlwdGlv
bk9mVmFsdWUoYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSkpOwog
ICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhSb2xlIiwgcm9sZSk7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03MDgsNyArNzAzLDcgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJvbGUoKQogSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN1YnJvbGUoKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TU3RyaW5nICpzdWJyb2xlID0gZGVz
Y3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3Np
YmlsaXR5U3Vicm9sZUF0dHJpYnV0ZSksIG1fZWxlbWVudC5nZXQoKSk7CisgICAgTlNTdHJpbmcg
KnN1YnJvbGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUoYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmls
aXR5U3Vicm9sZUF0dHJpYnV0ZSkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFu
ZFZhbHVlKEAiQVhTdWJyb2xlIiwgc3Vicm9sZSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9O
UwogCkBAIC03MTgsMjcgKzcxMywyNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6c3Vicm9sZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cm9sZURlc2NyaXB0aW9uKCkKIHsKICAgICBCRUdJTl9BWF9P
QkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogcm9sZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShb
bV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlSb2xl
RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5TU3RyaW5nICpy
b2xlID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVJv
bGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSkpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0
ZUFuZFZhbHVlKEAiQVhSb2xlRGVzY3JpcHRpb24iLCByb2xlKTsKICAgICBFTkRfQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbXB1dGVkUm9sZVN0cmluZygp
CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcgKmNvbXB1dGVk
Um9sZVN0cmluZyA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYQVJJQVJvbGUiXSwgbV9lbGVtZW50LmdldCgpKTsKKyAgICBOU1N0
cmluZyAqY29tcHV0ZWRSb2xlU3RyaW5nID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZh
bHVlKEAiQVhBUklBUm9sZSIpKTsKICAgICByZXR1cm4gW2NvbXB1dGVkUm9sZVN0cmluZyBjcmVh
dGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0aXRsZSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgTlNTdHJpbmcqIHRpdGxlID0gZGVzY3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNz
aWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXSwgbV9l
bGVtZW50LmdldCgpKTsKKyAgICBOU1N0cmluZyAqdGl0bGUgPSBkZXNjcmlwdGlvbk9mVmFsdWUo
YXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5VGl0bGVBdHRyaWJ1dGUpKTsKICAgICByZXR1
cm4gY29uY2F0ZW5hdGVBdHRyaWJ1dGVBbmRWYWx1ZShAIkFYVGl0bGUiLCB0aXRsZSk7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwogCkBAIC03NDgsNyArNzQzLDcgQEAgSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlKCkKIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkZXNjcmlwdGlvbigpCiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgZGVzY3JpcHRpb24gPSBkZXNjcmlw
dGlvbk9mVmFsdWUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5RGVzY3JpcHRpb25BdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5T
U3RyaW5nICpkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShO
U0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZSkpOwogICAgIHJldHVybiBjb25jYXRl
bmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhEZXNjcmlwdGlvbiIsIGRlc2NyaXB0aW9uKTsKICAg
ICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc1OCw3ICs3NTMsNyBAQCBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGVzY3JpcHRpb24oKQogSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om9yaWVudGF0aW9u
KCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCBkZXNjcmlw
dGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV0sIG1fZWxlbWVudC5n
ZXQoKSk7CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKGF0
dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlKSk7CiAgICAg
cmV0dXJuIGNvbmNhdGVuYXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWE9yaWVudGF0aW9uIiwgZGVz
Y3JpcHRpb24pOyAgICAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKQEAgLTc2OCw3ICs3
NjMsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
b3JpZW50YXRpb24oKSBjb25zdAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnN0cmluZ1ZhbHVlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICBpZCBkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0s
IG1fZWxlbWVudC5nZXQoKSk7CisgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlKSk7
CiAgICAgaWYgKGRlc2NyaXB0aW9uKQogICAgICAgICByZXR1cm4gY29uY2F0ZW5hdGVBdHRyaWJ1
dGVBbmRWYWx1ZShAIkFYVmFsdWUiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwpAQCAtNzc5LDcgKzc3NCw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpzdHJpbmdWYWx1ZSgpCiBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGFuZ3VhZ2UoKQogewogICAgIEJFR0lOX0FYX09C
SkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25PZlZhbHVlKFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMYW5ndWFnZSJdLCBtX2Vs
ZW1lbnQuZ2V0KCkpOworICAgIE5TU3RyaW5nICpkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZW
YWx1ZShhdHRyaWJ1dGVWYWx1ZShAIkFYTGFuZ3VhZ2UiKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVu
YXRlQXR0cmlidXRlQW5kVmFsdWUoQCJBWExhbmd1YWdlIiwgZGVzY3JpcHRpb24pOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKIApAQCAtNzg5LDcgKzc4NCw3IEBAIEpTUmV0YWluUHRyPEpT
U3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsYW5ndWFnZSgpCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGVscFRleHQoKSBjb25zdAog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIGRlc2NyaXB0aW9uID0gZGVz
Y3JpcHRpb25PZlZhbHVlKFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUhlbHBBdHRyaWJ1dGVdLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5TU3Ry
aW5nICpkZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShOU0Fj
Y2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlKSk7CiAgICAgcmV0dXJuIGNvbmNhdGVuYXRlQXR0cmli
dXRlQW5kVmFsdWUoQCJBWEhlbHAiLCBkZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIApAQCAtNzk5LDY3ICs3OTQsNjcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhlbHBUZXh0KCkgY29uc3QKIGRvdWJsZSBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojp4KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdOworICAgIE5TVmFs
dWUgKnBvc2l0aW9uVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlQb3NpdGlv
bkF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oW3Bvc2l0aW9uVmFs
dWUgcG9pbnRWYWx1ZV0ueCk7ICAgIAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAK
KwogICAgIHJldHVybiAwLjBmOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
eSgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNWYWx1ZSogcG9zaXRp
b25WYWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXTsKKyAgICBOU1ZhbHVlICpwb3NpdGlvblZhbHVlID0g
YXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBvaW50VmFsdWVdLnkpOyAg
ICAKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gMC4wZjsK
IH0KIAogZG91YmxlIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OndpZHRoKCkKIHsKICAgICBCRUdJ
Tl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1ZhbHVlKiBzaXplVmFsdWUgPSBbbV9lbGVtZW50
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRl
XTsKKyAgICBOU1ZhbHVlICpzaXplVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxp
dHlTaXplQXR0cmlidXRlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbc2l6ZVZh
bHVlIHNpemVWYWx1ZV0ud2lkdGgpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAK
KwogICAgIHJldHVybiAwLjBmOwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aGVpZ2h0KCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1ZhbHVlKiBz
aXplVmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlTaXplQXR0cmlidXRlXTsKKyAgICBOU1ZhbHVlICpzaXplVmFsdWUgPSBhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihbc2l6ZVZhbHVlIHNpemVWYWx1ZV0uaGVpZ2h0KTsKICAgICBFTkRfQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gMC4wZjsKIH0KIAogZG91YmxlIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNsaWNrUG9pbnRYKCkKIHsKICAgICBCRUdJTl9BWF9PQkpD
X0VYQ0VQVElPTlMKLSAgICBOU1ZhbHVlKiBwb3NpdGlvblZhbHVlID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWENsaWNrUG9pbnQiXTsKKyAgICBOU1ZhbHVlICpw
b3NpdGlvblZhbHVlID0gYXR0cmlidXRlVmFsdWUoQCJBWENsaWNrUG9pbnQiKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihbcG9zaXRpb25WYWx1ZSBwb2ludFZhbHVlXS54KTsgICAg
ICAgIAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiAwLjBm
OwogfQogCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y2xpY2tQb2ludFkoKQogewog
ICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUqIHBvc2l0aW9uVmFsdWUg
PSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYQ2xpY2tQb2ludCJd
OworICAgIE5TVmFsdWUgKnBvc2l0aW9uVmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYQ2xpY2tQ
b2ludCIpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KFtwb3NpdGlvblZhbHVlIHBv
aW50VmFsdWVdLnkpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJl
dHVybiAwLjBmOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6bGluZVJlY3RzQW5kVGV4dCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19F
WENFUFRJT05TCi0gICAgaWQgbGluZVJlY3RzQW5kVGV4dCA9IFttX2VsZW1lbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhMaW5lUmVjdHNBbmRUZXh0Il07CisgICAgaWQgbGluZVJl
Y3RzQW5kVGV4dCA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhMaW5lUmVjdHNBbmRUZXh0Iik7CiAgICAg
aWYgKCFbbGluZVJlY3RzQW5kVGV4dCBpc0tpbmRPZkNsYXNzOk5TQXJyYXkuY2xhc3NdKQogICAg
ICAgICByZXR1cm4geyB9OwogICAgIHJldHVybiBbW2xpbmVSZWN0c0FuZFRleHQgY29tcG9uZW50
c0pvaW5lZEJ5U3RyaW5nOkAifCJdIGNyZWF0ZUpTU3RyaW5nUmVmXTsKQEAgLTg3MSw3ICs4NjYs
NyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGlu
ZVJlY3RzQW5kVGV4dCgpIGNvbnN0CiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW50
VmFsdWUoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5VmFsdWVBdHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nl
c3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJs
ZVZhbHVlXTsgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtODgyLDcgKzg3Nyw3IEBA
IGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiBkb3VibGUg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWluVmFsdWUoKQogewogICAgIEJFR0lOX0FYX09CSkNf
RVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdOworICAgIGlkIHZhbHVl
ID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGUpOwogICAg
IGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0
dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsgCiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwpAQCAtODkzLDcgKzg4OCw3IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjptaW5WYWx1ZSgpCiBkb3VibGUgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF4VmFsdWUoKQog
ewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVu
dCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRy
aWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5TWF4
VmFsdWVBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIg
Y2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFsoTlNOdW1iZXIqKXZhbHVlIGRvdWJsZVZhbHVlXTsg
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtOTA0LDIyICs4OTksMjIgQEAgZG91Ymxl
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1heFZhbHVlKCkKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp2YWx1ZURlc2NyaXB0aW9uKCkKIHsKICAgICBC
RUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU1N0cmluZyogdmFsdWVEZXNjcmlwdGlvbiA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVZh
bHVlRGVzY3JpcHRpb25BdHRyaWJ1dGVdOworICAgIE5TU3RyaW5nICp2YWx1ZURlc2NyaXB0aW9u
ID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5VmFsdWVEZXNjcmlwdGlvbkF0dHJpYnV0
ZSk7CiAgICAgaWYgKFt2YWx1ZURlc2NyaXB0aW9uIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNs
YXNzXV0pCiAgICAgICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAiQVhW
YWx1ZURlc2NyaXB0aW9uIiwgdmFsdWVEZXNjcmlwdGlvbik7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGludCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjppbnNlcnRpb25Qb2ludExpbmVOdW1iZXIoKQogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0
cmlidXRlXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eUlu
c2VydGlvblBvaW50TGluZU51bWJlckF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gWyhOU051bWJlciAqKXZh
bHVlIGludFZhbHVlXTsgCiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAg
cmV0dXJuIC0xOwogfQogCkBAIC05NTYsMzkgKzk1MSwzOSBAQCBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzRGVjcmVtZW50QWN0aW9uU3VwcG9ydGVkKCkKIGJvb2wgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6aXNFbmFibGVkKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eUVuYWJsZWRBdHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRl
VmFsdWUoTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGJv
b2xWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBj
b25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFJlcXVpcmVkIl07CisgICAg
aWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYUmVxdWlyZWQiKTsKICAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUg
Ym9vbFZhbHVlXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNGb2N1c2VkKCkg
Y29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFtt
X2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUZvY3Vz
ZWRBdHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzU2VsZWN0ZWQoKSBjb25zdAogewotICAgIGlkIHZh
bHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZEF0dHJpYnV0ZSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2li
aWxpdHlTZWxlY3RlZEF0dHJpYnV0ZSk7CiAgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U051bWJlciBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xWYWx1ZV07CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTAwMSwyMyArOTk2LDIzIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6aXNJbmRldGVybWluYXRlKCkgY29uc3QKIHsKLSAgICBCT09MIHJlc3Vs
dCA9IE5POwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVB
dHRyaWJ1dGVdOworICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5
VmFsdWVBdHRyaWJ1dGUpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIg
Y2xhc3NdXSkKLSAgICAgICAgcmVzdWx0ID0gW3ZhbHVlIGludFZhbHVlXSA9PSAyOworICAgICAg
ICByZXR1cm4gW3ZhbHVlIGludFZhbHVlXSA9PSAyOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQoKSBjb25zdAogewogICAgIEJFR0lOX0FY
X09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5
QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOworICAgIGlk
IHZhbHVlID0gYXR0cmlidXRlVmFsdWUoTlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGUp
OwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAg
ICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICAKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTAyOSw3ICsxMDI0LDcgQEAgYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0NoZWNrZWQoKSBjb25zdAogCiBKU1JldGFpblB0
cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y3VycmVudFN0YXRlVmFsdWUo
KSBjb25zdAogewotICAgIGlkIHZhbHVlID0gYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgp
LCBOU0FjY2Vzc2liaWxpdHlBUklBQ3VycmVudEF0dHJpYnV0ZSk7CisgICAgaWQgdmFsdWUgPSBh
dHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlBUklBQ3VycmVudEF0dHJpYnV0ZSk7CiAgICAg
aWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICByZXR1
cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTEw
MzcsNyArMTAzMiw3IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50OjpjdXJyZW50U3RhdGVWYWx1ZSgpIGNvbnN0CiAKIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpzb3J0RGlyZWN0aW9uKCkgY29uc3QKIHsKLSAg
ICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgTlNBY2Nlc3NpYmls
aXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZSk7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1
ZShOU0FjY2Vzc2liaWxpdHlTb3J0RGlyZWN0aW9uQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUg
Y3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTA0Niw3ICsxMDQx
LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNv
cnREaXJlY3Rpb24oKSBjb25zdAogaW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNo
aWNhbExldmVsKCkgY29uc3QKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBp
ZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNz
aWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGUpOwogICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJu
IFt2YWx1ZSBpbnRWYWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwpAQCAtMTA1Nywz
OSArMTA1MiwzOSBAQCBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2
ZWwoKSBjb25zdAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmNsYXNzTGlzdCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0g
ICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFY
RE9NQ2xhc3NMaXN0Il07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYRE9NQ2xh
c3NMaXN0Iik7CiAgICAgaWYgKCFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11d
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBOU011dGFibGVTdHJpbmcqIGNs
YXNzTGlzdCA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKworICAgIE5TTXV0YWJsZVN0cmlu
ZyAqY2xhc3NMaXN0ID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwogICAgIE5TSW50ZWdlciBs
ZW5ndGggPSBbdmFsdWUgY291bnRdOwogICAgIGZvciAoTlNJbnRlZ2VyIGsgPSAwOyBrIDwgbGVu
Z3RoOyArK2spIHsKICAgICAgICAgW2NsYXNzTGlzdCBhcHBlbmRTdHJpbmc6W3ZhbHVlIG9iamVj
dEF0SW5kZXg6a11dOwogICAgICAgICBpZiAoayA8IGxlbmd0aCAtIDEpCiAgICAgICAgICAgICBb
Y2xhc3NMaXN0IGFwcGVuZFN0cmluZzpAIiwgIl07CiAgICAgfQotICAgIAorCiAgICAgcmV0dXJu
IFtjbGFzc0xpc3QgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElP
TlMKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c3BlYWtBcygpCiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFsdWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYRFJUU3BlZWNoQXR0cmlidXRlIl07CisgICAgaWQgdmFsdWUgPSBh
dHRyaWJ1dGVWYWx1ZShAIkFYRFJUU3BlZWNoQXR0cmlidXRlIik7CiAgICAgaWYgKFt2YWx1ZSBp
c0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbWyhOU0FycmF5
ICopdmFsdWUgY29tcG9uZW50c0pvaW5lZEJ5U3RyaW5nOkAiLCAiXSBjcmVhdGVKU1N0cmluZ1Jl
Zl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgICAgICAKKwogICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFyaWFJc0dyYWJiZWQo
KSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5R3Jh
YmJlZEF0dHJpYnV0ZV07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2li
aWxpdHlHcmFiYmVkQXR0cmlidXRlKTsKICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05T
TnVtYmVyIGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBbdmFsdWUgYm9vbFZhbHVlXTsKICAgICBF
TkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0xMTAwLDIxICsxMDk1LDIxIEBAIGJvb2wgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6YXJpYUlzR3JhYmJlZCgpIGNvbnN0CiBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXJpYURyb3BFZmZlY3RzKCkgY29uc3QK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURyb3BFZmZlY3Rz
QXR0cmlidXRlXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0
eURyb3BFZmZlY3RzQXR0cmlidXRlKTsKICAgICBpZiAoIVt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U0FycmF5IGNsYXNzXV0pCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgTlNNdXRhYmxl
U3RyaW5nKiBkcm9wRWZmZWN0cyA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nXTsKKyAgICBOU011
dGFibGVTdHJpbmcgKmRyb3BFZmZlY3RzID0gW05TTXV0YWJsZVN0cmluZyBzdHJpbmddOwogICAg
IE5TSW50ZWdlciBsZW5ndGggPSBbdmFsdWUgY291bnRdOwogICAgIGZvciAoTlNJbnRlZ2VyIGsg
PSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKICAgICAgICAgW2Ryb3BFZmZlY3RzIGFwcGVuZFN0cmlu
ZzpbdmFsdWUgb2JqZWN0QXRJbmRleDprXV07CiAgICAgICAgIGlmIChrIDwgbGVuZ3RoIC0gMSkK
ICAgICAgICAgICAgIFtkcm9wRWZmZWN0cyBhcHBlbmRTdHJpbmc6QCIsIl07CiAgICAgfQotICAg
IAorCiAgICAgcmV0dXJuIFtkcm9wRWZmZWN0cyBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAg
LTEyNzUsNzAgKzEyNzAsNzAgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbkhlYWRlcnMoKQogewogICAgIC8vIG5vdCB5
ZXQgZGVmaW5lZCBpbiBBcHBLaXQuLi4gb2RkCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05T
Ci0gICAgTlNBcnJheSogY29sdW1uSGVhZGVyc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmls
aXR5QXR0cmlidXRlVmFsdWU6QCJBWENvbHVtbkhlYWRlclVJRWxlbWVudHMiXTsKKyAgICBOU0Fy
cmF5ICpjb2x1bW5IZWFkZXJzQXJyYXkgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYQ29sdW1uSGVhZGVy
VUlFbGVtZW50cyIpOwogICAgIGF1dG8gY29sdW1uSGVhZGVyc1ZlY3RvciA9IG1ha2VWZWN0b3I8
UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb2x1bW5IZWFkZXJzQXJyYXkpOwogICAg
IHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uSGVhZGVyc1ZlY3Rvcik7CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1
dGVzT2ZSb3dIZWFkZXJzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBO
U0FycmF5KiByb3dIZWFkZXJzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1
dGVWYWx1ZTpAIkFYUm93SGVhZGVyVUlFbGVtZW50cyJdOworICAgIE5TQXJyYXkgKnJvd0hlYWRl
cnNBcnJheSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIik7CiAgICAg
YXV0byByb3dIZWFkZXJzVmVjdG9yID0gbWFrZVZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4+KHJvd0hlYWRlcnNBcnJheSk7CiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uT2ZFbGVt
ZW50cyhyb3dIZWFkZXJzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCi0gICAg
CisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkNvbHVtbnMoKQogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TQXJyYXkqIGNvbHVtbnNBcnJheSA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRy
aWJ1dGVdOworICAgIE5TQXJyYXkgKmNvbHVtbnNBcnJheSA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNj
ZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGUpOwogICAgIGF1dG8gY29sdW1uc1ZlY3RvciA9IG1h
a2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Pihjb2x1bW5zQXJyYXkpOwog
ICAgIHJldHVybiBkZXNjcmlwdGlvbk9mRWxlbWVudHMoY29sdW1uc1ZlY3Rvcik7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVz
T2ZSb3dzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5KiBy
b3dzQXJyYXkgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAgICBOU0FycmF5ICpyb3dzQXJyYXkgPSBhdHRyaWJ1
dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlKTsKICAgICBhdXRvIHJvd3NWZWN0
b3IgPSBtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4ocm93c0FycmF5
KTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKHJvd3NWZWN0b3IpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0cmlidXRl
c09mVmlzaWJsZUNlbGxzKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBO
U0FycmF5KiBjZWxsc0FycmF5ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFs
dWU6QCJBWFZpc2libGVDZWxscyJdOworICAgIE5TQXJyYXkgKmNlbGxzQXJyYXkgPSBhdHRyaWJ1
dGVWYWx1ZShAIkFYVmlzaWJsZUNlbGxzIik7CiAgICAgYXV0byBjZWxsc1ZlY3RvciA9IG1ha2VW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PihjZWxsc0FycmF5KTsKICAgICBy
ZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGNlbGxzVmVjdG9yKTsKICAgICBFTkRfQVhfT0JK
Q19FWENFUFRJT05TCi0gICAgCisKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0ZXNPZkhlYWRl
cigpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgaGVhZGVyT2JqZWN0
ID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5
SGVhZGVyQXR0cmlidXRlXTsKKyAgICBpZCBoZWFkZXJPYmplY3QgPSBhdHRyaWJ1dGVWYWx1ZShO
U0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGUpOwogICAgIGlmICghaGVhZGVyT2JqZWN0KQog
ICAgICAgICByZXR1cm4gW0AiIiBjcmVhdGVKU1N0cmluZ1JlZl07Ci0gICAgCi0gICAgVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+IGhlYWRlclZlY3RvcjsKKworICAgIFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IGhlYWRlclZlY3RvcjsKICAgICBo
ZWFkZXJWZWN0b3IuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShoZWFkZXJP
YmplY3QpKTsKICAgICByZXR1cm4gZGVzY3JpcHRpb25PZkVsZW1lbnRzKGhlYWRlclZlY3Rvcik7
CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKQEAgLTEzNjMsNyArMTM1OCw3IEBAIGludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
b2x1bW5Db3VudCgpCiBpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhJblRhYmxlKCkK
IHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU051bWJlciogaW5kZXhOdW1i
ZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlJbmRleEF0dHJpYnV0ZV07CisgICAgTlNOdW1iZXIgKmluZGV4TnVtYmVyID0gYXR0cmlidXRl
VmFsdWUoTlNBY2Nlc3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGUpOwogICAgIGlmIChpbmRleE51bWJl
cikKICAgICAgICAgcmV0dXJuIFtpbmRleE51bWJlciBpbnRWYWx1ZV07CiAgICAgRU5EX0FYX09C
SkNfRVhDRVBUSU9OUwpAQCAtMTM3NSwxMyArMTM3MCwxMyBAQCBKU1JldGFpblB0cjxKU1N0cmlu
Z1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SW5kZXhSYW5nZSgpCiB7CiAgICAgTlNS
YW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKDAsIDApOwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBU
SU9OUwotICAgIE5TVmFsdWUqIGluZGV4UmFuZ2UgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYUm93SW5kZXhSYW5nZSJdOworICAgIE5TVmFsdWUgKmluZGV4UmFu
Z2UgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYUm93SW5kZXhSYW5nZSIpOwogICAgIGlmIChpbmRleFJh
bmdlKQogICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOwotICAgIE5TTXV0
YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyYW5nZS5s
b2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0aCldOworICAg
IE5TTXV0YWJsZVN0cmluZyAqcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihy
YW5nZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0aCld
OwogICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAg
RU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
QEAgLTEzODksMTMgKzEzODQsMTMgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkluZGV4UmFuZ2UoKQogewogICAgIE5TUmFuZ2UgcmFuZ2Ug
PSBOU01ha2VSYW5nZSgwLCAwKTsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBO
U051bWJlciogaW5kZXhSYW5nZSA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOkAiQVhDb2x1bW5JbmRleFJhbmdlIl07CisgICAgTlNOdW1iZXIgKmluZGV4UmFuZ2UgPSBh
dHRyaWJ1dGVWYWx1ZShAIkFYQ29sdW1uSW5kZXhSYW5nZSIpOwogICAgIGlmIChpbmRleFJhbmdl
KQogICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOwotICAgIE5TTXV0YWJs
ZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyYW5nZS5sb2Nh
dGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0aCldOworICAgIE5T
TXV0YWJsZVN0cmluZyAqcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyYW5n
ZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0aCldOwog
ICAgIHJldHVybiBbcmFuZ2VEZXNjcmlwdGlvbiBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKQEAg
LTE0MTUsOSArMTQxMCw5IEBAIFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpob3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlXSk7
CisgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhdHRyaWJ1dGVWYWx1
ZShOU0FjY2Vzc2liaWxpdHlIb3Jpem9udGFsU2Nyb2xsQmFyQXR0cmlidXRlKSk7CiAgICAgRU5E
X0FYX09CSkNfRVhDRVBUSU9OUyAgICAKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQog
CkBAIC0xNDI1LDkgKzE0MjAsOSBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6dmVydGljYWxTY3JvbGxiYXIoKSBjb25zdAogewogICAgIGlm
ICghbV9lbGVtZW50KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKKwogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
cmVhdGUoW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmls
aXR5VmVydGljYWxTY3JvbGxCYXJBdHRyaWJ1dGVdKTsKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVZlcnRpY2Fs
U2Nyb2xsQmFyQXR0cmlidXRlKSk7CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUyAgICAgICAg
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE0NTgsNyArMTQ1Myw3IEBAIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZFRleHRSYW5nZSgp
CiB7CiAgICAgTlNSYW5nZSByYW5nZSA9IE5TTWFrZVJhbmdlKE5TTm90Rm91bmQsIDApOwogICAg
IEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIE5TVmFsdWUgKmluZGV4UmFuZ2UgPSBhdHRy
aWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJh
bmdlQXR0cmlidXRlKTsKKyAgICBOU1ZhbHVlICppbmRleFJhbmdlID0gYXR0cmlidXRlVmFsdWUo
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0UmFuZ2VBdHRyaWJ1dGUpOwogICAgIGlmIChpbmRl
eFJhbmdlKQogICAgICAgICByYW5nZSA9IFtpbmRleFJhbmdlIHJhbmdlVmFsdWVdOwogICAgIE5T
TXV0YWJsZVN0cmluZyogcmFuZ2VEZXNjcmlwdGlvbiA9IFtOU011dGFibGVTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAInslbHUsICVsdX0iLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihyYW5n
ZS5sb2NhdGlvbiksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KHJhbmdlLmxlbmd0aCldOwpA
QCAtMTU1NSw3ICsxNTUwLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZXRTZWxl
Y3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICBpZiAoIWVsZW1lbnQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBhdHRy
aWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRy
ZW5BdHRyaWJ1dGUpOworICAgIE5TQXJyYXkgKnNlbGVjdGVkQ2hpbGRyZW4gPSBhdHRyaWJ1dGVW
YWx1ZShOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlKTsKICAgICBOU0Fy
cmF5ICphcnJheSA9IEBbZWxlbWVudC0+cGxhdGZvcm1VSUVsZW1lbnQoKV07CiAgICAgaWYgKHNl
bGVjdGVkQ2hpbGRyZW4pCiAgICAgICAgIGFycmF5ID0gW3NlbGVjdGVkQ2hpbGRyZW4gYXJyYXlC
eUFkZGluZ09iamVjdHNGcm9tQXJyYXk6YXJyYXldOwpAQCAtMTU2OSw3ICsxNTY0LDcgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KHVuc2lnbmVk
IGluZGV4KSBjb25zdAogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
TlNBcnJheSAqc2VsZWN0ZWRDaGlsZHJlbiA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQo
KSwgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSk7CisgICAgTlNBcnJh
eSAqc2VsZWN0ZWRDaGlsZHJlbiA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkQ2hpbGRyZW5BdHRyaWJ1dGUpOwogICAgIGlmICghc2VsZWN0ZWRDaGlsZHJlbikKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNTkxLDcgKzE1ODYsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1Jl
Zj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QKIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb2N1bWVudEVu
Y29kaW5nKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9
IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEb2N1bWVudEVuY29k
aW5nIl07CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYRG9jdW1lbnRFbmNvZGlu
ZyIpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKICAg
ICAgICAgcmV0dXJuIFt2YWx1ZSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNf
RVhDRVBUSU9OUwpAQCAtMTYwMSw3ICsxNTk2LDcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50RW5jb2RpbmcoKQogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRvY3VtZW50VVJJKCkKIHsKICAg
ICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBpZCB2YWx1ZSA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhEb2N1bWVudFVSSSJdOworICAgIGlkIHZhbHVl
ID0gYXR0cmlidXRlVmFsdWUoQCJBWERvY3VtZW50VVJJIik7CiAgICAgaWYgKFt2YWx1ZSBpc0tp
bmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICByZXR1cm4gW3ZhbHVlIGNyZWF0
ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCkBAIC0xNjExLDcgKzE2
MDYsNyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
ZG9jdW1lbnRVUkkoKQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OnVybCgpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNVUkwg
KnVybCA9IFttX2VsZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJp
bGl0eVVSTEF0dHJpYnV0ZV07CisgICAgTlNVUkwgKnVybCA9IGF0dHJpYnV0ZVZhbHVlKE5TQWNj
ZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIFtbdXJsIGFic29sdXRlU3RyaW5n
XSBjcmVhdGVKU1N0cmluZ1JlZl07ICAgIAogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKICAg
ICByZXR1cm4gbnVsbHB0cjsKQEAgLTE2NjYsMTMgKzE2NjEsMTIgQEAgYm9vbCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojppc1NlbGVjdGFibGUoKSBjb25zdAogCiBib29sIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmlzTXVsdGlTZWxlY3RhYmxlKCkgY29uc3QKIHsKLSAgICBCT09MIHJlc3VsdCA9
IE5POwogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZhbHVlID0gW21fZWxl
bWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWElzTXVsdGlTZWxlY3RhYmxlIl07
CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYSXNNdWx0aVNlbGVjdGFibGUiKTsK
ICAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCi0gICAgICAg
IHJlc3VsdCA9IFt2YWx1ZSBib29sVmFsdWVdOworICAgICAgICByZXR1cm4gW3ZhbHVlIGJvb2xW
YWx1ZV07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVmlz
aWJsZSgpIGNvbnN0CkBAIC0xNjgyLDcgKzE2NzYsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
aXNPblNjcmVlbigpIGNvbnN0CiB7Ci0gICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVWYWx1ZShtX2Vs
ZW1lbnQuZ2V0KCksIEAiQVhJc09uU2NyZWVuIik7CisgICAgaWQgdmFsdWUgPSBhdHRyaWJ1dGVW
YWx1ZShAIkFYSXNPblNjcmVlbiIpOwogICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJuIFt2YWx1ZSBib29sVmFsdWVdOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE3MDEsNyArMTY5NSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNDb2xsYXBzZWQoKSBjb25zdAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmVtYmVkZGVkSW1hZ2VEZXNjcmlwdGlvbigpIGNvbnN0CiB7CiAg
ICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNTdHJpbmcgKnZhbHVlID0gZGVzY3Jp
cHRpb25PZlZhbHVlKGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwgQCJBWEVtYmVkZGVk
SW1hZ2VEZXNjcmlwdGlvbiIpLCBtX2VsZW1lbnQuZ2V0KCkpOworICAgIE5TU3RyaW5nICp2YWx1
ZSA9IGRlc2NyaXB0aW9uT2ZWYWx1ZShhdHRyaWJ1dGVWYWx1ZShAIkFYRW1iZWRkZWRJbWFnZURl
c2NyaXB0aW9uIikpOwogICAgIHJldHVybiBjb25jYXRlbmF0ZUF0dHJpYnV0ZUFuZFZhbHVlKEAi
QVhFbWJlZGRlZEltYWdlRGVzY3JpcHRpb24iLCB2YWx1ZSk7CiAgICAgRU5EX0FYX09CSkNfRVhD
RVBUSU9OUwogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTcxMCw3ICsxNzA0LDcgQEAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVtYmVkZGVkSW1hZ2VE
ZXNjcmlwdGlvbigpIGNvbnMKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW1h
Z2VPdmVybGF5RWxlbWVudHMoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9O
UwotICAgIHJldHVybiBtYWtlSlNBcnJheShtYWtlVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFsdWUobV9lbGVtZW50LmdldCgpLCBAIkFYSW1hZ2VPdmVy
bGF5RWxlbWVudHMiKSkpOworICAgIHJldHVybiBtYWtlSlNBcnJheShtYWtlVmVjdG9yPFJlZlB0
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4oYXR0cmlidXRlVmFsdWUoQCJBWEltYWdlT3Zlcmxh
eUVsZW1lbnRzIikpKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4g
bnVsbHB0cjsKQEAgLTE3MzgsNyArMTczMiw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6aXNNdWx0aUxpbmUoKSBjb25zdAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoYXNQ
b3B1cCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdmFs
dWUgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYSGFzUG9wdXAi
XTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhIYXNQb3B1cCIpOwogICAgIGlm
IChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKICAgICAgICAgcmV0dXJu
IFt2YWx1ZSBib29sVmFsdWVdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKQEAgLTE3NDks
NyArMTc0Myw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGFzUG9wdXAoKSBjb25z
dAogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBvcHVw
VmFsdWUoKSBjb25zdAogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHZh
bHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFBvcHVwVmFs
dWUiXTsKKyAgICBpZCB2YWx1ZSA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhQb3B1cFZhbHVlIik7CiAg
ICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQogICAgICAgICBy
ZXR1cm4gW3ZhbHVlIGNyZWF0ZUpTU3RyaW5nUmVmXTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJ
T05TCkBAIC0xOTAzLDcgKzE4OTcsNyBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJS
YW5nZT4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlRm9yUgogUmVmUHRy
PEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNl
bGVjdGVkVGV4dE1hcmtlclJhbmdlKCkKIHsKICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMK
LSAgICBpZCB0ZXh0TWFya2VyUmFuZ2UgPSBhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCks
IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlKTsKKyAgICBp
ZCB0ZXh0TWFya2VyUmFuZ2UgPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSk7CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U6OmNyZWF0ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgIEVORF9BWF9PQkpDX0VY
Q0VQVElPTlMKIApAQCAtMTkxMiw3ICsxOTA2LDcgQEAgUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2U+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNlbGVjdGVkVGV4dE1hcmtlclIK
IAogdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZXNldFNlbGVjdGVkVGV4dE1hcmtlclJh
bmdlKCkKIHsKLSAgICBpZCBzdGFydCA9IGF0dHJpYnV0ZVZhbHVlKG1fZWxlbWVudC5nZXQoKSwg
QCJBWFN0YXJ0VGV4dE1hcmtlciIpOworICAgIGlkIHN0YXJ0ID0gYXR0cmlidXRlVmFsdWUoQCJB
WFN0YXJ0VGV4dE1hcmtlciIpOwogICAgIGlmICghc3RhcnQpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMjEyMiwyNCArMjExNiwyNCBAQCBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQgdAogICAgIAogICAg
IHJldHVybiBudWxscHRyOwogfQotICAgIAorCiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0YXJ0VGV4dE1hcmtlcigpCiB7CiAgICAgQkVH
SU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgaWQgdGV4dE1hcmtlciA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhTdGFydFRleHRNYXJrZXIiXTsKKyAgICBpZCB0
ZXh0TWFya2VyID0gYXR0cmlidXRlVmFsdWUoQCJBWFN0YXJ0VGV4dE1hcmtlciIpOwogICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRleHRNYXJrZXIpOwogICAgIEVO
RF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBS
ZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmVu
ZFRleHRNYXJrZXIoKQogewogICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIGlkIHRl
eHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYRW5k
VGV4dE1hcmtlciJdOworICAgIGlkIHRleHRNYXJrZXIgPSBhdHRyaWJ1dGVWYWx1ZShAIkFYRW5k
VGV4dE1hcmtlciIpOwogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRl
KHRleHRNYXJrZXIpOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAKKwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCkBAIC0yMjgwLDM0ICsyMjc0LDM0IEBAIHN0YXRpYyBOU1N0cmlu
ZyAqX2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKE5TQXJyYXkgKnBhaXJzKQog
ICAgICAgICBmb3IgKE5TU3RyaW5nICprZXkgaW4gcGFpcikKICAgICAgICAgICAgIFtyZXN1bHQg
YXBwZW5kRm9ybWF0OkAiXHQlbHUuICVAID0gJUBcbiIsICh1bnNpZ25lZCBsb25nKWluZGV4LCBr
ZXksIFtbcGFpciBvYmplY3RGb3JLZXk6a2V5XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6
TlNBY2Nlc3NpYmlsaXR5U3Vicm9sZUF0dHJpYnV0ZV1dOwogICAgIH1dOwotICAgIAorCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KLSAgICAKKwogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6Om1hdGhQb3N0c2NyaXB0c0Rlc2NyaXB0aW9uKCkgY29uc3QKIHsK
ICAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICBOU0FycmF5ICpwYWlycyA9IFttX2Vs
ZW1lbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhNYXRoUG9zdHNjcmlwdHMiXTsK
KyAgICBOU0FycmF5ICpwYWlycyA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhNYXRoUG9zdHNjcmlwdHMi
KTsKICAgICByZXR1cm4gW19jb252ZXJ0TWF0aE11bHRpc2NyaXB0UGFpcnNUb1N0cmluZyhwYWly
cykgY3JlYXRlSlNTdHJpbmdSZWZdOwogICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKLSAgICAK
KwogICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6bWF0aFByZXNjcmlwdHNEZXNjcmlwdGlvbigpIGNvbnN0CiB7
CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCi0gICAgTlNBcnJheSAqcGFpcnMgPSBbbV9l
bGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYTWF0aFByZXNjcmlwdHMiXTsK
KyAgICBOU0FycmF5ICpwYWlycyA9IGF0dHJpYnV0ZVZhbHVlKEAiQVhNYXRoUHJlc2NyaXB0cyIp
OwogICAgIHJldHVybiBbX2NvbnZlcnRNYXRoTXVsdGlzY3JpcHRQYWlyc1RvU3RyaW5nKHBhaXJz
KSBjcmVhdGVKU1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAor
CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEpTVmFsdWVSZWYgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6bWF0aFJvb3RSYWRpY2FuZCgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENF
UFRJT05TCi0gICAgcmV0dXJuIG1ha2VKU0FycmF5KG1ha2VWZWN0b3I8UmVmUHRyPEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ+PihhdHRyaWJ1dGVWYWx1ZShtX2VsZW1lbnQuZ2V0KCksIEAiQVhNYXRo
Um9vdFJhZGljYW5kIikpKTsKKyAgICByZXR1cm4gbWFrZUpTQXJyYXkobWFrZVZlY3RvcjxSZWZQ
dHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+KGF0dHJpYnV0ZVZhbHVlKEAiQVhNYXRoUm9vdFJh
ZGljYW5kIikpKTsKICAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCiAKICAgICByZXR1cm4gbnVs
bHB0cjsKQEAgLTIzMTcsOCArMjMxMSw4IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdAogewogICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUwogICAgIE5TTXV0YWJsZVN0cmluZyAqcmVzdWx0ID0gW05TTXV0
YWJsZVN0cmluZyBzdHJpbmdXaXRoU3RyaW5nOkAiXG5TdGFydCBQYXRoXG4iXTsKLSAgICBOU0Jl
emllclBhdGggKmJlemllclBhdGggPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmlidXRlXTsKLSAgICAKKyAgICBOU0JlemllclBh
dGggKmJlemllclBhdGggPSBhdHRyaWJ1dGVWYWx1ZShOU0FjY2Vzc2liaWxpdHlQYXRoQXR0cmli
dXRlKTsKKwogICAgIE5TVUludGVnZXIgZWxlbWVudENvdW50ID0gW2JlemllclBhdGggZWxlbWVu
dENvdW50XTsKICAgICBOU1BvaW50IHBvaW50c1szXTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9
IDA7IGkgPCBlbGVtZW50Q291bnQ7IGkrKykgewpAQCAtMjMyNiwyNCArMjMyMCwyNCBAQCBKU1Jl
dGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cGF0aERlc2NyaXB0
aW9uKCkgY29uc3QKICAgICAgICAgY2FzZSBOU01vdmVUb0JlemllclBhdGhFbGVtZW50OgogICAg
ICAgICAgICAgW3Jlc3VsdCBhcHBlbmRTdHJpbmc6QCJcdE1vdmUgdG8gcG9pbnRcbiJdOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKKwogICAgICAgICBjYXNlIE5TTGluZVRvQmV6
aWVyUGF0aEVsZW1lbnQ6CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIlx0TGlu
ZSB0b1xuIl07CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAorCiAgICAgICAgIGNh
c2UgTlNDdXJ2ZVRvQmV6aWVyUGF0aEVsZW1lbnQ6CiAgICAgICAgICAgICBbcmVzdWx0IGFwcGVu
ZFN0cmluZzpAIlx0Q3VydmUgdG9cbiJdOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAKKwogICAgICAgICBjYXNlIE5TQ2xvc2VQYXRoQmV6aWVyUGF0aEVsZW1lbnQ6CiAgICAgICAg
ICAgICBbcmVzdWx0IGFwcGVuZFN0cmluZzpAIlx0Q2xvc2VcbiJdOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gW3Jlc3VsdCBjcmVhdGVK
U1N0cmluZ1JlZl07CiAgICAgRU5EX0FYX09CSkNfRVhDRVBUSU9OUwotICAgIAorCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>