<?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>164208</bug_id>
          
          <creation_ts>2016-10-30 11:08:58 -0700</creation_ts>
          <short_desc>[WebIDL] Restructure IDLParser structs to better match modern WebIDL concepts</short_desc>
          <delta_ts>2016-10-30 15:37:54 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246244</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-30 11:08:58 -0700</bug_when>
    <thetext>[WebIDL] Restructure IDLParser structs to better match modern WebILD concepts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246249</commentid>
    <comment_count>1</comment_count>
      <attachid>293359</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-30 11:32:18 -0700</bug_when>
    <thetext>Created attachment 293359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246250</commentid>
    <comment_count>2</comment_count>
      <attachid>293360</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-30 11:39:37 -0700</bug_when>
    <thetext>Created attachment 293360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246251</commentid>
    <comment_count>3</comment_count>
      <attachid>293361</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-30 11:41:02 -0700</bug_when>
    <thetext>Created attachment 293361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246273</commentid>
    <comment_count>4</comment_count>
      <attachid>293361</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-30 15:17:24 -0700</bug_when>
    <thetext>Comment on attachment 293361
Patch

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

&gt; Source/WebCore/ChangeLog:3


Typo: WebILD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246285</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-30 15:37:54 -0700</bug_when>
    <thetext>Committed r208134: &lt;http://trac.webkit.org/changeset/208134&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293359</attachid>
            <date>2016-10-30 11:32:18 -0700</date>
            <delta_ts>2016-10-30 11:37:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164208-20161030112824.patch</filename>
            <type>text/plain</type>
            <size>201459</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODEyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTMwICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVzdHJ1Y3R1cmUgSURM
UGFyc2VyIHN0cnVjdHMgdG8gYmV0dGVyIG1hdGNoIG1vZGVybiBXZWJJTEQgY29uY2VwdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc3RydWN0dXJl
IElETFBhcnNlcnMgc3RydWN0cyB0byBtYXRjaCBtb2Rlcm4gV2ViSURMIGNvbnZlbnRpb25zOgor
ICAgICAgICAtIFJlbmFtZSBzdHJ1Y3RzIHRvIGhhdmUgbW9yZSBXZWJDb3JlIGxpa2UgbmFtaW5n
LCBjb25zaXN0ZW50bHkgdXNpbmcKKyAgICAgICAgICB0aGUgcHJlZml4IElETC4KKyAgICAgICAg
LSBSZW1vdmUgZG9tU2lnbmF0dXJlLiBTaW5raW5nIGl0J3MgcHJvcGVydGllcyBpbnRvIHRoZSBz
dHJ1Y3RzIHRoYXQKKyAgICAgICAgICBjb250YWluZWQgaXQuCisgICAgICAgIC0gQWRkIElETEFy
Z3VtZW50LCByZXBsYWNpbmcgdGhlIHVzZSBvZiBkb21TaWduYXR1cmVzIGZvciBhcmd1bWVudHMu
CisgICAgICAgICAgSURMQXJndW1lbnQgaXMgdGhlIHN1YnNldCBvZiBkb21TaWduYXR1cmVzIG5l
ZWRlZCBmb3IgYXJndW1lbnRzLgorICAgICAgICAtIFJlbmFtZSBkb21GdW5jdGlvbiB0byBJRExP
cGVyYXRpb24gKG1hdGNoaW5nIFdlYklMRCBub21lbmNsYXR1cmUpLAorICAgICAgICAgIHJlcGxh
Y2Ugc2lnbmF0dXJlIHdpdGggaXRzIG93biBuYW1lLCB0eXBlIChmb3IgcmV0dXJuVHlwZSksIHNw
ZWNpYWxzLAorICAgICAgICAgIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGVzIHByb3BlcnRpZXMuCisg
ICAgICAgIC0gR2l2ZSBJRExBdHRyaWJ1dGUgaXQncyBvd24gbmFtZSwgdHlwZSBhbmQgZXh0ZW5k
ZWQgYXR0cmlidXRlcyBwcm9wZXJ0aWVzLgorICAgICAgICAtIEFkZCBJRExEaWN0aW9uYXJ5TWVt
YmVyLCByZXBsYWNpbmcgdGhlIHVzZSBvZiBkb21TaWduYXR1cmUgYXMgdGhlCisgICAgICAgICAg
dHlwZSBvZiBtZW1iZXJzIGluIElETERpY3Rpb25hcnkuIEdpdmUgaXQgbmFtZSwgdHlwZSwgaXNS
ZXF1aXJlZCwKKyAgICAgICAgICBkZWZhdWx0IGFuZCBleHRlbmRlZEF0dHJpYnV0ZXMgcHJvcGVy
dGllcy4KKyAgICAgICAgLSBSZW5hbWVkIFR5cGVkZWYgdG8gYmUgSURMVHlwZWRlZi4gUmVtb3Zl
IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIAorICAgICAgICAgIHByb3BlcnR5IGFzIHRob3NlIGFy
ZSBub3QgYWxsb3dlZCBpbiB0eXBlZGVmcyBwZXItUGViSURMLgorCisgICAgICAgIEFsc28gZml4
IHNvbWUgcGFyc2luZyBpc3N1ZXM6CisgICAgICAgIC0gU3RvcCBwYXJzaW5nICdpbicgZGlyZWN0
aXZlcyBpbiBmdW5jdGlvbiBhcmd1bWVudHMuCisgICAgICAgIC0gU3RvcCBwYXJzaW5nIGV4dGVu
ZGVkIGF0dHJpYnV0ZXMgaW4gdHlwZWRlZnMuCisgICAgICAgIC0gU3VwcG9ydCBhcHBseWluZyB0
eXBlZGVmcyB0byB0eXBlcyBkZWVwIGluIGFnZ3JlZ2F0ZSB0eXBlcworICAgICAgICAgIChlLmcu
IChzZXF1ZW5jZTwoTE9ORyBvciBTVFJJTkcpPiBvciBET01TdHJpbmcpPykuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbDoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgc3RydWN0IHR5cGVzLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbDoKKyAgICAgICAg
UmVtb3ZlIHRlc3Qgd2hpY2ggdGVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW4gdHlwZWRlZnMs
CisgICAgICAgIGFuZCBhZGQgYSB0ZXN0IHdoaWNoIHRlc3RzIHR5cGVkZWZzIHVzZWQgaW4gZGVl
cCB0eXBlIHN0cnVjdHVyZXMuCisKKyAgICAgICAgKiBwYWdlL21ha2Vfc2V0dGluZ3MucGw6Cisg
ICAgICAgIERvbid0IGdlbmVyYXRlIHRoZSAnaW4nIHByZWZpeCBmb3IgYXJndW1lbnRzIGluIElE
TCBmaWxlcy4KKwogMjAxNi0xMC0zMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDIwODEyOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29y
a2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNiBAQCBteSAldHlwZWRBcnJheVR5cGVzID0gKAogICAg
ICJVaW50OENsYW1wZWRBcnJheSIgPT4gMSwKICk7CiAKLW15ICVub25Qb2ludGVyVHlwZUhhc2gg
PSAoICJET01UaW1lU3RhbXAiID0+IDEgKTsKLQogbXkgJXN2Z0F0dHJpYnV0ZXNJbkhUTUxIYXNo
ID0gKAogICAgICJjbGFzcyIgPT4gMSwKICAgICAiaWQiID0+IDEsCkBAIC0yODgsNiArMjg2LDcg
QEAgc3ViIEZvckFsbFBhcmVudHMKICAgICAmJHJlY3Vyc2UoJGludGVyZmFjZSwgJGludGVyZmFj
ZSk7CiB9CiAKKyNGSVhNRTogRklHVVJFIE9VVAogc3ViIEZpbmRTdXBlck1ldGhvZAogewogICAg
IG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25OYW1lKSA9IEBfOwpAQCAtMjk1LDcg
KzI5NCw3IEBAIHN1YiBGaW5kU3VwZXJNZXRob2QKICAgICAkb2JqZWN0LT5Gb3JBbGxQYXJlbnRz
KCRpbnRlcmZhY2UsIHVuZGVmLCBzdWIgewogICAgICAgICBteSAkY3VycmVudEludGVyZmFjZSA9
IHNoaWZ0OwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskY3VycmVudEludGVyZmFj
ZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lIGVxICRmdW5jdGlvbk5hbWUpIHsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPm5hbWUg
ZXEgJGZ1bmN0aW9uTmFtZSkgewogICAgICAgICAgICAgICAgICRpbmRleGVyID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmU7CiAgICAgICAgICAgICAgICAgcmV0dXJuICdwcnVuZSc7CiAgICAgICAgICAg
ICB9CkBAIC0zMzIsNyArMzMxLDcgQEAgc3ViIEdldEF0dHJpYnV0ZUZyb21JbnRlcmZhY2UKIAog
ICAgIG15ICRpbnRlcmZhY2UgPSAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkb3V0ZXJJbnRlcmZh
Y2UsICRpbnRlcmZhY2VOYW1lKTsKICAgICBmb3IgbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNl
LT5hdHRyaWJ1dGVzfSkgewotICAgICAgICByZXR1cm4gJGF0dHJpYnV0ZSBpZiAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPm5hbWUgZXEgJGF0dHJpYnV0ZU5hbWU7CisgICAgICAgIHJldHVybiAkYXR0
cmlidXRlIGlmICRhdHRyaWJ1dGUtPm5hbWUgZXEgJGF0dHJpYnV0ZU5hbWU7CiAgICAgfQogICAg
IGRpZSgiQ291bGQgbm90IGZpbmQgYXR0cmlidXRlICckYXR0cmlidXRlTmFtZScgb24gaW50ZXJm
YWNlICckaW50ZXJmYWNlTmFtZScuIik7CiB9CkBAIC0zOTUsNyArMzk0LDcgQEAgc3ViIElzTnVt
ZXJpY1R5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQo
Ik5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5v
dCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiAxIGlm
ICRpbnRlZ2VyVHlwZUhhc2h7JHR5cGUtPm5hbWV9OwogICAgIHJldHVybiAxIGlmICRmbG9hdGlu
Z1BvaW50VHlwZUhhc2h7JHR5cGUtPm5hbWV9OwpAQCAtNDA2LDcgKzQwNSw3IEBAIHN1YiBJc1N0
cmluZ09yRW51bVR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAgICAgCi0g
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAg
YXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICBy
ZXR1cm4gMSBpZiAkb2JqZWN0LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwogICAgIHJldHVybiAxIGlm
ICRvYmplY3QtPklzRW51bVR5cGUoJHR5cGUpOwpAQCAtNDE3LDcgKzQxNiw3IEBAIHN1YiBJc0lu
dGVnZXJUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0
KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJO
b3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBp
ZiAkaW50ZWdlclR5cGVIYXNoeyR0eXBlLT5uYW1lfTsKICAgICByZXR1cm4gMDsKQEAgLTQyNyw3
ICs0MjYsNyBAQCBzdWIgSXNGbG9hdGluZ1BvaW50VHlwZQogewogICAgIG15ICgkb2JqZWN0LCAk
dHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
ImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklE
TFR5cGUiOwogCiAgICAgcmV0dXJuIDEgaWYgJGZsb2F0aW5nUG9pbnRUeXBlSGFzaHskdHlwZS0+
bmFtZX07CiAgICAgcmV0dXJuIDA7CkBAIC00MzcsNyArNDM2LDcgQEAgc3ViIElzUHJpbWl0aXZl
VHlwZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEg
dHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDEgaWYgJHBy
aW1pdGl2ZVR5cGVIYXNoeyR0eXBlLT5uYW1lfTsKICAgICByZXR1cm4gMSBpZiAkb2JqZWN0LT5J
c051bWVyaWNUeXBlKCR0eXBlKTsKQEAgLTQ0OSw3ICs0NDgsNyBAQCBzdWIgSXNTdHJpbmdUeXBl
CiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0
eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBl
IikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+
bmFtZSBlcSAiRE9NU3RyaW5nIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiVVNW
U3RyaW5nIjsKQEAgLTQ2MCw3ICs0NTksNyBAQCBzdWIgSXNFbnVtVHlwZQogewogICAgIG15ICgk
b2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigk
dHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlw
ZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIGRlZmluZWQoJG9iamVjdC0+R2V0RW51bUJ5
VHlwZSgkdHlwZSkpOwogfQpAQCAtNDY5LDcgKzQ2OCw3IEBAIHN1YiBHZXRFbnVtQnlUeXBlCiB7
CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBl
IikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikg
aWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICBteSAkbmFtZSA9ICR0eXBlLT5uYW1l
OwogCkBAIC01MDksNyArNTA4LDcgQEAgc3ViIElzRXh0ZXJuYWxFbnVtVHlwZQogewogICAgIG15
ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigk
dHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzRW51bVR5cGUoJHR5
cGUpICYmIGRlZmluZWQoJGNhY2hlZEV4dGVybmFsRW51bWVyYXRpb25zLT57JHR5cGUtPm5hbWV9
KTsKIH0KQEAgLTUxOCw3ICs1MTcsNyBAQCBzdWIgSGFzRW51bUltcGxlbWVudGF0aW9uTmFtZU92
ZXJyaWRlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJO
b3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3Qg
YSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBpZiBl
eGlzdHMgJGVudW1UeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5uYW1lfTsK
ICAgICByZXR1cm4gMDsKQEAgLTUyOCw3ICs1MjcsNyBAQCBzdWIgR2V0RW51bUltcGxlbWVudGF0
aW9uTmFtZU92ZXJyaWRlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAg
YXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNz
ZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1
cm4gJGVudW1UeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5uYW1lfTsKIH0K
QEAgLTUzNyw3ICs1MzYsNyBAQCBzdWIgR2V0RGljdGlvbmFyeUJ5VHlwZQogewogICAgIG15ICgk
b2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigk
dHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlw
ZSkgbmUgIklETFR5cGUiOwogCiAgICAgbXkgJG5hbWUgPSAkdHlwZS0+bmFtZTsKIApAQCAtNTc2
LDcgKzU3NSw3IEBAIHN1YiBJc0RpY3Rpb25hcnlUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0
eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAi
ZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURM
VHlwZSI7CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgPX4gL15bQS1aXS8gJiYgZGVmaW5lZCgk
b2JqZWN0LT5HZXREaWN0aW9uYXJ5QnlUeXBlKCR0eXBlKSk7CiB9CkBAIC01ODYsNyArNTg1LDcg
QEAgc3ViIElzRXh0ZXJuYWxEaWN0aW9uYXJ5VHlwZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlw
ZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRv
bVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5
cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzRGljdGlvbmFyeVR5cGUoJHR5cGUpICYmIGRl
ZmluZWQoJGNhY2hlZEV4dGVybmFsRGljdGlvbmFyaWVzLT57JHR5cGUtPm5hbWV9KTsKIH0KQEAg
LTU5NSw3ICs1OTQsNyBAQCBzdWIgSGFzRGljdGlvbmFyeUltcGxlbWVudGF0aW9uTmFtZU92ZXJy
CiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0
eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBl
IikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBpZiBleGlzdHMg
JGRpY3Rpb25hcnlUeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5uYW1lfTsK
ICAgICByZXR1cm4gMDsKQEAgLTYwNSw3ICs2MDQsNyBAQCBzdWIgR2V0RGljdGlvbmFyeUltcGxl
bWVudGF0aW9uTmFtZU92ZXJyCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0g
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAg
YXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICBy
ZXR1cm4gJGRpY3Rpb25hcnlUeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5u
YW1lfTsKIH0KQEAgLTYxNCw5ICs2MTMsOCBAQCBzdWIgSXNOb25Qb2ludGVyVHlwZQogewogICAg
IG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgIklETFR5cGUiOwogCi0gICAgcmV0dXJuIDEgaWYgJG5vblBvaW50ZXJUeXBl
SGFzaHskdHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNQcmltaXRpdmVU
eXBlKCR0eXBlKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTYyNSw3ICs2MjMsNyBAQCBzdWIgSXNT
VkdUeXBlTmVlZGluZ1RlYXJPZmYKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAK
LSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAg
ICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAg
IHJldHVybiAxIGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0eXBlLT5uYW1lfTsK
ICAgICByZXR1cm4gMDsKQEAgLTYzNSw3ICs2MzMsNyBAQCBzdWIgSXNTVkdUeXBlV2l0aFdyaXRh
YmxlUHJvcGVydGllc05lZWRpCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0g
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAg
YXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICBy
ZXR1cm4gMSBpZiAkc3ZnVHlwZVdpdGhXcml0YWJsZVByb3BlcnRpZXNOZWVkaW5nVGVhck9mZnsk
dHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDA7CkBAIC02NDUsNyArNjQzLDcgQEAgc3ViIElzVHlw
ZWRBcnJheVR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3Nl
cnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQo
Ik5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiAx
IGlmICR0eXBlZEFycmF5VHlwZXN7JHR5cGUtPm5hbWV9OwogICAgIHJldHVybiAwOwpAQCAtNjU1
LDcgKzY1Myw3IEBAIHN1YiBJc1JlZlB0clR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUp
ID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21U
eXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBl
IjsKIAogICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlwZSk7CiAg
ICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSk7CkBAIC02NzEs
NyArNjY5LDcgQEAgc3ViIEdldFNWR1R5cGVOZWVkaW5nVGVhck9mZgogewogICAgIG15ICgkb2Jq
ZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlw
ZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkg
bmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRzdmdUeXBlTmVlZGluZ1RlYXJPZmZ7JHR5cGUt
Pm5hbWV9IGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0eXBlLT5uYW1lfTsKICAg
ICByZXR1cm4gdW5kZWY7CkBAIC02ODEsNyArNjc5LDcgQEAgc3ViIEdldFNWR1dyYXBwZWRUeXBl
TmVlZGluZ1RlYXJPZmYKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBh
c3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3Nl
cnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIG15ICRz
dmdUeXBlTmVlZGluZ1RlYXJPZmYgPSAkb2JqZWN0LT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYo
JHR5cGUpOwogICAgIHJldHVybiAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmIGlmIG5vdCAkc3ZnVHlw
ZU5lZWRpbmdUZWFyT2ZmOwpAQCAtNzExLDcgKzcwOSw3IEBAIHN1YiBJc1NWR0FuaW1hdGVkVHlw
ZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEg
dHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklz
U1ZHQW5pbWF0ZWRUeXBlTmFtZSgkdHlwZS0+bmFtZSk7CiB9CkBAIC03MjAsNyArNzE4LDcgQEAg
c3ViIElzQ29uc3RydWN0b3JUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwog
Ci0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7Cisg
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAg
ICByZXR1cm4gJHR5cGUtPm5hbWUgPX4gL0NvbnN0cnVjdG9yJC87CiB9CkBAIC03MjksNyArNzI3
LDcgQEAgc3ViIElzU2VxdWVuY2VUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBf
OwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgInNlcXVlbmNlIjsKIH0KQEAgLTczOCw3ICs3MzYs
NyBAQCBzdWIgR2V0U2VxdWVuY2VJbm5lclR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUp
ID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21U
eXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBl
IjsKIAogICAgIHJldHVybiBAeyR0eXBlLT5zdWJ0eXBlc31bMF07CiB9CkBAIC03NDcsNyArNzQ1
LDcgQEAgc3ViIElzRnJvemVuQXJyYXlUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9
IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlw
ZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7
CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgIkZyb3plbkFycmF5IjsKIH0KQEAgLTc1Niw3
ICs3NTQsNyBAQCBzdWIgR2V0RnJvemVuQXJyYXlJbm5lclR5cGUKIHsKICAgICBteSAoJG9iamVj
dCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUp
IG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5l
ICJJRExUeXBlIjsKIAogICAgIHJldHVybiBAeyR0eXBlLT5zdWJ0eXBlc31bMF07CiB9CkBAIC03
NjUsNyArNzYzLDcgQEAgc3ViIElzU2VxdWVuY2VPckZyb3plbkFycmF5VHlwZQogewogICAgIG15
ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigk
dHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzU2VxdWVuY2VUeXBl
KCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0Zyb3plbkFycmF5VHlwZSgkdHlwZSk7CiB9CkBAIC03NzQs
NyArNzcyLDcgQEAgc3ViIEdldFNlcXVlbmNlT3JGcm96ZW5BcnJheUlubmVyVHlwZQogewogICAg
IG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIEB7JHR5cGUtPnN1YnR5cGVzfVsw
XTsKIH0KQEAgLTg1Myw3ICs4NTEsNyBAQCBzdWIgTGlua092ZXJsb2FkZWRGdW5jdGlvbnMKIAog
ICAgIG15ICVuYW1lVG9GdW5jdGlvbnNNYXAgPSAoKTsKICAgICBmb3JlYWNoIG15ICRmdW5jdGlv
biAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIG15ICRuYW1lID0gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5uYW1l
OwogICAgICAgICAkbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfSA9IFtdIGlmICFleGlzdHMgJG5h
bWVUb0Z1bmN0aW9uc01hcHskbmFtZX07CiAgICAgICAgIHB1c2goQHskbmFtZVRvRnVuY3Rpb25z
TWFweyRuYW1lfX0sICRmdW5jdGlvbik7CiAgICAgICAgICRmdW5jdGlvbi0+e292ZXJsb2Fkc30g
PSAkbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfTsKQEAgLTg3MiwxMSArODcwLDExIEBAIHN1YiBB
dHRyaWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyCiB7CiAgICAgbXkgKCRnZW5lcmF0b3IsICRh
dHRyaWJ1dGUpID0gQF87CiAKLSAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+bmFtZTsKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9KSB7Ci0gICAgICAgICRhdHRyaWJ1dGVOYW1lID0g
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRB
cyJ9OworICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKKyAgICBpZiAo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSkgeworICAg
ICAgICAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJ
bXBsZW1lbnRlZEFzIn07CiAgICAgfQotICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlOworICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0dHJpYnV0ZS0+
dHlwZTsKIAogICAgICMgU1ZHIGFuaW1hdGVkIHR5cGVzIG5lZWQgdG8gdXNlIGEgc3BlY2lhbCBh
dHRyaWJ1dGUgbmFtZS4KICAgICAjIFRoZSByZXN0IG9mIHRoZSBzcGVjaWFsIGNhc2luZyBmb3Ig
U1ZHIGFuaW1hdGVkIHR5cGVzIGlzIGhhbmRsZWQgaW4gdGhlIGxhbmd1YWdlLXNwZWNpZmljIGNv
ZGUgZ2VuZXJhdG9ycy4KQEAgLTg4OSw3ICs4ODcsNyBAQCBzdWIgQ29udGVudEF0dHJpYnV0ZU5h
bWUKIHsKICAgICBteSAoJGdlbmVyYXRvciwgJGltcGxJbmNsdWRlcywgJGludGVyZmFjZU5hbWUs
ICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICBteSAkY29udGVudEF0dHJpYnV0ZU5hbWUgPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07CisgICAg
bXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IlJlZmxlY3QifTsKICAgICByZXR1cm4gdW5kZWYgaWYgISRjb250ZW50QXR0cmlidXRlTmFt
ZTsKIAogICAgICRjb250ZW50QXR0cmlidXRlTmFtZSA9IGxjICRnZW5lcmF0b3ItPkF0dHJpYnV0
ZU5hbWVGb3JHZXR0ZXJBbmRTZXR0ZXIoJGF0dHJpYnV0ZSkgaWYgJGNvbnRlbnRBdHRyaWJ1dGVO
YW1lIGVxICJWQUxVRV9JU19NSVNTSU5HIjsKQEAgLTkxMCwxMCArOTA4LDEwIEBAIHN1YiBHZXR0
ZXJFeHByZXNzaW9uCiAgICAgICAgIHJldHVybiAoJGdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZ2Vu
ZXJhdG9yLT5BdHRyaWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyKCRhdHRyaWJ1dGUpKSk7CiAg
ICAgfQogCi0gICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5
cGU7CisgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT50eXBlOwogCiAgICAgbXkg
JGZ1bmN0aW9uTmFtZTsKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiVVJMIn0pIHsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlVSTCJ9KSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJMQXR0cmlidXRl
IjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiIpIHsKICAg
ICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9u
IjsKQEAgLTk0OCw3ICs5NDYsNyBAQCBzdWIgU2V0dGVyRXhwcmVzc2lvbgogICAgICAgICByZXR1
cm4gKCJzZXQiIC4gJGdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZ2VuZXJhdG9yLT5BdHRyaWJ1dGVO
YW1lRm9yR2V0dGVyQW5kU2V0dGVyKCRhdHRyaWJ1dGUpKSk7CiAgICAgfQogCi0gICAgbXkgJGF0
dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgbXkgJGF0dHJp
YnV0ZVR5cGUgPSAkYXR0cmlidXRlLT50eXBlOwogCiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKICAg
ICBpZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgImJvb2xlYW4iKSB7CkBAIC05NzAsNyArOTY4
LDcgQEAgc3ViIElzV3JhcHBlclR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87
CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsK
KyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAog
ICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc1JlZlB0clR5cGUoJHR5cGUpOwogICAgIHJldHVy
biAwIGlmICRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwpAQCAtMTAxNyw3ICsxMDE1
LDcgQEAgc3ViIENvbXB1dGVJc0NhbGxiYWNrSW50ZXJmYWNlCiB7CiAgICAgbXkgKCRvYmplY3Qs
ICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBu
ZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAi
SURMVHlwZSI7CiAKICAgICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNXcmFwcGVyVHlwZSgk
dHlwZSk7CiAKQEAgLTEwNDIsNyArMTA0MCw3IEBAIHN1YiBJc0NhbGxiYWNrSW50ZXJmYWNlCiAK
ICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUi
KSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBp
ZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiAkaXNDYWxsYmFja0ludGVy
ZmFjZXskdHlwZS0+bmFtZX0gaWYgZXhpc3RzICRpc0NhbGxiYWNrSW50ZXJmYWNleyR0eXBlLT5u
YW1lfTsKICAgICBteSAkcmVzdWx0ID0gJG9iamVjdC0+Q29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZh
Y2UoJHR5cGUpOwpAQCAtMTA1Nyw3ICsxMDU1LDcgQEAgc3ViIENvbXB1dGVJc0Z1bmN0aW9uT25s
eUNhbGxiYWNrSW50ZXJmYQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAg
IGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFz
c2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0
dXJuIDAgdW5sZXNzICRvYmplY3QtPklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpOwogCkBAIC0x
MDk1LDcgKzEwOTMsNyBAQCBzdWIgSXNGdW5jdGlvbk9ubHlDYWxsYmFja0ludGVyZmFjZQogCiAg
ICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikg
aWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYg
cmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gJGlzRnVuY3Rpb25Pbmx5Q2Fs
bGJhY2tJbnRlcmZhY2V7JHR5cGUtPm5hbWV9IGlmIGV4aXN0cyAkaXNGdW5jdGlvbk9ubHlDYWxs
YmFja0ludGVyZmFjZXskdHlwZS0+bmFtZX07CiAgICAgbXkgJHJlc3VsdCA9ICRvYmplY3QtPkNv
bXB1dGVJc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKTsKQEAgLTEyMjAsMTIg
KzEyMTgsMTIgQEAgc3ViIEluaGVyaXRzRXh0ZW5kZWRBdHRyaWJ1dGUKIAogc3ViIFNob3VsZFBh
c3NXcmFwcGVyQnlSZWZlcmVuY2UKIHsKLSAgICBteSAoJG9iamVjdCwgJHBhcmFtZXRlciwgJGlu
dGVyZmFjZSkgPSBAXzsKKyAgICBteSAoJG9iamVjdCwgJGFyZ3VtZW50KSA9IEBfOwogCi0gICAg
cmV0dXJuIDAgaWYgJHBhcmFtZXRlci0+aXNWYXJpYWRpYzsKLSAgICByZXR1cm4gMCBpZiAkcGFy
YW1ldGVyLT50eXBlLT5pc051bGxhYmxlOwotICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc1dy
YXBwZXJUeXBlKCRwYXJhbWV0ZXItPnR5cGUpICYmICEkb2JqZWN0LT5Jc1R5cGVkQXJyYXlUeXBl
KCRwYXJhbWV0ZXItPnR5cGUpOwotICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzU1ZHVHlwZU5l
ZWRpbmdUZWFyT2ZmKCRwYXJhbWV0ZXItPnR5cGUpOworIyAgICByZXR1cm4gMCBpZiAkYXJndW1l
bnQtPmlzVmFyaWFkaWM7CisgICAgcmV0dXJuIDAgaWYgJGFyZ3VtZW50LT50eXBlLT5pc051bGxh
YmxlOworICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc1dyYXBwZXJUeXBlKCRhcmd1bWVudC0+
dHlwZSkgJiYgISRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUoJGFyZ3VtZW50LT50eXBlKTsKKyAg
ICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkYXJndW1lbnQt
PnR5cGUpOwogCiAgICAgcmV0dXJuIDE7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjA4MTI5KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdv
cmtpbmcgY29weSkKQEAgLTE3MywxOSArMTczLDE5IEBAIHN1YiBBZGRTdHJpbmdpZmllck9wZXJh
dGlvbklmTmVlZGVkCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0
dHJpYnV0ZXN9KSB7CiAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPmlzU3RyaW5naWZp
ZXI7CiAKLSAgICAgICAgbXkgJHN0cmluZ2lmaWVyID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAg
ICAgICAkc3RyaW5naWZpZXItPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAg
ICAgbXkgJHN0cmluZ2lmaWVyID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAgICAgJHN0cmlu
Z2lmaWVyLT5uYW1lKCJ0b1N0cmluZyIpOworCiAgICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QgPSB7fTsKLSAgICAgICAgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+e0ltcGxlbWVudGVk
QXN9ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwotICAgICAgICAkc3RyaW5naWZpZXIt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwot
ICAgICAgICAkc3RyaW5naWZpZXItPnNpZ25hdHVyZS0+bmFtZSgidG9TdHJpbmciKTsKLSAgICAg
ICAgZGllICJzdHJpbmdpZmllciBjYW4gb25seSBiZSB1c2VkIG9uIGF0dHJpYnV0ZXMgb2YgU3Ry
aW5nIHR5cGVzIiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57SW1w
bGVtZW50ZWRBc30gPSAkYXR0cmlidXRlLT5uYW1lOworICAgICAgICAkc3RyaW5naWZpZXItPmV4
dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgZGllICJz
dHJpbmdpZmllciBjYW4gb25seSBiZSB1c2VkIG9uIGF0dHJpYnV0ZXMgb2YgU3RyaW5nIHR5cGVz
IiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkYXR0cmlidXRlLT50eXBlKTsK
ICAgICAgICAgCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHVzZSBJRExQYXJzZXIncyBj
bG9uZVR5cGUuCi0gICAgICAgIG15ICR0eXBlID0gZG9tVHlwZS0+bmV3KCk7Ci0gICAgICAgICR0
eXBlLT5uYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZS0+bmFtZSk7CisgICAgICAgIG15
ICR0eXBlID0gSURMVHlwZS0+bmV3KCk7CisgICAgICAgICR0eXBlLT5uYW1lKCRhdHRyaWJ1dGUt
PnR5cGUtPm5hbWUpOwogCi0gICAgICAgICRzdHJpbmdpZmllci0+c2lnbmF0dXJlLT50eXBlKCR0
eXBlKTsKKyAgICAgICAgJHN0cmluZ2lmaWVyLT50eXBlKCR0eXBlKTsKIAogICAgICAgICBwdXNo
KEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgJHN0cmluZ2lmaWVyKTsKICAgICAgICAgbGFzdDsK
QEAgLTE5NSw3ICsxOTUsNyBAQCBzdWIgQWRkU3RyaW5naWZpZXJPcGVyYXRpb25JZk5lZWRlZAog
c3ViIEV2ZW50SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZQogewogICAgIG15ICRhdHRyaWJ1dGUg
PSBzaGlmdDsKLSAgICBteSAkZXZlbnRUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWU7CisgICAgbXkgJGV2ZW50VHlwZSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0ltcGxlbWVudGVkQXN9IHx8ICRhdHRyaWJ1dGUtPm5hbWU7CiAKICAgICAjIFJlbW92ZSB0
aGUgIm9uIiBwcmVmaXguCiAgICAgJGV2ZW50VHlwZSA9IHN1YnN0cigkZXZlbnRUeXBlLCAyKTsK
QEAgLTMwOCw3ICszMDgsNyBAQCBzdWIgQWRkVG9JbXBsSW5jbHVkZXMKIHN1YiBJc1JlYWRvbmx5
CiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwotICAgIHJldHVybiAkYXR0cmlidXRlLT5p
c1JlYWRPbmx5ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1JlcGxhY2VhYmxlfSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntQdXRGb3J3YXJkc307CisgICAgcmV0dXJuICRhdHRyaWJ1dGUtPmlzUmVhZE9ubHkgJiYg
ISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcGxhY2VhYmxlfSAmJiAhJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHV0Rm9yd2FyZHN9OwogfQogCiBzdWIgQWRkQ2xh
c3NGb3J3YXJkSWZOZWVkZWQKQEAgLTM4Miw3ICszODIsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Q
cm9wZXJ0eVNsb3RCb2R5CiAgICAgICAgICMgd2hlcmUgdGhlIGluZGV4IGlzIG91dCBvZiByYW5n
ZS4KICAgICAgICAgCiAgICAgICAgICMgRklYTUU6IFNob3VsZCB0aGlzIHdvcmsgZm9yIGFsbCBz
dHJpbmcgdHlwZXM/Ci0gICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5zaWduYXR1
cmUtPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgICAgaWYgKCRpbmRleGVkR2V0
dGVyRnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIpIHsKICAgICAgICAgICAgIHB1
c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKG9wdGlvbmFsSW5kZXgpIHtcbiIp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90
SW1wbCwgIiAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRpb25hbEluZGV4LnZhbHVlKCkgPCB0
aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHtcbiIpOwpAQCAtNTM3LDE4ICs1MzcsMTgg
QEAgc3ViIEdldEF0dHJpYnV0ZUdldHRlck5hbWUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKIAotICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+
V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIGlmICRhdHRyaWJ1dGUtPmlz
U3RhdGljOworICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1l
KSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRl
LT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICByZXR1cm4gR2V0SlNCdWlsdGlu
RnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUpIGlmIElzSlNCdWlsdGluKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpOwotICAgIHJldHVybiAianMiIC4gJGludGVyZmFjZS0+dHlwZS0+
bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSkgLiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+dHlwZSkgPyAiQ29uc3RydWN0b3IiIDogIiIpOworICAgIHJldHVybiAianMiIC4g
JGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRy
aWJ1dGUtPm5hbWUpIC4gKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmli
dXRlLT50eXBlKSA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CiB9CiAKIHN1YiBHZXRBdHRyaWJ1dGVT
ZXR0ZXJOYW1lCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUp
ID0gQF87CiAKLSAgICByZXR1cm4gInNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgk
Y2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAg
IHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRjbGFzc05hbWUpIC4g
IkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5h
bWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgIHJldHVybiAic2V0IiAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAk
YXR0cmlidXRlKSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAg
cmV0dXJuICJzZXRKUyIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3It
PldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICgkY29kZUdlbmVyYXRv
ci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKSA/ICJDb25z
dHJ1Y3RvciIgOiAiIik7CisgICAgcmV0dXJuICJzZXRKUyIgLiAkaW50ZXJmYWNlLT50eXBlLT5u
YW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSkgLiAoJGNv
ZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpID8gIkNvbnN0
cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEZ1bmN0aW9uTmFtZQpAQCAtNTU3LDcgKzU1Nyw3
IEBAIHN1YiBHZXRGdW5jdGlvbk5hbWUKIAogICAgIHJldHVybiBHZXRKU0J1aWx0aW5GdW5jdGlv
bk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAk
ZnVuY3Rpb24pOwogCi0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lOworICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPm5hbWU7CiAgICAgJGZ1
bmN0aW9uTmFtZSA9ICJTeW1ib2xJdGVyYXRvciIgaWYgJGZ1bmN0aW9uTmFtZSBlcSAiW1N5bWJv
bC5JdGVyYXRvcl0iOwogCiAgICAgbXkgJGtpbmQgPSAkZnVuY3Rpb24tPmlzU3RhdGljID8gIkNv
bnN0cnVjdG9yIiA6IChPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGZ1
bmN0aW9uKSA/ICJJbnN0YW5jZSIgOiAiUHJvdG90eXBlIik7CkBAIC01NzIsMTAgKzU3MiwxMCBA
QCBzdWIgR2V0U3BlY2lhbEFjY2Vzc29yRnVuY3Rpb25Gb3JUeXBlCiAgICAgbXkgJG51bWJlck9m
UGFyYW1ldGVycyA9IHNoaWZ0OwogCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVy
ZmFjZS0+ZnVuY3Rpb25zfSwgQHskaW50ZXJmYWNlLT5hbm9ueW1vdXNGdW5jdGlvbnN9KSB7Ci0g
ICAgICAgIG15ICRzcGVjaWFscyA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5zcGVjaWFsczsKKyAg
ICAgICAgbXkgJHNwZWNpYWxzID0gJGZ1bmN0aW9uLT5zcGVjaWFsczsKICAgICAgICAgbXkgJHNw
ZWNpYWxFeGlzdHMgPSBncmVwIHsgJF8gZXEgJHNwZWNpYWwgfSBAJHNwZWNpYWxzOwotICAgICAg
ICBteSAkcGFyYW1ldGVycyA9ICRmdW5jdGlvbi0+cGFyYW1ldGVyczsKLSAgICAgICAgaWYgKCRz
cGVjaWFsRXhpc3RzIGFuZCBzY2FsYXIoQCRwYXJhbWV0ZXJzKSA9PSAkbnVtYmVyT2ZQYXJhbWV0
ZXJzIGFuZCAkcGFyYW1ldGVycy0+WzBdLT50eXBlLT5uYW1lIGVxICRmaXJzdFBhcmFtZXRlclR5
cGUpIHsKKyAgICAgICAgbXkgJGFyZ3VtZW50cyA9ICRmdW5jdGlvbi0+YXJndW1lbnRzOworICAg
ICAgICBpZiAoJHNwZWNpYWxFeGlzdHMgYW5kIHNjYWxhcihAJGFyZ3VtZW50cykgPT0gJG51bWJl
ck9mUGFyYW1ldGVycyBhbmQgJGFyZ3VtZW50cy0+WzBdLT50eXBlLT5uYW1lIGVxICRmaXJzdFBh
cmFtZXRlclR5cGUpIHsKICAgICAgICAgICAgIHJldHVybiAkZnVuY3Rpb247CiAgICAgICAgIH0K
ICAgICB9CkBAIC02MTUsMTggKzYxNSwxOCBAQCBzdWIgQXR0cmlidXRlU2hvdWxkQmVPbkluc3Rh
bmNlCiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwogCiAgICAgIyBGSVhNRTogVGhlIGJpbmRp
bmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRpbmcgcnVudGltZS1lbmFibGVkIGF0
dHJpYnV0ZXMgb24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cyku
Ci0gICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntFbmFibGVkQXRSdW50aW1lfSAmJiAhSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7
CisgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxl
ZEF0UnVudGltZX0gJiYgIUlzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpOwogCiAgICAgcmV0
dXJuIDEgaWYgSW50ZXJmYWNlUmVxdWlyZXNBdHRyaWJ1dGVzT25JbnN0YW5jZSgkaW50ZXJmYWNl
KTsKLSAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRv
ci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CiAKICAgICAjIFtVbmZvcmdl
YWJsZV0gYXR0cmlidXRlcyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLgogICAgICMgaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFibGUKICAgICByZXR1cm4gMSBpZiBJ
c1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCiAgICAgaWYgKCRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9KSB7Ci0gICAgICAgIHJldHVy
biAwIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RD
aGVja1NlY3VyaXR5fTsKLSAgICAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPbkdldHRlcn07CisgICAg
ICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hl
Y2tTZWN1cml0eX07CisgICAgICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyfTsKICAgICAgICAgcmV0dXJuIDE7
CiAgICAgfQogCkBAIC02NDMsNyArNjQzLDcgQEAgc3ViIE9wZXJhdGlvblNob3VsZEJlT25JbnN0
YW5jZQogICAgIHJldHVybiAxIGlmIElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpICYmICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgbmUgIldvcmtlckdsb2JhbFNjb3BlIjsKIAogICAgICMgRklY
TUU6IFRoZSBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBwdXR0aW5nIHJ1bnRp
bWUtZW5hYmxlZCBvcGVyYXRpb25zIG9uIHRoZSBpbnN0YW5jZSB5ZXQgKGV4Y2VwdCBmb3IgZ2xv
YmFsIG9iamVjdHMpLgotICAgIHJldHVybiAwIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfTsKKyAgICByZXR1cm4gMCBpZiAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9OwogCiAgICAgIyBb
VW5mb3JnZWFibGVdIG9wZXJhdGlvbnMgc2hvdWxkIGJlIG9uIHRoZSBpbnN0YW5jZS4gaHR0cHM6
Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFibGUKICAgICByZXR1cm4gMSBpZiBJ
c1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CkBAIC02NjAsMTEgKzY2MCwxMSBA
QCBzdWIgR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZQogICAgIHB1c2goQHNwZWNpYWxzLCAi
RG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAK
ICAgICAjIEFzIHBlciBXZWIgSURMIHNwZWNpZmljYXRpb24sIGNvbnN0cnVjdG9yIHByb3BlcnRp
ZXMgb24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFsIG9iamVjdCBzaG91bGQgbm90IGJlIGVudW1lcmFi
bGUuCi0gICAgbXkgJGlzR2xvYmFsQ29uc3RydWN0b3IgPSAkY29kZUdlbmVyYXRvci0+SXNDb25z
dHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKLSAgICBwdXNoKEBzcGVj
aWFscywgIkRvbnRFbnVtIikgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Tm90RW51bWVyYWJsZX0gfHwgJGlzR2xvYmFsQ29uc3RydWN0b3IpOworICAgIG15
ICRpc0dsb2JhbENvbnN0cnVjdG9yID0gJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBl
KCRhdHRyaWJ1dGUtPnR5cGUpOworICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX0gfHwgJGlzR2xv
YmFsQ29uc3RydWN0b3IpOwogICAgIHB1c2goQHNwZWNpYWxzLCAiUmVhZE9ubHkiKSBpZiBJc1Jl
YWRvbmx5KCRhdHRyaWJ1dGUpOwogICAgIHB1c2goQHNwZWNpYWxzLCAiQ3VzdG9tQWNjZXNzb3Ii
KSB1bmxlc3MgJGlzR2xvYmFsQ29uc3RydWN0b3Igb3IgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwg
JGF0dHJpYnV0ZSk7Ci0gICAgcHVzaChAc3BlY2lhbHMsICJET01KSVRBdHRyaWJ1dGUiKSBpZiAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKKyAg
ICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEF0dHJpYnV0ZSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKICAgICBwdXNoKEBzcGVjaWFscywgIkFjY2Vzc29y
IHwgQnVpbHRpbiIpIGlmICBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAg
ICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsK
IH0KQEAgLTg0MCw3ICs4NDAsNyBAQCBzdWIgR2V0RW51bWVyYXRpb25DbGFzc05hbWUKIHsKICAg
ICBteSAoJHR5cGUsICRpbnRlcmZhY2UpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUi
KSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBp
ZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SGFz
RW51bUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlKCR0eXBlKSkgewogICAgICAgICByZXR1cm4g
JGNvZGVHZW5lcmF0b3ItPkdldEVudW1JbXBsZW1lbnRhdGlvbk5hbWVPdmVycmlkZSgkdHlwZSk7
CkBAIC0xMDQ0LDMxICsxMDQ0LDI5IEBAIHN1YiBHZXREaWN0aW9uYXJ5Q2xhc3NOYW1lCiAKIHN1
YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogewotICAgIG15ICgkaW50ZXJmYWNlLCAkc2lnbmF0dXJl
KSA9IEBfOwotCi0gICAgbXkgJGRlZmF1bHRWYWx1ZSA9ICRzaWduYXR1cmUtPmRlZmF1bHQ7Cisg
ICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlLCAkZGVmYXVsdFZhbHVlKSA9IEBfOwogCi0gICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCRzaWduYXR1cmUtPnR5cGUpKSB7CisgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgewogICAgICAgICAjIEZJWE1FOiBX
b3VsZCBiZSBuaWNlIHRvIHJlcG9ydCBhbiBlcnJvciBpZiB0aGUgdmFsdWUgZG9lcyBub3QgaGF2
ZSBxdW90ZSBtYXJrcyBhcm91bmQgaXQuCiAgICAgICAgICMgRklYTUU6IFdvdWxkIGJlIG5pY2Ug
dG8gcmVwb3J0IGFuIGVycm9yIGlmIHRoZSB2YWx1ZSBpcyBub3Qgb25lIG9mIHRoZSBlbnVtZXJh
dGlvbiB2YWx1ZXMuCi0gICAgICAgIG15ICRjbGFzc05hbWUgPSBHZXRFbnVtZXJhdGlvbkNsYXNz
TmFtZSgkc2lnbmF0dXJlLT50eXBlLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgbXkgJGNsYXNzTmFt
ZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCR0eXBlLCAkaW50ZXJmYWNlKTsKICAgICAgICAg
bXkgJGVudW1lcmF0aW9uVmFsdWVOYW1lID0gR2V0RW51bWVyYXRpb25WYWx1ZU5hbWUoc3Vic3Ry
KCRkZWZhdWx0VmFsdWUsIDEsIC0xKSk7CiAgICAgICAgIHJldHVybiAkY2xhc3NOYW1lIC4gIjo6
IiAuICRlbnVtZXJhdGlvblZhbHVlTmFtZTsKICAgICB9CiAgICAgaWYgKCRkZWZhdWx0VmFsdWUg
ZXEgIm51bGwiKSB7Ci0gICAgICAgIGlmICgkc2lnbmF0dXJlLT50eXBlLT5pc1VuaW9uKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gIk51bGxvcHQiIGlmICRzaWduYXR1cmUtPnR5cGUtPmlzTnVsbGFi
bGU7CisgICAgICAgIGlmICgkdHlwZS0+aXNVbmlvbikgeworICAgICAgICAgICAgcmV0dXJuICJO
dWxsb3B0IiBpZiAkdHlwZS0+aXNOdWxsYWJsZTsKIAotICAgICAgICAgICAgbXkgJElETFR5cGUg
PSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICRzaWduYXR1cmUtPnR5cGUpOworICAgICAgICAgICAg
bXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKICAgICAgICAgICAg
IHJldHVybiAiY29udmVydDwke0lETFR5cGV9PihzdGF0ZSwganNOdWxsKCkpOyI7CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuICJqc051bGwoKSIgaWYgJHNpZ25hdHVyZS0+dHlwZS0+bmFtZSBl
cSAiYW55IjsKLSAgICAgICAgcmV0dXJuICJudWxscHRyIiBpZiAkY29kZUdlbmVyYXRvci0+SXNX
cmFwcGVyVHlwZSgkc2lnbmF0dXJlLT50eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFy
cmF5VHlwZSgkc2lnbmF0dXJlLT50eXBlKTsKLSAgICAgICAgcmV0dXJuICJTdHJpbmcoKSIgaWYg
JGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkc2lnbmF0dXJlLT50eXBlKTsKKyAgICAgICAg
cmV0dXJuICJqc051bGwoKSIgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAgICAgIHJldHVy
biAibnVsbHB0ciIgaWYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpIHx8ICRj
b2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBlKTsKKyAgICAgICAgcmV0dXJuICJT
dHJpbmcoKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAgICAgICAg
IHJldHVybiAiTnVsbG9wdCI7CiAgICAgfQogICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJbXSIp
IHsKLSAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgk
aW50ZXJmYWNlLCAkc2lnbmF0dXJlKTsKKyAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRp
dmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKICAgICAgICAgcmV0dXJuICIkbmF0aXZlVHlwZSgp
IgogICAgIH0KIApAQCAtMTE4MywxMCArMTE4MSwxMCBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5
SW1wbGVtZW50YXRpb25Db250CiAKICAgICAgICAgICAgICMgVmFsdWUgaXMgdW5kZWZpbmVkLgog
ICAgICAgICAgICAgIyA1LjQuIE90aGVyd2lzZSwgaWYgdmFsdWUgaXMgdW5kZWZpbmVkIGJ1dCB0
aGUgZGljdGlvbmFyeSBtZW1iZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgdGhlbjoKLSAgICAgICAg
ICAgIGlmICgkbWVtYmVyLT5pc09wdGlvbmFsICYmIGRlZmluZWQgJG1lbWJlci0+ZGVmYXVsdCkg
eworICAgICAgICAgICAgaWYgKCEkbWVtYmVyLT5pc1JlcXVpcmVkICYmIGRlZmluZWQgJG1lbWJl
ci0+ZGVmYXVsdCkgewogICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9IGVsc2VcbiI7
Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICByZXN1bHQuJGtleSA9ICIgLiBH
ZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJmYWNlLCAkbWVtYmVyKSAuICI7XG4iOwotICAgICAg
ICAgICAgfSBlbHNpZiAoISRtZW1iZXItPmlzT3B0aW9uYWwpIHsKKyAgICAgICAgICAgICAgICAk
cmVzdWx0IC49ICIgICAgICAgIHJlc3VsdC4ka2V5ID0gIiAuIEdlbmVyYXRlRGVmYXVsdFZhbHVl
KCRpbnRlcmZhY2UsICRtZW1iZXItPnR5cGUsICRtZW1iZXItPmRlZmF1bHQpIC4gIjtcbiI7Cisg
ICAgICAgICAgICB9IGVsc2lmICgkbWVtYmVyLT5pc1JlcXVpcmVkKSB7CiAgICAgICAgICAgICAg
ICAgIyA1LjUuIE90aGVyd2lzZSwgaWYgdmFsdWUgaXMgdW5kZWZpbmVkIGFuZCB0aGUgZGljdGlv
bmFyeSBtZW1iZXIgaXMgYSByZXF1aXJlZCBkaWN0aW9uYXJ5IG1lbWJlciwgdGhlbiB0aHJvdyBh
IFR5cGVFcnJvci4KICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgfSBlbHNlIHtcbiI7
CiAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAgICB0aHJvd1JlcXVpcmVkTWVtYmVy
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBcIiIuICRtZW1iZXItPm5hbWUgLiJcIiwgXCIk
bmFtZVwiLCBcIiIuICR0eXBlLT5uYW1lIC4iXCIpO1xuIjsKQEAgLTE1MTQsMTkgKzE1MTIsMTkg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCRudW1BdHRyaWJ1dGVzID4gMCkgewogICAg
ICAgICBmb3JlYWNoIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICBt
eSAkYXR0cmlidXRlID0gJF87Ci0gICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlm
IEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cyk7Ci0gICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmIEhhc0N1c3RvbVNldHRl
cigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICAg
ICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRB
dHRyaWJ1dGV9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKTsKKyAgICAgICAgICAgICRudW1DdXN0b21BdHRyaWJ1dGVzKysgaWYgSGFzQ3VzdG9tR2V0
dGVyKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgICAgICAkbnVtQ3Vz
dG9tQXR0cmlidXRlcysrIGlmIEhhc0N1c3RvbVNldHRlcigkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMpOworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NhY2hlZEF0dHJpYnV0ZX0pIHsKKyAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxT
dHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmli
dXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBtdXRhYmxlIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6
VW5rbm93bj4gbV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIjtcbiIpOworICAg
ICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgbXV0YWJsZSBKU0M6OldyaXRl
QmFycmllcjxKU0M6OlVua25vd24+IG1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiO1xuIik7CiAg
ICAgICAgICAgICAgICAgJG51bUNhY2hlZEF0dHJpYnV0ZXMrKzsKICAgICAgICAgICAgICAgICAk
bmVlZHNWaXNpdENoaWxkcmVuID0gMTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAkaGFzRE9NSklUQXR0cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn07CisgICAgICAgICAgICAkaGFzRE9N
SklUQXR0cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRP
TUpJVCJ9OwogCi0gICAgICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMgPSAx
IGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERl
Y2xhcmVJbkhlYWRlcn07CisgICAgICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0
ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJl
SW5IZWFkZXJ9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNTQ1LDMxICsxNTQzLDMxIEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4gICAgLy8g
Q3VzdG9tIGF0dHJpYnV0ZXNcbiIpOwogCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAo
QHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
U3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlKTsKLSAgICAgICAgICAgIGlmIChIYXNDdXN0b21HZXR0ZXIoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CisgICAgICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZygkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIGlmIChIYXNDdXN0b21HZXR0ZXIoJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLSAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5X
S19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICAgICAg
bXkgJG1ldGhvZE5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5u
YW1lKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNW
YWx1ZSAiIC4gJG1ldGhvZE5hbWUgLiAiKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0
dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSAmJiAhSXNSZWFk
b25seSgkYXR0cmlidXRlKSkgeworICAgICAgICAgICAgaWYgKEhhc0N1c3RvbVNldHRlcigkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpICYmICFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUmLCBKU0M6
OkpTVmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICB2b2lkIHNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1l
KSAuICIoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yZWFjaCBteSAkZnVu
Y3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAkbnVtQ3VzdG9tRnVu
Y3Rpb25zKysgaWYgSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMpOwotICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ0Z1bmN0aW9ucyA9IDEg
aWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNs
YXJlSW5IZWFkZXJ9OworICAgICAgICAkbnVtQ3VzdG9tRnVuY3Rpb25zKysgaWYgSGFzQ3VzdG9t
TWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgJGhhc0Zvcndh
cmREZWNsYXJpbmdGdW5jdGlvbnMgPSAxIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgfQogCiAgICAgaWYgKCRudW1DdXN0b21G
dW5jdGlvbnMgPiAwKSB7CiAgICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBmdW5jdGlvbnNcbiIpOwog
ICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7
Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0FwcGxlQ29weXJpZ2h0fSkgeworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEk
aW5BcHBsZUNvcHlyaWdodCkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKICAgICAgICAgICAgICAg
ICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwpAQCAtMTU3OCwxMSArMTU3NiwxMSBAQCBzdWIg
R2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkZW5k
QXBwbGVDb3B5cmlnaHQpOwogICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5leHQgdW5sZXNzIEhhc0N1c3RvbU1ldGhvZCgk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIG5l
eHQgdW5sZXNzIEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyk7
CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2Fkc30gJiYgJGZ1bmN0aW9u
LT57b3ZlcmxvYWRJbmRleH0gIT0gMTsKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+
c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7CiAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVt
ZW50ZWRBc30gfHwgJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWUpOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0g
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPm5hbWUpOwogICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAiIC4gKCRmdW5jdGlvbi0+aXNTdGF0aWMgPyAic3RhdGljICIg
OiAiIikgLiAiSlNDOjpKU1ZhbHVlICIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAi
KEpTQzo6RXhlY1N0YXRlJik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtMTY5MSw5
ICsxNjg5LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7
JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24t
PntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAg
ICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CisgICAgICAgICAgICBuZXh0IHVubGVzcyAk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9Owog
Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0FwcGxlQ29weXJpZ2h0fSkgeworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEk
aW5BcHBsZUNvcHlyaWdodCkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKICAgICAgICAgICAgICAg
ICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwpAQCAtMTcxOCw5ICsxNzE2LDkgQEAgc3ViIEdl
bmVyYXRlSGVhZGVyCiAgICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0cmlidXRlcykgewog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCIvLyBBdHRyaWJ1dGVzXG5cbiIpOwogICAgICAg
ICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CisgICAgICAgICAgICBuZXh0IHVubGVz
cyAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVy
fTsKIAotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3It
PkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAg
ICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNv
bmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKQEAgLTE3MzYsMTAg
KzE3MzQsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICRoZWFkZXJJbmNsdWRlc3si
PGRvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaD4ifSA9IDE7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsIi8vIERPTUpJVCBlbWl0dGVycyBmb3IgYXR0cmlidXRlc1xuXG4iKTsKICAgICAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0g
ICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJET01KSVQifTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKIAogICAgICAgICAgICAgbXkgJGludGVy
ZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwotICAgICAgICAgICAgbXkgJGNsYXNz
TmFtZSA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgICAgIG15ICRjbGFzc05hbWUgPSAkaW50
ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUp
OwogICAgICAgICAgICAgbXkgJGRvbUpJVENsYXNzTmFtZSA9ICRjbGFzc05hbWUgLiAiRE9NSklU
IjsKIAogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvciRjbGFzc05hbWUodm9pZCk7XG4iKTsKQEAg
LTE4MjksMTkgKzE4MjcsMTkgQEAgc3ViIEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogICAg
ICAgICBuZXh0IGlmIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0
cmlidXRlKSAhPSAkaXNJbnN0YW5jZTsKIAogICAgICAgICAjIEdsb2JhbCBvYmplY3RzIGFkZCBS
dW50aW1lRW5hYmxlZCBhdHRyaWJ1dGVzIGFmdGVyIGNyZWF0aW9uIHNvIGRvIG5vdCBhZGQgdGhl
bSB0byB0aGUgc3RhdGljIHRhYmxlLgotICAgICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGlu
dGVyZmFjZSkgJiYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
bmFibGVkQXRSdW50aW1lfSkgeworICAgICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGludGVy
ZmFjZSkgJiYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGlt
ZX0pIHsKICAgICAgICAgICAgICRwcm9wZXJ0eUNvdW50IC09IDE7CiAgICAgICAgICAgICBuZXh0
OwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgcHVz
aChAJGhhc2hLZXlzLCAkbmFtZSk7CiAKICAgICAgICAgbXkgJHNwZWNpYWwgPSBHZXRKU0NBdHRy
aWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgICAgICBwdXNo
KEAkaGFzaFNwZWNpYWxzLCAkc3BlY2lhbCk7CiAKLSAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7Ci0gICAgICAgICAgICBw
dXNoKEAkaGFzaFZhbHVlMSwgImRvbUpJVEdldHRlclNldHRlckZvciIgLiAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lKSk7CisgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRE9NSklUIn0pIHsKKyAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUxLCAiZG9tSklUR2V0
dGVyU2V0dGVyRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKSk7CiAgICAgICAgICAgICBwdXNoKEAkaGFzaFZh
bHVlMiwgIjAiKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBH
ZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUp
OwpAQCAtMTg1NSwxMCArMTg1MywxMCBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxl
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsK
KyAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q29uZGl0aW9uYWx9OwogICAgICAgICAkY29uZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNvbmRp
dGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAotICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgeworICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0pIHsK
ICAgICAgICAgICAgIGRpZSAiV2UgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IFtFbmFibGVkQXRS
dW50aW1lXSBhdHRyaWJ1dGVzIG9uIHRoZSBpbnN0YW5jZSAoZXhjZXB0IGZvciBnbG9iYWwgb2Jq
ZWN0cykuIiBpZiAkaXNJbnN0YW5jZTsKICAgICAgICAgICAgIHB1c2goQCRydW50aW1lRW5hYmxl
ZEF0dHJpYnV0ZXMsICRhdHRyaWJ1dGUpOwogICAgICAgICB9CkBAIC0xODY4LDE5ICsxODY2LDE5
IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICBwdXNoKEBmdW5jdGlvbnMs
IEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30pIGlmIElzS2V5VmFsdWVJdGVyYWJs
ZUludGVyZmFjZSgkaW50ZXJmYWNlKTsKICAgICBwdXNoKEBmdW5jdGlvbnMsIEB7JGludGVyZmFj
ZS0+c2VyaWFsaXphYmxlLT5mdW5jdGlvbnN9KSBpZiAkaW50ZXJmYWNlLT5zZXJpYWxpemFibGU7
CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKLSAgICAgICAgbmV4dCBp
ZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVu
dGlmaWVyfSBhbmQgbm90ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntQdWJsaWNJZGVudGlmaWVyfSk7CisgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJGZ1bmN0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7CiAgICAgICAgIG5leHQgaWYgKCRm
dW5jdGlvbi0+aXNTdGF0aWMpOwogICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2Fk
SW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKICAgICAgICAgbmV4dCBp
ZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSAhPSAk
aXNJbnN0YW5jZTsKLSAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBl
cSAiW1N5bWJvbC5JdGVyYXRvcl0iOworICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+bmFtZSBl
cSAiW1N5bWJvbC5JdGVyYXRvcl0iOwogCiAgICAgICAgICMgR2xvYmFsIG9iamVjdHMgYWRkIFJ1
bnRpbWVFbmFibGVkIG9wZXJhdGlvbnMgYWZ0ZXIgY3JlYXRpb24gc28gZG8gbm90IGFkZCB0aGVt
IHRvIHRoZSBzdGF0aWMgdGFibGUuCi0gICAgICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgkaW50
ZXJmYWNlKSAmJiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEF0UnVudGltZX0pIHsKKyAgICAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZh
Y2UpICYmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0p
IHsKICAgICAgICAgICAgICRwcm9wZXJ0eUNvdW50IC09IDE7CiAgICAgICAgICAgICBuZXh0Owog
ICAgICAgICB9CiAKLSAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZTsKKyAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPm5hbWU7CiAgICAgICAgIHB1c2goQCRo
YXNoS2V5cywgJG5hbWUpOwogCiAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlv
bk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKQEAgLTE4ODksNyArMTg4
Nyw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbXkgJGZ1bmN0
aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKIAogICAgICAgICAjIEZJ
WE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdlIGNhbiBnZXQgcmlkIG9mIHRoZSBxdWlyayBpbnRyb2R1
Y2VkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjM5NjcuCi0g
ICAgICAgICRmdW5jdGlvbkxlbmd0aCA9IDMgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50IiBh
bmQgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgImluaXRFdmVudCI7CisgICAgICAgICRm
dW5jdGlvbkxlbmd0aCA9IDMgaWYgJGludGVyZmFjZU5hbWUgZXEgIkV2ZW50IiBhbmQgJGZ1bmN0
aW9uLT5uYW1lIGVxICJpbml0RXZlbnQiOwogCiAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAk
ZnVuY3Rpb25MZW5ndGgpOwogCkBAIC0xODk4LDcgKzE4OTYsNyBAQCBzdWIgR2VuZXJhdGVQcm9w
ZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIG15ICRjb25kaXRpb25hbCA9IGdldENvbmRpdGlvbmFs
Rm9yRnVuY3Rpb25Db25zaWRlcmluZ092ZXJsb2FkcygkZnVuY3Rpb24pOwogICAgICAgICAkY29u
ZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAotICAg
ICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJs
ZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CiAgICAgICAgICAgICBkaWUgIldlIGN1cnJlbnRseSBk
byBub3Qgc3VwcG9ydCBbRW5hYmxlZEF0UnVudGltZV0gb3BlcmF0aW9ucyBvbiB0aGUgaW5zdGFu
Y2UgKGV4Y2VwdCBmb3IgZ2xvYmFsIG9iamVjdHMpLiIgaWYgJGlzSW5zdGFuY2U7CiAgICAgICAg
ICAgICBwdXNoKEAkcnVudGltZUVuYWJsZWRGdW5jdGlvbnMsICRmdW5jdGlvbik7CiAgICAgICAg
IH0KQEAgLTE5MzAsMTUgKzE5MjgsMTUgQEAgc3ViIENvbXB1dGVFZmZlY3RpdmVPdmVybG9hZFNl
dAogCiAgICAgbXkgJG0gPSBMZW5ndGhPZkxvbmdlc3RGdW5jdGlvblBhcmFtZXRlckxpc3QoJG92
ZXJsb2Fkcyk7CiAgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQgKEB7JG92ZXJsb2Fkc30pIHsKLSAg
ICAgICAgbXkgJG4gPSBAeyRvdmVybG9hZC0+cGFyYW1ldGVyc307CisgICAgICAgIG15ICRuID0g
QHskb3ZlcmxvYWQtPmFyZ3VtZW50c307CiAgICAgICAgIG15IEB0OwogICAgICAgICBteSBAbzsK
ICAgICAgICAgbXkgJGlzVmFyaWFkaWMgPSAwOwotICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0
ZXIgKEB7JG92ZXJsb2FkLT5wYXJhbWV0ZXJzfSkgewotICAgICAgICAgICAgcHVzaChAdCwgJHBh
cmFtZXRlci0+dHlwZSk7Ci0gICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCkg
eworICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskb3ZlcmxvYWQtPmFyZ3VtZW50c30p
IHsKKyAgICAgICAgICAgIHB1c2goQHQsICRhcmd1bWVudC0+dHlwZSk7CisgICAgICAgICAgICBp
ZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAbywgIm9w
dGlvbmFsIik7Ci0gICAgICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7
CisgICAgICAgICAgICB9IGVsc2lmICgkYXJndW1lbnQtPmlzVmFyaWFkaWMpIHsKICAgICAgICAg
ICAgICAgICBwdXNoKEBvLCAidmFyaWFkaWMiKTsKICAgICAgICAgICAgICAgICAkaXNWYXJpYWRp
YyA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTk1Niw4ICsxOTU0LDggQEAgc3ViIENv
bXB1dGVFZmZlY3RpdmVPdmVybG9hZFNldAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGZvciAobXkgJGkgPSAkbiAtIDE7ICRpID49IDA7ICRpLS0pIHsKLSAgICAgICAgICAgIG15
ICRwYXJhbWV0ZXIgPSBAeyRvdmVybG9hZC0+cGFyYW1ldGVyc31bJGldOwotICAgICAgICAgICAg
bGFzdCB1bmxlc3MgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgfHwgJHBhcmFtZXRlci0+aXNWYXJp
YWRpYyk7CisgICAgICAgICAgICBteSAkYXJndW1lbnQgPSBAeyRvdmVybG9hZC0+YXJndW1lbnRz
fVskaV07CisgICAgICAgICAgICBsYXN0IHVubGVzcyAoJGFyZ3VtZW50LT5pc09wdGlvbmFsIHx8
ICRhcmd1bWVudC0+aXNWYXJpYWRpYyk7CiAgICAgICAgICAgICBwb3AoQHQpOwogICAgICAgICAg
ICAgcG9wKEBvKTsKICAgICAgICAgICAgICYkYWRkVHVwbGUoWyRvdmVybG9hZCwgW0B0XSwgW0Bv
XV0pOwpAQCAtMjAzOCw3ICsyMDM2LDcgQEAgc3ViIEdldERpc3Rpbmd1aXNoaW5nQXJndW1lbnRJ
bmRleAogICAgIGZvciAobXkgJGluZGV4ID0gMDsgJGluZGV4IDwgc2NhbGFyKEAkZmlyc3RUdXBs
ZVR5cGVzKTsgJGluZGV4KyspIHsKICAgICAgICAgcmV0dXJuICRpbmRleCBpZiBBcmVUeXBlc0Rp
c3Rpbmd1aXNoYWJsZUZvck92ZXJsb2FkUmVzb2x1dGlvbihAeyRmaXJzdFR1cGxlVHlwZXN9WyRp
bmRleF0sIEB7JHNlY29uZFR1cGxlVHlwZXN9WyRpbmRleF0pOwogICAgIH0KLSAgICBkaWUgIlVu
ZGlzdGluZ3Vpc2hhYmxlIG92ZXJsb2FkcyBmb3Igb3BlcmF0aW9uICIgLiAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSAuICIgd2l0aCBsZW5ndGg6ICIgLiBzY2FsYXIoQCRmaXJzdFR1cGxlVHlw
ZXMpOworICAgIGRpZSAiVW5kaXN0aW5ndWlzaGFibGUgb3ZlcmxvYWRzIGZvciBvcGVyYXRpb24g
IiAuICRmdW5jdGlvbi0+bmFtZSAuICIgd2l0aCBsZW5ndGg6ICIgLiBzY2FsYXIoQCRmaXJzdFR1
cGxlVHlwZXMpOwogfQogCiBzdWIgR2V0T3ZlcmxvYWRUaGF0TWF0Y2hlcwpAQCAtMjA3MywxMSAr
MjA3MSwxMSBAQCBzdWIgZ2V0Q29uZGl0aW9uYWxGb3JGdW5jdGlvbkNvbnNpZGVyaW5nCiB7CiAg
ICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAKLSAgICByZXR1cm4gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSB1bmxlc3MgJGZ1bmN0aW9uLT57
b3ZlcmxvYWRzfTsKKyAgICByZXR1cm4gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
b25kaXRpb25hbH0gdW5sZXNzICRmdW5jdGlvbi0+e292ZXJsb2Fkc307CiAKICAgICBteSAlY29u
ZGl0aW9uczsKICAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAoQHskZnVuY3Rpb24tPntvdmVybG9h
ZHN9fSkgewotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkb3ZlcmxvYWQtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OworICAgICAgICBteSAkY29uZGl0aW9u
YWwgPSAkb3ZlcmxvYWQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKICAgICAg
ICAgcmV0dXJuIHVubGVzcyAkY29uZGl0aW9uYWw7CiAgICAgICAgICRjb25kaXRpb25zeyRjb25k
aXRpb25hbH0gPSAxOwogICAgIH0KQEAgLTIwOTgsMTMgKzIwOTYsMTMgQEAgc3ViIEdlbmVyYXRl
T3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1YwogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImNv
bnN0cnVjdCR7Y2xhc3NOYW1lfSI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbXkgJGtpbmQgPSAk
ZnVuY3Rpb24tPmlzU3RhdGljID8gIkNvbnN0cnVjdG9yIiA6IChPcGVyYXRpb25TaG91bGRCZU9u
SW5zdGFuY2UoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSA/ICJJbnN0YW5jZSIgOiAiUHJvdG90eXBl
Iik7Ci0gICAgICAgICRmdW5jdGlvbk5hbWUgPSAianMke2ludGVyZmFjZU5hbWV9JHtraW5kfUZ1
bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lKTsKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7aW50ZXJmYWNlTmFtZX0ke2tp
bmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1l
KTsKICAgICB9CiAKICAgICBteSAkZ2VuZXJhdGVPdmVybG9hZENhbGxJZk5lY2Vzc2FyeSA9IHN1
YiB7CiAgICAgICAgIG15ICgkb3ZlcmxvYWQsICRjb25kaXRpb24pID0gQF87CiAgICAgICAgIHJl
dHVybiB1bmxlc3MgJG92ZXJsb2FkOwotICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkb3ZlcmxvYWQtPnNpZ25h
dHVyZSk7CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvdmVybG9hZCk7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoJGNvbmRpdGlvbilc
biAgICAiKSBpZiAkY29uZGl0aW9uOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgcmV0dXJuICR7ZnVuY3Rpb25OYW1lfSRvdmVybG9hZC0+e292ZXJsb2FkSW5kZXh9KHN0YXRl
KTtcbiIpOwpAQCAtMjI5MSw4ICsyMjg5LDggQEAgc3ViIEdldEZ1bmN0aW9uTGVuZ3RoCiAgICAg
ICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCiAgICAgICAgIG15ICRsZW5ndGggPSAwOwotICAg
ICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewot
ICAgICAgICAgICAgbGFzdCBpZiAkcGFyYW1ldGVyLT5pc09wdGlvbmFsIHx8ICRwYXJhbWV0ZXIt
PmlzVmFyaWFkaWM7CisgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+
YXJndW1lbnRzfSkgeworICAgICAgICAgICAgbGFzdCBpZiAkYXJndW1lbnQtPmlzT3B0aW9uYWwg
fHwgJGFyZ3VtZW50LT5pc1ZhcmlhZGljOwogICAgICAgICAgICAgJGxlbmd0aCsrOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybiAkbGVuZ3RoOwpAQCAtMjMxMSw4ICsyMzA5LDggQEAgc3ViIExl
bmd0aE9mTG9uZ2VzdEZ1bmN0aW9uUGFyYW1ldGVyTGlzdAogICAgIG15ICgkb3ZlcmxvYWRzKSA9
IEBfOwogICAgIG15ICRyZXN1bHQgPSAwOwogICAgIGZvcmVhY2ggbXkgJG92ZXJsb2FkIChAeyRv
dmVybG9hZHN9KSB7Ci0gICAgICAgIG15IEBwYXJhbWV0ZXJzID0gQHskb3ZlcmxvYWQtPnBhcmFt
ZXRlcnN9OwotICAgICAgICAkcmVzdWx0ID0gQHBhcmFtZXRlcnMgaWYgJHJlc3VsdCA8IEBwYXJh
bWV0ZXJzOworICAgICAgICBteSBAYXJndW1lbnRzID0gQHskb3ZlcmxvYWQtPmFyZ3VtZW50c307
CisgICAgICAgICRyZXN1bHQgPSBAYXJndW1lbnRzIGlmICRyZXN1bHQgPCBAYXJndW1lbnRzOwog
ICAgIH0KICAgICByZXR1cm4gJHJlc3VsdDsKIH0KQEAgLTI0NTksMTUgKzI0NTcsMTcgQEAgc3Vi
IFRvTWV0aG9kTmFtZQogfQogCiAjIFJldHVybnMgdGhlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMg
ZnVuY3Rpb24gbmFtZSB0aGF0IGlzIGhvb2tlZCB1cCB0byBjaGVjayBpZiBhIG1ldGhvZC9hdHRy
aWJ1dGUgaXMgZW5hYmxlZC4KKyMgTk9URTogUGFyYW1ldGVyIHBhc3NlZCBpbiBtdXN0IGhhdmUg
Ym90aCBhbiAnZXh0ZW5kZWRBdHRyaWJ1dGVzJyBwcm9wZXJ0eS4KKyMgIChlLmcuIERPTUludGVy
ZmFjZSwgRE9NQXR0cmlidXRlLCBET01PcGVyYXRpb24sIERPTUl0ZXJhYmxlLCBldGMuKQogc3Vi
IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUKIHsKLSAgICBteSAkc2lnbmF0dXJlID0gc2hp
ZnQ7CisgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKIAogICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMg
Z2l2ZW4gKGUuZy4gIkVuYWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5hbWUiKSByZXR1cm4gdGhlIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkue0ZlYXR1cmVOYW1lfUVuYWJs
ZWQoKSBtZXRob2QuCi0gICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLiIgLiBUb01ldGhvZE5hbWUoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RW5hYmxlZEF0UnVudGltZX0pIC4gIkVuYWJsZWQiIGlmICgkc2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSBuZSAiVkFMVUVfSVNfTUlTU0lORyIpOworICAg
IHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9N
ZXRob2ROYW1lKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1l
fSkgLiAiRW5hYmxlZCIgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVk
QXRSdW50aW1lfSAmJiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVu
dGltZX0gbmUgIlZBTFVFX0lTX01JU1NJTkciKTsKIAogICAgICMgT3RoZXJ3aXNlIHJldHVybiBh
IGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
e21ldGhvZE5hbWV9RW5hYmxlZCgpLgotICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUtPm5hbWUpIC4g
IkVuYWJsZWQiOworICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5uYW1lKSAuICJFbmFibGVkIjsKIH0K
IAogc3ViIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0CkBAIC0yNDgyLDcgKzI0ODIsNyBA
QCBzdWIgR2V0SW5kZXhlZEdldHRlckV4cHJlc3Npb24KICAgICBteSAkaW5kZXhlZEdldHRlckZ1
bmN0aW9uID0gc2hpZnQ7CiAgICAgCiAgICAgIyBGSVhNRTogU2hvdWxkIHRoaXMgd29yayBmb3Ig
YWxsIHN0cmluZyB0eXBlcz8KLSAgICByZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUs
IHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkiIGlmICRpbmRleGVkR2V0dGVyRnVu
Y3Rpb24tPnNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICByZXR1cm4g
ImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4KSkiIGlmICRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmlu
ZyI7CiAgICAgcmV0dXJuICJ0b0pTKHN0YXRlLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwg
dGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSI7CiB9CiAKQEAgLTI0OTMsNyArMjQ5
Myw3IEBAIHN1YiBhZGRVbnNjb3BhYmxlUHJvcGVydGllcwogCiAgICAgbXkgQHVuc2NvcGFibGVz
OwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+ZnVu
Y3Rpb25zfSwgQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICBwdXNoKEB1bnNj
b3BhYmxlcywgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgaWYgJGZ1bmN0
aW9uT3JBdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5zY29wYWJs
ZX07CisgICAgICAgIHB1c2goQHVuc2NvcGFibGVzLCAkZnVuY3Rpb25PckF0dHJpYnV0ZS0+bmFt
ZSkgaWYgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Vuc2NvcGFi
bGV9OwogICAgIH0KICAgICByZXR1cm4gaWYgc2NhbGFyKEB1bnNjb3BhYmxlcykgPT0gMDsKIApA
QCAtMjUwNyw5ICsyNTA3LDcgQEAgc3ViIGFkZFVuc2NvcGFibGVQcm9wZXJ0aWVzCiAKIHN1YiBH
ZXRSZXN1bHRUeXBlRmlsdGVyCiB7Ci0gICAgbXkgKCRzaWduYXR1cmUpID0gQF87Ci0KLSAgICBt
eSAkdHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CisgICAgbXkgKCR0eXBlKSA9IEBfOwogCiAgICAg
bXkgJVR5cGVGaWx0ZXJzID0gKAogICAgICAgICAiYW55IiA9PiAiU3BlY0hlYXBUb3AiLApAQCAt
MjU5MiwxMCArMjU5MCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24t
PntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAg
ICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKKyAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICAgICAg
ICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKIAotICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBs
ZUNvcHlyaWdodH0pIHsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgewogICAgICAgICAgICAgICAgIGlmICghJGluQXBwbGVD
b3B5cmlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRiZWdp
bkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAkaW5B
cHBsZUNvcHlyaWdodCA9IDE7CkBAIC0yNjIxLDEwICsyNjE5LDEwIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiLy8gQXR0cmlidXRlc1xu
XG4iKTsKIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKKyAgICAgICAgICAg
IG5leHQgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJ
bkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRh
dHRyaWJ1dGUpOwogCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUp
OworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtnZXR0ZXJ9KEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7CkBAIC0yNzAx
LDE4ICsyNjk5LDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgZm9y
ZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAg
ICAgICBuZXh0IHVubGVzcyAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpOwotICAgICAgICAgICAgbXkg
JG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkbmFt
ZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUp
OwogCiAgICAgICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKICAgICAgICAgICAgIHB1c2goQHNw
ZWNpYWxzLCAiRG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIlJlYWRPbmx5IikgaWYgSXNSZWFk
b25seSgkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiRE9NSklUQXR0
cmlidXRlIikgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
RE9NSklUIn07CisgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEF0dHJpYnV0ZSIp
IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKICAgICAgICAg
ICAgIG15ICRzcGVjaWFsID0gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxz
KSA6ICIwIjsKICAgICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgJHNwZWNpYWwpOwogCi0g
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRE9NSklUIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAiZG9tSklU
R2V0dGVyU2V0dGVyRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpKTsKKyAgICAgICAgICAg
IGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAiZG9tSklUR2V0dGVyU2V0dGVyRm9yIiAuICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmli
dXRlLT5uYW1lKSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaGFzaFZhbHVlMiwgIjAiKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJp
YnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CkBAIC0y
NzI2LDcgKzI3MjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07Cisg
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25kaXRpb25hbH07CiAgICAgICAgICAgICAkY29uZGl0aW9uYWxzeyRuYW1lfSA9ICRj
b25kaXRpb25hbCBpZiAkY29uZGl0aW9uYWw7CiAKICAgICAgICAgICAgICRoYXNoU2l6ZSsrOwpA
QCAtMjczNSw3ICsyNzMzLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
Zm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAg
ICAgICAgbmV4dCB1bmxlc3MgKCRmdW5jdGlvbi0+aXNTdGF0aWMpOwogICAgICAgICAgICAgbmV4
dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZElu
ZGV4fSA+IDE7Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lOworICAgICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPm5hbWU7CiAgICAgICAgICAg
ICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCiAgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1l
ID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CkBA
IC0yNzQ2LDcgKzI3NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAg
ICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFj
ZSwgJGZ1bmN0aW9uKSk7CiAKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CisgICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWwgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nv
bmRpdGlvbmFsfTsKICAgICAgICAgICAgICRjb25kaXRpb25hbHN7JG5hbWV9ID0gJGNvbmRpdGlv
bmFsIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgJGhhc2hTaXplKys7CkBAIC0yODIx
LDEyICsyODE5LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15IEBy
dW50aW1lRW5hYmxlZFByb3BlcnRpZXMgPSBAcnVudGltZUVuYWJsZWRGdW5jdGlvbnM7CiAgICAg
ICAgIHB1c2goQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcywgQHJ1bnRpbWVFbmFibGVkQXR0cmli
dXRlcyk7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUgKEBydW50aW1l
RW5hYmxlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIG15ICRzaWduYXR1cmUgPSAkZnVuY3Rp
b25PckF0dHJpYnV0ZS0+c2lnbmF0dXJlOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJHNpZ25hdHVy
ZSk7CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb25PckF0dHJpYnV0ZSk7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYg
JGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIpOwotICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9
IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJHNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBt
eSAkbmFtZSA9ICRzaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0
aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVuY3Rpb25PckF0dHJpYnV0ZSk7
CisgICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbk9yQXR0cmlidXRlLT5uYW1lOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCEke2VuYWJsZV9mdW5jdGlvbn0o
KSkge1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihcIiRuYW1lXCIpKTtcbiIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIFZNOjpEZWxldGVQcm9w
ZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29u
ZmlndXJhYmxlKTtcbiIpOwpAQCAtMjgzNywxMSArMjgzNCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogCiAgICAgICAgIG15ICRmaXJzdFByaXZhdGVGdW5jdGlvbiA9IDE7CiAgICAg
ICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAg
ICAgICAgICAgIG5leHQgdW5sZXNzICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9KTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICgk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSk7CiAgICAg
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZNQ2xpZW50RGF0YSYgY2xpZW50RGF0
YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpO1xuIikgaWYg
JGZpcnN0UHJpdmF0ZUZ1bmN0aW9uOwogICAgICAgICAgICAgJGZpcnN0UHJpdmF0ZUZ1bmN0aW9u
ID0gMDsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwg
Y2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUg
LiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwg
MCwgU3RyaW5nKCksICIgLiBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGZ1bmN0aW9uKSAuICIpLCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCBjbGllbnREYXRhLmJ1aWx0aW5O
YW1lcygpLiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksICIgLiBHZXRGdW5jdGlvbk5h
bWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSAuICIpLCBSZWFkT25seSB8IERv
bnRFbnVtKTtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPml0ZXJh
YmxlKSB7CkBAIC0yOTE0LDEzICsyOTExLDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgIH0KICAgICAgICAgIyBTdXBwb3J0IGZvciBSdW50aW1lRW5hYmxlZCBhdHRyaWJ1
dGVzIG9uIGdsb2JhbCBvYmplY3RzLgogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7
JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX07
CisgICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntFbmFibGVkQXRSdW50aW1lfTsKIAogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIpOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlm
ICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBH
ZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7Ci0gICAg
ICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsK
KyAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rp
b25OYW1lKCRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0
cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7
ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRB
dHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwog
ICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAibnVsbHB0
ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRy
aWJ1dGUpOwpAQCAtMjkzMywxMSArMjkzMCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICMgU3VwcG9ydCBQcml2YXRlSWRlbnRpZmllciBhdHRyaWJ1dGVzIG9uIGds
b2JhbCBvYmplY3RzCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNl
LT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn07CisgICAgICAg
ICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRl
SWRlbnRpZmllcn07CiAKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlND
bGllbnREYXRhLmgiKTsKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSk7Ci0gICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOworICAgICAgICAgICAg
bXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgbXkgJGdl
dHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0yOTQ3LDIxICsyOTQ0
LDIxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgIyBTdXBwb3J0IGZv
ciBSdW50aW1lRW5hYmxlZCBvcGVyYXRpb25zIG9uIGdsb2JhbCBvYmplY3RzLgogICAgICAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAg
ICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RW5hYmxlZEF0UnVudGltZX07CisgICAgICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9OwogICAgICAgICAgICAgbmV4
dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZElu
ZGV4fSA+IDE7CiAKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmgiKTsKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJl
KTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5H
ZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwotICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFi
bGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwotICAgICAgICAgICAgbXkgJGZ1
bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkg
JGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9u
KTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPm5hbWU7CiAgICAg
ICAgICAgICBteSAkaW1wbGVtZW50YXRpb25GdW5jdGlvbiA9IEdldEZ1bmN0aW9uTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
TGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIG15ICRq
c0F0dHJpYnV0ZXMgPSBDb21wdXRlRnVuY3Rpb25TcGVjaWFsKCRpbnRlcmZhY2UsICRmdW5jdGlv
bik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFibGVfZnVu
Y3Rpb259KCkpXG4iKTsKIAogICAgICAgICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICJ2bS5wcm9w
ZXJ0eU5hbWVzLT4kZnVuY3Rpb25OYW1lIjsKLSAgICAgICAgICAgICRwcm9wZXJ0eU5hbWUgPSAi
c3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVz
KCkuIiAuICRmdW5jdGlvbk5hbWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfTsKKyAgICAgICAg
ICAgICRwcm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbk5hbWUgLiAiUHJpdmF0ZU5hbWUo
KSIgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn07
CiAgICAgICAgICAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKSkgewog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3RCdWls
dGluRnVuY3Rpb24odm0sIHRoaXMsICRwcm9wZXJ0eU5hbWUsICRpbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSgkanNBdHRyaWJ1dGVzKSk7XG4iKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMDMyLDcgKzMwMjksNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgewog
ICAgICAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB0aGlzIHdvcmsgZm9yIGFsbCBzdHJpbmcg
dHlwZXM/Ci0gICAgICAgICAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnNpZ25h
dHVyZS0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICAgICAgICAgIGlmICgk
aW5kZXhlZEdldHRlckZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJET01TdHJpbmciKSB7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChMSUtFTFkoaW5kZXgg
PD0gTUFYX0FSUkFZX0lOREVYKSkge1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKExJS0VMWShpbmRl
eCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkpIHtcbiIpOwpAQCAtMzExMCwyMCAr
MzEwNywyMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgIG5l
eHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgICAg
IG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwotICAgICAgICAgICAgbXkg
JHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAgICAgICBteSAkbmFt
ZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CisgICAgICAgICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUt
PnR5cGU7CiAgICAgICAgICAgICBteSAkZ2V0RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0
dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAg
IG15ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3Qo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFz
fSB8fCAkbmFtZSk7Ci0gICAgICAgICAgICBteSAkZ2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b24gPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0dldHRlck1h
eVRocm93TGVnYWN5RXhjZXB0aW9ufTsKKyAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rp
b25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJG5hbWUpOworICAgICAgICAgICAgbXkgJGdl
dHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57R2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb259OwogCiAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDEgaWYgJGdldHRlck1heVRocm93TGVnYWN5
RXhjZXB0aW9uOwogCi0gICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5z
aWduYXR1cmUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2F0dHJpYnV0ZUNvbmRpdGlvbmFs
U3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nOwogCiAgICAgICAgICAg
ICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVj
dG9yVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICBteSAkdGVtcGxhdGVQYXJhbWV0ZXJz
ID0gIiR7Z2V0RnVuY3Rpb25OYW1lfUdldHRlciI7Ci0gICAgICAgICAgICAgICAgaWYgKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVuaWVudFRoaXN9KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlbmll
bnRUaGlzfSkgewogICAgICAgICAgICAgICAgICAgICAkdGVtcGxhdGVQYXJhbWV0ZXJzIC49ICIs
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSI7CiAgICAgICAgICAgICAgICAg
fSBlbHNpZiAoSXNSZXR1cm5pbmdQcm9taXNlKCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAg
ICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6
OlJlamVjdFByb21pc2UiOwpAQCAtMzE1NCwxNyArMzE1MSwxNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTtcbiIpOwogCiAgICAgICAgICAgICBteSBAYXJndW1lbnRzID0gKCk7Ci0gICAg
ICAgICAgICBpZiAoJGdldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uICYmICFIYXNDdXN0b21H
ZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CisgICAg
ICAgICAgICBpZiAoJGdldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uICYmICFIYXNDdXN0b21H
ZXR0ZXIoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAgICAgICAgICAg
IHB1c2goQGFyZ3VtZW50cywgImVjIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgIyBHbG9iYWwgY29uc3RydWN0b3JzIGNhbiBiZSBkaXNhYmxlZCBhdCBydW50aW1l
LgogICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkdHlw
ZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgeworICAgICAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewogICAg
ICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogICAgICAgICAg
ICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIpOwotICAgICAgICAgICAg
ICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRob2ROYW1lKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ30pIC4gIkVuYWJs
ZWQiOworICAgICAgICAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRob2RO
YW1lKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSAu
ICJFbmFibGVkIjsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0LndyYXBwZWQoKS5mcmFtZSgpKSlcbiIpOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
U2V0dGluZ3MmIHNldHRpbmdzID0gdGhpc09iamVjdC53cmFwcGVkKCkuZnJhbWUoKS0+c2V0dGlu
Z3MoKTtcbiIpOwpAQCAtMzE3MywxMSArMzE3MCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgJG5l
ZWRzVmlzaXRDaGlsZHJlbiA9IDEgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9OworICAgICAgICAgICAgJG5lZWRzVmlzaXRDaGls
ZHJlbiA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmli
dXRlfTsKIAogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NoZWNrU2VjdXJpdHl9ICYmCi0gICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJgotICAgICAgICAg
ICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90
Q2hlY2tTZWN1cml0eU9uR2V0dGVyfSkgeworICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmCisgICAgICAgICAgICAg
ICAgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9u
R2V0dGVyfSkgewogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2lu
ZG93IikgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
IUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIHRo
aXNPYmplY3Qud3JhcHBlZCgpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKVxuIik7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKQEAgLTMxODYsNyArMzE4Myw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vbmRldGVybWluaXN0
aWN9KSB7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Tm9uZGV0ZXJtaW5pc3RpY30pIHsKICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
TWVtb2l6ZWRET01SZXN1bHQuaCIsICJXRUJfUkVQTEFZIik7CiAgICAgICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIjxyZXBsYXkvSW5wdXRDdXJzb3IuaD4iLCAiV0VCX1JFUExBWSIpOwog
ICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL05ldmVyRGVzdHJveWVkLmg+
IiwgIldFQl9SRVBMQVkiKTsKQEAgLTMyMDIsNyArMzE5OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGN1
cnNvci5pc0NhcHR1cmluZygpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgJG1lbW9pemVkVHlwZSBtZW1vaXplZFJlc3VsdCA9IHRoaXNPYmplY3Qu
d3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVu
dHMpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PCRtZW1vaXplZFR5cGU+Pihi
aW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsICRleGNlcHRpb25Db2Rl
KTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAidGhpc09iamVj
dCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0
dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgIm1lbW9pemVkUmVzdWx0IiwgInRoaXNPYmplY3QiKSAu
ICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgdGhyb3dTY29wZSwgZWMpO1xuIikgaWYgJGdldHRlck1heVRo
cm93TGVnYWN5RXhjZXB0aW9uOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgfVxuIik7CkBAIC0zMjEyLDcgKzMyMDksNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBN
ZW1vaXplZERPTVJlc3VsdEJhc2UqIGlucHV0ID0gY3Vyc29yLmZldGNoSW5wdXQ8TWVtb2l6ZWRE
T01SZXN1bHRCYXNlPigpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC0+Y29udmVydFRvPCRtZW1vaXplZFR5cGU+KG1l
bW9pemVkUmVzdWx0KSkge1xuIik7CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogdGhlIGdlbmVy
YXRlZCBjb2RlIHNob3VsZCByZXBvcnQgYW4gZXJyb3IgaWYgYW4gaW5wdXQgY2Fubm90IGJlIGZl
dGNoZWQgb3IgY29udmVydGVkLgotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZl
cmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwgIm1lbW9pemVkUmVz
dWx0IiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1
ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1
bHQiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgdGhyb3dTY29wZSwg
aW5wdXQtPmV4Y2VwdGlvbkNvZGUoKSk7XG4iKSBpZiAkZ2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb247CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIH1cbiIpOwpAQCAtMzIyMCwxNyArMzIxNywxNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsK
ICAgICAgICAgICAgIH0gIyBhdHRyaWJ1dGUgTm9uZGV0ZXJtaW5pc3RpYwogCi0gICAgICAgICAg
ICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKSkgeworICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIHRoaXNPYmplY3QuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoc3RhdGUpO1xu
Iik7CiAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5kbGVyIikg
ewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV2ZW50TmFtZXMuaCJ9ID0gMTsKLSAg
ICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhhbmRsZXJ9ID8gIndpbmRvd0V2ZW50SGFuZGxlckF0
dHJpYnV0ZSIKLSAgICAgICAgICAgICAgICAgICAgOiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0RvY3VtZW50RXZlbnRIYW5kbGVyfSA/ICJkb2N1bWVudEV2ZW50
SGFuZGxlckF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57V2luZG93RXZlbnRIYW5kbGVyfSA/ICJ3aW5kb3dFdmVu
dEhhbmRsZXJBdHRyaWJ1dGUiCisgICAgICAgICAgICAgICAgICAgIDogJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RG9jdW1lbnRFdmVudEhhbmRsZXJ9ID8gImRvY3VtZW50RXZlbnRI
YW5kbGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICA6ICJldmVudEhhbmRsZXJBdHRy
aWJ1dGUiOwogICAgICAgICAgICAgICAgIG15ICRldmVudE5hbWUgPSBFdmVudEhhbmRsZXJBdHRy
aWJ1dGVFdmVudE5hbWUoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuICRnZXR0ZXIodGhpc09iamVjdC53cmFwcGVkKCksICRldmVudE5h
bWUpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1
Y3RvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKSkgewotICAgICAgICAgICAgICAg
IG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUtPm5hbWU7
CisgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUo
JGF0dHJpYnV0ZS0+dHlwZSkpIHsKKyAgICAgICAgICAgICAgICBteSAkY29uc3RydWN0b3JUeXBl
ID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZTsKICAgICAgICAgICAgICAgICAkY29uc3RydWN0b3JU
eXBlID1+IHMvQ29uc3RydWN0b3IkLy87CiAgICAgICAgICAgICAgICAgIyBXaGVuIENvbnN0cnVj
dG9yIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IERPTVdpbmRvdy5pZGwsIGl0J3MgY29ycmVjdCB0byBw
YXNzIHRoaXNPYmplY3QgYXMgdGhlIGdsb2JhbCBvYmplY3QKICAgICAgICAgICAgICAgICAjIFdo
ZW4gSlNET01XcmFwcGVycyBoYXZlIGEgYmFjay1wb2ludGVyIHRvIHRoZSBnbG9iYWxPYmplY3Qg
d2UgY2FuIHBhc3MgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KCkKQEAgLTMyMzksMzMgKzMyMzYs
MzMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgJGNv
bnN0cnVjdG9yVHlwZSA9fiBzL05hbWVkJC8vOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldCR7
bmFtZWR9Q29uc3RydWN0b3Ioc3RhdGUudm0oKSwgJnRoaXNPYmplY3QpO1xuIik7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUg
LiAiOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS52bSgpLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgp
KTtcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzaWYgKCEkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0dldHRlck1heVRocm93TGVnYWN5
RXhjZXB0aW9ufSkgeworICAgICAgICAgICAgfSBlbHNpZiAoISRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0dldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9ufSkgewogICAgICAgICAg
ICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKLSAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hl
ZEF0dHJpYnV0ZX0pIHsKICAgICAgICAgICAgICAgICAgICAgJGNhY2hlSW5kZXggPSAkY3VycmVu
dENhY2hlZEF0dHJpYnV0ZTsKICAgICAgICAgICAgICAgICAgICAgJGN1cnJlbnRDYWNoZWRBdHRy
aWJ1dGUrKzsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSAuICIuZ2V0KCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1fIiAu
ICRhdHRyaWJ1dGUtPm5hbWUgLiAiLmdldCgpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4iKTsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBteSBAY2FsbFdpdGhBcmdzID0gR2VuZXJh
dGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiKTsK
KyAgICAgICAgICAgICAgICBteSBAY2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5n
UmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxA
aW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIik7CiAKICAgICAgICAgICAgICAgICBpZiAoJHN2
Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJl
bmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2UsICJ0aGlzT2JqZWN0Lndy
YXBwZWQoKS4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRo
QXJncykgLiAiKSIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pT
VmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgInRoaXNPYmpl
Y3Qud3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBAY2Fs
bFdpdGhBcmdzKSAuICIpIiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVy
dHlUeXBlJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCkucHJvcGVydHlSZWZlcmVuY2UoKTtc
biIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlU
eXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9
ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlLCAiaW1wbCIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9
ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVy
ZmFjZSwgImltcGwiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwgImltcGwuJGltcGxHZXR0ZXJGdW5j
dGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAidGhpc09iamVj
dCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2Vz
KCRhdHRyaWJ1dGUsIDAsICRpbnRlcmZhY2UsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1l
KCIgLiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIpIiwgInRoaXNPYmplY3QiKSAuICI7
XG4iKTsKIAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNv
ZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VO
YW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVk
Qnl9OworICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OwogICAgICAgICAgICAgICAgICAg
ICBpZiAoJGltcGxlbWVudGVkQnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5j
bHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbk5h
bWV9IjsKQEAgLTMyNzcsNyArMzI3NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1
bWVudHMsIEBjYWxsV2l0aEFyZ3MpOwotICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBlID0g
TmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAu
ICIpIiwgInRoaXNPYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5h
dGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAi
JHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAidGhpc09i
amVjdCIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0
aWM7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdBbmltYXRl
ZFR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvIG9iaiA9ICRqc1R5cGU7XG4iKTsKQEAgLTMyODcsMTggKzMyODQsMTggQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRo
aXNPYmplY3QubV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIi5zZXQoc3RhdGUu
dm0oKSwgJnRoaXNPYmplY3QsIHJlc3VsdCk7XG4iKSBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX07CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC5tXyIgLiAkYXR0cmlidXRlLT5uYW1l
IC4gIi5zZXQoc3RhdGUudm0oKSwgJnRoaXNPYmplY3QsIHJlc3VsdCk7XG4iKSBpZiAkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9OwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiByZXN1bHQ7XG4iKTsKIAogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVy
YXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIiwg
MCkpOworICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0
aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0
aH0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIiwgMCkpOwogCiAgICAgICAgICAgICAg
ICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5
cGUgaW1wbCgqdGhpc09iamVjdC53cmFwcGVkKCkpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2Us
ICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMp
IC4gIikiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVV
c2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgImltcGwuJGltcGxHZXR0
ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJ0aGlzT2Jq
ZWN0IikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3Jh
cHBlZCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0
cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2UsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rp
b25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAidGhpc09iamVjdCIpIC4g
IjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1Zh
bHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0
ZSwgMCwgJGludGVyZmFjZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4o
IiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CiAgICAgICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0
RE9NRXhjZXB0aW9uKCZzdGF0ZSwgdGhyb3dTY29wZSwgZWMpO1xuIik7CkBAIC0zMzA4LDE1ICsz
MzA1LDE1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAifVxuXG4iKTsKIAotICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CisgICAgICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9KSB7CiAgICAgICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9OZXZlckRlc3Ryb3llZC5oPiJ9ID0gMTsKICAg
ICAgICAgICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7
Ci0gICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWU7Ci0gICAgICAgICAgICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50ZXJmYWNl
TmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
bmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5u
YW1lOworICAgICAgICAgICAgICAgIG15ICRnZW5lcmF0b3JOYW1lID0gJGludGVyZmFjZU5hbWUg
LiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKTsKICAgICAgICAg
ICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGdlbmVyYXRvck5hbWUgLiAiRE9NSklUIjsK
ICAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50
ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkg
JHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1
dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKLSAg
ICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJl
c3VsdFR5cGVGaWx0ZXIoJGF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9tSklUQ2xhc3NOYW1lKClcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlcigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFtZX06OmluZm8oKSwgJHJlc3Vs
dFR5cGUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwpA
QCAtMzQyNiwyMSArMzQyMywyMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAgICAgIG5leHQgaWYgSXNK
U0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgICAgIG15ICRuYW1l
ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwotICAgICAgICAgICAgbXkgJHR5cGUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRy
aWJ1dGUtPm5hbWU7CisgICAgICAgICAgICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGU7CiAg
ICAgICAgICAgICBteSAkcHV0RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIG15ICRpbXBs
U2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG5hbWUpOwot
ICAgICAgICAgICAgbXkgJHNldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbn07CisgICAgICAgICAgICBteSAkc2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24g
PSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbn07CiAKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9
ID0gMSBpZiAkc2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAKLSAgICAgICAgICAgIG15
ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNv
bmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CisgICAgICAgICAgICBteSAk
YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2lmICR7YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkYXR0cmlidXRlQ29u
ZGl0aW9uYWxTdHJpbmc7CiAKICAgICAgICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMp
IHsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRnVuY3Rpb24gPSAiJHtwdXRGdW5jdGlvbk5h
bWV9RnVuY3Rpb24iOwogICAgICAgICAgICAgICAgIG15ICR0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAk
c2V0dGVyRnVuY3Rpb247Ci0gICAgICAgICAgICAgICAgJHRlbXBsYXRlUGFyYW1ldGVycyAuPSAi
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmV0dXJuRWFybHkiIGlmICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVuaWVudFRoaXN9OworICAgICAgICAgICAg
ICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJl
dHVybkVhcmx5IiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhp
c307CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUg
Ym9vbCAke3NldHRlckZ1bmN0aW9ufShFeGVjU3RhdGUmLCAke2NsYXNzTmFtZX0mLCBKU1ZhbHVl
LCBUaHJvd1Njb3BlJik7XG5cbiIpOwogCkBAIC0zNDYyLDE0ICszNDU5LDE0IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpO1xuIik7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25zfSkgeworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25zfSkgewogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpXG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIn0gPSAxOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hl
Y2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPblNldHRlcn0pIHsKKyAgICAgICAgICAg
IGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSAmJiAh
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJiAh
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0
ZXJ9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ci
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCZzdGF0ZSwgdGhpc09i
amVjdC53cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpXG4iKTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtMzQ3OCw3ICszNDc1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGZh
bHNlO1xuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChIYXNDdXN0b21TZXR0
ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CisgICAgICAg
ICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcykp
IHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0LnNl
dCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKHN0YXRlLCB2YWx1ZSk7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICAg
ICAgfSBlbHNpZiAoJHR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciIpIHsKQEAgLTM0OTAsOCAr
MzQ4Nyw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3Qud3JhcHBlZCgpLnNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNFcnJvckhhbmRsZXIoJnN0YXRlLCB2
YWx1ZSwgJnRoaXNPYmplY3QpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0ZW5lci5oIn0gPSAxOwot
ICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhhbmRsZXJ9ID8gInNldFdpbmRvd0V2ZW50
SGFuZGxlckF0dHJpYnV0ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgIDogJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb2N1bWVudEV2ZW50SGFuZGxlcn0gPyAi
c2V0RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUiCisgICAgICAgICAgICAgICAgICAgIG15
ICRzZXR0ZXIgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhh
bmRsZXJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAg
ICAgICAgICAgIDogJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9jdW1lbnRFdmVu
dEhhbmRsZXJ9ID8gInNldERvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlIgogICAgICAgICAg
ICAgICAgICAgICAgICAgOiAic2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHNldHRlcihzdGF0ZSwgdGhpc09iamVj
dCwgdGhpc09iamVjdC53cmFwcGVkKCksICRldmVudE5hbWUsIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KQEAgLTM1MDMsMTEgKzM1MDAsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAjIFdlIGRvIG5vdCBnZW5lcmF0ZSB0aGUgaGVhZGVyIGZp
bGUgZm9yIE5hbWVkQ29uc3RydWN0b3Igb2YgY2xhc3MgWFhYWCwKICAgICAgICAgICAgICAgICAj
IHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1lZENvbnN0cnVjdG9yIGRlY2xhcmF0aW9uIGludG8g
dGhlIGhlYWRlciBmaWxlIG9mIGNsYXNzIFhYWFguCiAgICAgICAgICAgICAgICAgaWYgKCRjb25z
dHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3RvclR5cGUgIX4gL05hbWVkJC8pIHsK
LSAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3Rv
clR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJK
UyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0
b3IuXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
dGhpc09iamVjdC5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygm
c3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwotICAgICAgICAgICAgfSBlbHNpZiAoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXBsYWNlYWJsZX0pIHsK
KyAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Jl
cGxhY2VhYmxlfSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIC8v
IFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3BlcnR5LlxuIik7CiAgICAgICAgICAgICAgICAgaWYg
KEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSkgewog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVwbGFj
ZVN0YXRpY1Byb3BlcnR5U2xvdChzdGF0ZS52bSgpLCAmdGhpc09iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwpAQCAtMzUxNiwxMiAr
MzUxMywxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5p
c1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICBteSAkcHV0Rm9yd2FyZHMgPSAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1dEZvcndhcmRzfTsKKyAgICAg
ICAgICAgICAgICAgICAgbXkgJHB1dEZvcndhcmRzID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57UHV0Rm9yd2FyZHN9OwogICAgICAgICAgICAgICAgICAgICBpZiAoJHB1dEZvcndh
cmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9uTmFt
ZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJG5hbWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+
V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFz
fSB8fCAkbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkZm9yd2FyZGVkQXR0cmli
dXRlID0gJGNvZGVHZW5lcmF0b3ItPkdldEF0dHJpYnV0ZUZyb21JbnRlcmZhY2UoJGludGVyZmFj
ZSwgJHR5cGUtPm5hbWUsICRwdXRGb3J3YXJkcyk7CiAKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICgkZm9yd2FyZGVkQXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NFUmVhY3Rpb25zfSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRmb3J3YXJkZWRB
dHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25zfSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShDVVNUT01f
RUxFTUVOVFMpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjaztcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmXG4iKTsKQEAgLTM1MzksNyArMzUzNiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0KCk7XG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUgPSAkZm9y
d2FyZGVkQXR0cmlidXRlOwotICAgICAgICAgICAgICAgICAgICAgICAgJHR5cGUgPSAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICRh
dHRyaWJ1dGUtPnR5cGU7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzU0NywxMiAr
MzU0NCwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKSBpZiAkc2V0
dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAKLSAgICAgICAgICAgICAgICBteSAkc2hvdWxk
UGFzc0J5UmVmZXJlbmNlID0gU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXR0cmlidXRl
LT5zaWduYXR1cmUsICRpbnRlcmZhY2UpOworICAgICAgICAgICAgICAgIG15ICRzaG91bGRQYXNz
QnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhdHRyaWJ1dGUsICRp
bnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93
RXhjZXB0aW9uKSA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlLT5zaWdu
YXR1cmUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q29uZGl0aW9uYWx9LCAiJnN0YXRlIiwgInN0YXRlIiwgInRoaXNPYmplY3QiKTsKKyAgICAg
ICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dFeGNlcHRpb24pID0gSlNWYWx1
ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSwgIiZzdGF0ZSIsICJzdGF0ZSIsICJ0aGlz
T2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgaWYgKCEkc2hvdWxkUGFzc0J5UmVmZXJlbmNlICYm
ICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkgfHwgJGNvZGVHZW5lcmF0b3It
PklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSkgewogICAgICAgICAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZSkgLiAiIG5hdGl2ZVZhbHVlID0gbnVsbHB0cjtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAiIC4gR2V0
TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlLT50eXBlKSAuICIgbmF0aXZlVmFsdWUg
PSBudWxscHRyO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkge1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBuYXRpdmVWYWx1ZSA9ICRuYXRpdmVW
YWx1ZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7XG4iKSBpZiAkbWF5VGhy
b3dFeGNlcHRpb247CkBAIC0zNTkzLDcgKzM1OTAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gInBvZElt
cGwuc2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUobmF0aXZlVmFsdWUiOwogICAgICAgICAgICAg
ICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsIGVjIiBpZiAkc2V0dGVyTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcg
Lj0gIikiOwotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3Bh
Z2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0V4
Y2VwdGlvbn07CisgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJv
cGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiAk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn07
CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZnVuY3Rp
b25TdHJpbmc7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGVjKTtcbiIpIGlmICRz
ZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAt
MzYxNiw5ICszNjEzLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSA/ICIqbmF0aXZlVmFsdWUiIDogIldURk1vdmUobmF0
aXZlVmFsdWUpIik7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
bXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50
ZWRCeSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9Owog
ICAgICAgICAgICAgICAgICAgICBpZiAoJGltcGxlbWVudGVkQnkpIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5o
IiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGF0dHJp
YnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0g
IldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgICAg
ICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmlzU3RhdGljKSB7CkBAIC0zNjI3LDEzICsz
NjI0LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2Vu
ZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1NldHRlckNhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImZhbHNlIikp
OwotICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdp
dGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2Vz
KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlckNhbGxXaXRofSwgXEBpbXBs
Q29udGVudCwgImZhbHNlIikpOworICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVu
dHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCBcQGltcGxDb250ZW50LCAiZmFsc2UiKSk7CiAKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBpZiAkc2V0dGVyTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb247CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5n
ID0gIiRmdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7Ci0gICAg
ICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oc3Rh
dGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyTWF5VGhyb3dFeGNlcHRpb259OworICAgICAg
ICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRl
LCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn07CiAKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGZ1bmN0aW9uU3RyaW5nO1xuIik7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbigmc3Rh
dGUsIHRocm93U2NvcGUsIGVjKTtcbiIpIGlmICRzZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlv
bjsKQEAgLTM2ODMsNyArMzY4MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rp
b24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbmV4dCBpZiBJc0pT
QnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwotICAgICAgICAgICAgaWYgKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKKyAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJp
Z2h0fSkgewogICAgICAgICAgICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9y
U291cmNlRmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7
CkBAIC0zNjkzLDE4ICszNjkwLDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBteSAkaXNDdXN0b20gPSBIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgICAgICBteSAkaXNDdXN0b20gPSBIYXND
dXN0b21NZXRob2QoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMpOwogICAgICAgICAgICAg
bXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5jdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24t
PntvdmVybG9hZHN9fSA+IDE7CiAKLSAgICAgICAgICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbn07CisgICAgICAgICAgICBteSAkbWF5VGhyb3dMZWdhY3lFeGNlcHRp
b24gPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93TGVnYWN5RXhjZXB0
aW9ufTsKIAogICAgICAgICAgICAgbmV4dCBpZiAkaXNDdXN0b20gJiYgJGlzT3ZlcmxvYWRlZCAm
JiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CiAKLSAgICAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzRm9ySURMVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSkgdW5sZXNzICRp
c0N1c3RvbSBvciBJc1JldHVybmluZ1Byb21pc2UoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkZnVuY3Rpb24tPnR5cGUpIHVubGVzcyAkaXNDdXN0
b20gb3IgSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbik7CiAKICAgICAgICAgICAgIG15ICRm
dW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1
bmN0aW9uKTsKIAotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKKyAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbCA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9OwogICAgICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgewogICAgICAgICAgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpOwpAQCAtMzcx
OCw3ICszNzE1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAkZnVuY3Rpb25SZXR1cm4gPSAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSI7CiAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFz
fSB8fCAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZSk7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkZnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CiAKICAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJKU0RPTVByb21pc2UuaCIpIGlmIElzUmV0dXJuaW5nUHJvbWlzZSgkZnVuY3Rpb24p
OwogCkBAIC0zNzUwLDcgKzM3NDcsNyBAQCBFTkQKIAogICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q0VSZWFjdGlvbnN9KSB7CisgICAgICAg
ICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDRVJlYWN0aW9uc30pIHsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUoQ1VTVE9NX0VM
RU1FTlRTKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3Vz
dG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7XG4iKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIik7CkBAIC0zNzc0
LDEwICszNzcxLDEwIEBAIEVORAogICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIsICRz
dmdQcm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFtZSA9ICRmdW5j
dGlvbi0+bmFtZTsKICAgICAgICAgICAgICAgICBpZiAoSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5j
dGlvbikgJiYgISRpc0N1c3RvbSkgewogICAgICAgICAgICAgICAgICAgICBteSAkdGVtcGxhdGVQ
YXJhbWV0ZXJzID0gIiR7ZnVuY3Rpb25OYW1lfUNhbGxlciI7Ci0gICAgICAgICAgICAgICAgICAg
ICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2Vy
dCIgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRl
SWRlbnRpZmllcn0gYW5kIG5vdCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UHVibGljSWRlbnRpZmllcn0pOworICAgICAgICAgICAgICAgICAgICAkdGVtcGxhdGVQ
YXJhbWV0ZXJzIC49ICIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQiIGlmICgkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0pOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjwkY2xhc3NOYW1lPjo6Y2FsbFByb21pc2VPcGVyYXRpb248JHt0ZW1wbGF0ZVBhcmFtZXRlcnN9
PihzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSwgXCIke21ldGhvZE5hbWV9XCIpO1xuIik7CiAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKQEAgLTM3ODUsNyArMzc4Miw3IEBAIEVO
RAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICRjbGFz
c1BhcmFtZXRlclR5cGUgPSAkY2xhc3NOYW1lIGVxICJKU0V2ZW50VGFyZ2V0IiA/ICJKU0V2ZW50
VGFyZ2V0V3JhcHBlcioiIDogIiR7Y2xhc3NOYW1lfSoiOwogICAgICAgICAgICAgICAgICAgICBt
eSAkdGVtcGxhdGVQYXJhbWV0ZXJzID0gIiR7ZnVuY3Rpb25OYW1lfUNhbGxlciI7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KSB7CisgICAgICAgICAgICAgICAgICAg
IGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBh
bmQgbm90ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
aWYgKElzUmV0dXJuaW5nUHJvbWlzZSgkZnVuY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAjIEZJWE1FOiBXZSBuZWVkIHRoaXMgc3BlY2lmaWMgaGFuZGxpbmcgZm9yIGN1c3RvbSBw
cm9taXNlLXJldHVybmluZyBmdW5jdGlvbnMuCkBAIC0zODAzLDcgKzM4MDAsNyBAQCBFTkQKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc3RhdGUp
O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpO1xuIik7CiAKLSAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gYW5kICEkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSkgeworICAgICAg
ICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDaGVja1NlY3Vy
aXR5fSBhbmQgISRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3Vy
aXR5fSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdp
bmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRl
LCBjYXN0ZWRUaGlzLT53cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpXG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM4NzAsOCArMzg2Nyw4IEBAIEVORAogICAgICAg
ICBpZiAoJG51bUNhY2hlZEF0dHJpYnV0ZXMgPiAwKSB7CiAgICAgICAgICAgICBmb3JlYWNoIChA
eyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZSA9ICRfOwotICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX0pIHsKLSAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fIiAu
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIpO1xuIik7CisgICAgICAgICAgICAgICAg
aWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX0pIHsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiKTtcbiIpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzg5Myw3ICszODkwLDcg
QEAgRU5ECiAKICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgewogICAgICAgICAjIEZJ
WE1FOiBTaG91bGQgdGhpcyB3b3JrIGZvciBhbGwgc3RyaW5nIHR5cGVzLgotICAgICAgICAkaW1w
bEluY2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT5zaWduYXR1
cmUtPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7CisgICAgICAgICRpbXBsSW5jbHVkZXN7IlVS
TC5oIn0gPSAxIGlmICRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0
cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9u
JC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAk
aW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
Ik5vZGUuaCJ9ID0gMTsKQEAgLTQwODYsMjEgKzQwODMsMjEgQEAgc3ViIEdlbmVyYXRlU2VyaWFs
aXplckZ1bmN0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwogCiAgICAgbXkgQHNl
cmlhbGl6ZWRBdHRyaWJ1dGVzID0gKCk7Ci0gICAgZm9yZWFjaCBteSAkYXR0cmlidXRlX25hbWUg
KEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICBteSAk
Zm91bmRfYXR0cmlidXRlID0gMDsKKyAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGVOYW1lIChAeyRp
bnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+YXR0cmlidXRlc30pIHsKKyAgICAgICAgbXkgJGZvdW5k
QXR0cmlidXRlID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZh
Y2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZV9uYW1lIGVxICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgeworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGVO
YW1lIGVxICRhdHRyaWJ1dGUtPm5hbWUpIHsKICAgICAgICAgICAgICAgICBwdXNoIEBzZXJpYWxp
emVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZTsKLSAgICAgICAgICAgICAgICAkZm91bmRfYXR0cmli
dXRlID0gMTsKKyAgICAgICAgICAgICAgICAkZm91bmRBdHRyaWJ1dGUgPSAxOwogICAgICAgICAg
ICAgICAgIGxhc3Q7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IGRpZSAiRmFpbGVkIHRvIGZpbmQgXCJzZXJpYWxpemVyXCIgYXR0cmlidXRlIFwiJGF0dHJpYnV0
ZV9uYW1lXCIgaW4gJGludGVyZmFjZU5hbWUiIGlmICEkZm91bmRfYXR0cmlidXRlOworICAgICAg
ICBkaWUgIkZhaWxlZCB0byBmaW5kIFwic2VyaWFsaXplclwiIGF0dHJpYnV0ZSBcIiRhdHRyaWJ1
dGVOYW1lXCIgaW4gJGludGVyZmFjZU5hbWUiIGlmICEkZm91bmRBdHRyaWJ1dGU7CiAgICAgfQog
CiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAc2VyaWFsaXplZEF0dHJpYnV0ZXMpIHsKLSAg
ICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15
ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKIAogICAgICAgICBteSAkZ2V0RnVuY3Rpb25OYW1l
ID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmli
dXRlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byAke25hbWV9VmFsdWUg
PSAke2dldEZ1bmN0aW9uTmFtZX1HZXR0ZXIoKnN0YXRlLCAqdGhpc09iamVjdCwgdGhyb3dTY29w
ZSk7XG4iKTsKQEAgLTQxNzgsNyArNDE3NSw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAgICAg
ICAgIHB1c2goQGNhbGxXaXRoQXJncywgIipkb2N1bWVudCIpOwogICAgIH0KICAgICBpZiAoJGZ1
bmN0aW9uIGFuZCAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2Fs
bFdpdGgsICJTY3JpcHRBcmd1bWVudHMiKSkgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMo
SW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoJHN0YXRlUG9pbnRlciwgIiAuIEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfSAuICIpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVu
dHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoJHN0YXRlUG9pbnRlciwgIiAuIEB7
JGZ1bmN0aW9uLT5hcmd1bWVudHN9IC4gIikpO1xuIik7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7
IjxpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmg+In0gPSAxOwogICAgICAgICAkaW1wbEluY2x1
ZGVzeyI8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4ifSA9IDE7CiAgICAgICAg
IHB1c2goQGNhbGxXaXRoQXJncywgIldURk1vdmUoc2NyaXB0QXJndW1lbnRzKSIpOwpAQCAtNDE5
NiwxNyArNDE5MywxNiBAQCBzdWIgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrCiAgICAgbXkg
JGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogCi0gICAgbXkg
JG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICBmb3Jl
YWNoIG15ICRwYXJhbSAocmV2ZXJzZShAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30pKSB7Ci0gICAg
ICAgIGlmICgkcGFyYW0tPmlzT3B0aW9uYWwgb3IgJHBhcmFtLT5pc1ZhcmlhZGljKSB7Ci0gICAg
ICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07CisgICAgbXkgJG51bU1hbmRhdG9yeUFyZ3Vt
ZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9OworICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50
IChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSkgeworICAgICAgICBpZiAoJGFyZ3Vt
ZW50LT5pc09wdGlvbmFsIG9yICRhcmd1bWVudC0+aXNWYXJpYWRpYykgeworICAgICAgICAgICAg
JG51bU1hbmRhdG9yeUFyZ3VtZW50cy0tOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bGFzdDsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoJG51bU1hbmRhdG9yeVBhcmFtcyA+PSAx
KQotICAgIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShz
dGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgJG51bU1hbmRhdG9yeVBhcmFtcykpXG4iKTsKKyAgICBp
ZiAoJG51bU1hbmRhdG9yeUFyZ3VtZW50cyA+PSAxKSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8ICRudW1NYW5k
YXRvcnlBcmd1bWVudHMpKVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOwogICAgIH0KIH0KQEAgLTQyNTksOSArNDI1NSw5
IEBAIHN1YiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbAogewogICAgIG15ICgk
ZnVuY3Rpb24pID0gQF87CiAKLSAgICByZXR1cm4gMCB1bmxlc3MgJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKKyAgICByZXR1cm4g
MCB1bmxlc3MgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlv
bn07CiAKLSAgICByZXR1cm4gMSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSAmJiAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAidm9pZCI7CisgICAgcmV0dXJuIDEgaWYg
JGZ1bmN0aW9uLT50eXBlICYmICRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9pZCI7CiAgICAg
cmV0dXJuIDEgaWYgSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbik7CiAKICAgICByZXR1cm4g
MDsKQEAgLTQyNzUsMTEgKzQyNzEsMTEgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAg
ICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3ItPkdldFZpc2libGVJ
bnRlcmZhY2VOYW1lKCRpbnRlcmZhY2UpOwogICAgIG15IEBhcmd1bWVudHM7CiAgICAgbXkgJGZ1
bmN0aW9uTmFtZTsKLSAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKLSAgICBteSAkbnVtUGFyYW1l
dGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICBteSAkaW1wbGVtZW50ZWRCeSA9
ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07CisgICAgbXkg
JG51bUFyZ3VtZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9OwogCiAgICAgaWYgKCRpbXBs
ZW1lbnRlZEJ5KSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9
LmgiLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9KTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0uaCIsICRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKICAgICAgICAgdW5z
aGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkZnVuY3Rpb24tPmlzU3RhdGljOwogICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9IGVsc2lmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7
CkBAIC00MjkxLDEwICs0Mjg3LDEwIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
IH0KIAogICAgIG15ICRxdW90ZWRGdW5jdGlvbk5hbWU7Ci0gICAgaWYgKCEkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3J9KSB7Ci0gICAgICAgIG15
ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgaWYgKCEkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yfSkgeworICAgICAgICBteSAkbmFtZSA9
ICRmdW5jdGlvbi0+bmFtZTsKICAgICAgICAgJHF1b3RlZEZ1bmN0aW9uTmFtZSA9ICJcIiRuYW1l
XCIiOwotICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1BvaW50
ZXJzKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0s
IFxAJG91dHB1dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIiwgJGZ1bmN0
aW9uKSk7CisgICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUG9p
bnRlcnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAJG91dHB1
dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIiwgJGZ1bmN0aW9uKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgJHF1b3RlZEZ1bmN0aW9uTmFtZSA9ICJudWxscHRyIjsKICAg
ICB9CkBAIC00MzAzLDM4ICs0Mjk5LDM4IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawog
ICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwogCiAgICAgbXkgJGFyZ3Vt
ZW50SW5kZXggPSAwOwotICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBh
cmFtZXRlcnN9KSB7Ci0gICAgICAgIG15ICR0eXBlID0gJHBhcmFtZXRlci0+dHlwZTsKKyAgICBm
b3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAg
bXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CiAKLSAgICAgICAgZGllICJPcHRpb25hbCBwYXJh
bWV0ZXJzIG9mIG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5cGVzIGFyZSBub3Qgc3VwcG9ydGVkIiBp
ZiAkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICEkdHlwZS0+aXNOdWxsYWJsZSAmJiAkY29kZUdl
bmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7Ci0gICAgICAgIGRpZSAiT3B0aW9uYWwgcGFy
YW1ldGVycyBwcmVjZWRpbmcgdmFyaWFkaWMgcGFyYW1ldGVycyBhcmUgbm90IHN1cHBvcnRlZCIg
aWYgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgJiYgIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfVsk
bnVtUGFyYW1ldGVycyAtIDFdLT5pc1ZhcmlhZGljKTsKKyAgICAgICAgZGllICJPcHRpb25hbCBh
cmd1bWVudHMgb2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQi
IGlmICRhcmd1bWVudC0+aXNPcHRpb25hbCAmJiAhJHR5cGUtPmlzTnVsbGFibGUgJiYgJGNvZGVH
ZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOworICAgICAgICBkaWUgIk9wdGlvbmFsIGFy
Z3VtZW50cyBwcmVjZWRpbmcgdmFyaWFkaWMgYXJndW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIiBp
ZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfVskbnVt
QXJndW1lbnRzIC0gMV0tPmlzVmFyaWFkaWMpOwogCi0gICAgICAgIGlmICgkcGFyYW1ldGVyLT5p
c09wdGlvbmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpKSB7Ci0gICAgICAgICAg
ICAjIEFzIHBlciBXZWIgSURMLCBvcHRpb25hbCBkaWN0aW9uYXJ5IHBhcmFtZXRlcnMgYXJlIGFs
d2F5cyBjb25zaWRlcmVkIHRvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIG9mIGFuIGVtcHR5IGRpY3Rp
b25hcnksIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgotICAgICAgICAgICAgJHBhcmFtZXRl
ci0+ZGVmYXVsdCgiW10iKSBpZiAkdHlwZS0+bmFtZSBlcSAiRGljdGlvbmFyeSIgb3IgJGNvZGVH
ZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUoJHR5cGUpOworICAgICAgICBpZiAoJGFyZ3VtZW50
LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVudC0+ZGVmYXVsdCkpIHsKKyAgICAgICAg
ICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgYXJndW1lbnRzIGFyZSBh
bHdheXMgY29uc2lkZXJlZCB0byBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBvZiBhbiBlbXB0eSBkaWN0
aW9uYXJ5LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4KKyAgICAgICAgICAgICRhcmd1bWVu
dC0+ZGVmYXVsdCgiW10iKSBpZiAkdHlwZS0+bmFtZSBlcSAiRGljdGlvbmFyeSIgb3IgJGNvZGVH
ZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUoJHR5cGUpOwogCi0gICAgICAgICAgICAjIFdlIHVz
ZSB1bmRlZmluZWQgYXMgZGVmYXVsdCB2YWx1ZSBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyBvZiB0
eXBlICdhbnknIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLgotICAgICAgICAgICAgJHBhcmFt
ZXRlci0+ZGVmYXVsdCgidW5kZWZpbmVkIikgaWYgJHR5cGUtPm5hbWUgZXEgImFueSI7CisgICAg
ICAgICAgICAjIFdlIHVzZSB1bmRlZmluZWQgYXMgZGVmYXVsdCB2YWx1ZSBmb3Igb3B0aW9uYWwg
YXJndW1lbnRzIG9mIHR5cGUgJ2FueScgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UuCisgICAg
ICAgICAgICAkYXJndW1lbnQtPmRlZmF1bHQoInVuZGVmaW5lZCIpIGlmICR0eXBlLT5uYW1lIGVx
ICJhbnkiOwogCi0gICAgICAgICAgICAjIFdlIHVzZSB0aGUgbnVsbCBzdHJpbmcgYXMgZGVmYXVs
dCB2YWx1ZSBmb3IgcGFyYW1ldGVycyBvZiB0eXBlIERPTVN0cmluZyB1bmxlc3Mgc3BlY2lmaWVk
IG90aGVyd2lzZS4KLSAgICAgICAgICAgICRwYXJhbWV0ZXItPmRlZmF1bHQoIm51bGwiKSBpZiAk
Y29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKKyAgICAgICAgICAgICMgV2UgdXNl
IHRoZSBudWxsIHN0cmluZyBhcyBkZWZhdWx0IHZhbHVlIGZvciBhcmd1bWVudHMgb2YgdHlwZSBE
T01TdHJpbmcgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UuCisgICAgICAgICAgICAkYXJndW1l
bnQtPmRlZmF1bHQoIm51bGwiKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBl
KTsKIAotICAgICAgICAgICAgIyBBcyBwZXIgV2ViIElETCwgcGFzc2luZyB1bmRlZmluZWQgZm9y
IGEgbnVsbGFibGUgcGFyYW1ldGVyIGlzIHRyZWF0ZWQgYXMgbnVsbC4gVGhlcmVmb3JlLCB1c2Ug
bnVsbCBhcwotICAgICAgICAgICAgIyBkZWZhdWx0IHZhbHVlIGZvciBudWxsYWJsZSBwYXJhbWV0
ZXJzIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgotICAgICAgICAgICAgJHBhcmFtZXRlci0+
ZGVmYXVsdCgibnVsbCIpIGlmICR0eXBlLT5pc051bGxhYmxlOworICAgICAgICAgICAgIyBBcyBw
ZXIgV2ViIElETCwgcGFzc2luZyB1bmRlZmluZWQgZm9yIGEgbnVsbGFibGUgYXJndW1lbnQgaXMg
dHJlYXRlZCBhcyBudWxsLiBUaGVyZWZvcmUsIHVzZSBudWxsIGFzCisgICAgICAgICAgICAjIGRl
ZmF1bHQgdmFsdWUgZm9yIG51bGxhYmxlIGFyZ3VtZW50cyB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNp
ZmllZC4KKyAgICAgICAgICAgICRhcmd1bWVudC0+ZGVmYXVsdCgibnVsbCIpIGlmICR0eXBlLT5p
c051bGxhYmxlOwogCi0gICAgICAgICAgICAjIEZvciBjYWxsYmFjayBwYXJhbWV0ZXJzLCB0aGUg
Z2VuZXJhdGVkIGJpbmRpbmdzIHRyZWF0IHVuZGVmaW5lZCBhcyBudWxsLCBzbyB1c2UgbnVsbCBh
cyBpbXBsaWNpdCBkZWZhdWx0IHZhbHVlLgotICAgICAgICAgICAgJHBhcmFtZXRlci0+ZGVmYXVs
dCgibnVsbCIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKTsK
KyAgICAgICAgICAgICMgRm9yIGNhbGxiYWNrIGFyZ3VtZW50cywgdGhlIGdlbmVyYXRlZCBiaW5k
aW5ncyB0cmVhdCB1bmRlZmluZWQgYXMgbnVsbCwgc28gdXNlIG51bGwgYXMgaW1wbGljaXQgZGVm
YXVsdCB2YWx1ZS4KKyAgICAgICAgICAgICRhcmd1bWVudC0+ZGVmYXVsdCgibnVsbCIpIGlmICRj
b2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKTsKICAgICAgICAgfQogCi0g
ICAgICAgIG15ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsKKyAgICAgICAgbXkgJG5hbWUgPSAk
YXJndW1lbnQtPm5hbWU7CiAgICAgICAgIG15ICR2YWx1ZSA9ICRuYW1lOwogCiAgICAgICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSkpIHsKICAgICAgICAg
ICAgIG15ICRjYWxsYmFja0NsYXNzTmFtZSA9IEdldENhbGxiYWNrQ2xhc3NOYW1lKCR0eXBlLT5u
YW1lKTsKICAgICAgICAgICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogICAgICAgICAg
ICAgJGltcGxJbmNsdWRlc3siJGNhbGxiYWNrQ2xhc3NOYW1lLmgifSA9IDE7Ci0gICAgICAgICAg
ICBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCkgeworICAgICAgICAgICAgaWYgKCRhcmd1bWVu
dC0+aXNPcHRpb25hbCkgewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBSZWZQdHI8JHR5cGVOYW1lPiAkbmFtZTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgkYXJndW1lbnRJbmRleCkuaXNV
bmRlZmluZWRPck51bGwoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJh
dG9yLT5Jc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKSkgewpAQCAtNDM1MSw3
ICs0MzQ3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGllICJDYWxsYmFja0ludGVyZmFjZSBk
b2VzIG5vdCBzdXBwb3J0IFZhcmlhZGljIHBhcmFtZXRlciIgaWYgJHBhcmFtZXRlci0+aXNWYXJp
YWRpYzsKKyAgICAgICAgICAgICAgICBkaWUgIkNhbGxiYWNrSW50ZXJmYWNlIGRvZXMgbm90IHN1
cHBvcnQgVmFyaWFkaWMgYXJndW1lbnRzIiBpZiAkYXJndW1lbnQtPmlzVmFyaWFkaWM7CiAgICAg
ICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50
ZXJmYWNlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5k
ZXgpLmlzRnVuY3Rpb24oKSkpXG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDM2
Niw5ICs0MzYyLDkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUp
IjsKLSAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNWYXJpYWRpYykgeworICAgICAgICB9
IGVsc2lmICgkYXJndW1lbnQtPmlzVmFyaWFkaWMpIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkpTRE9NQ29udmVydC5oIn0gPSAxOwotICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNG
b3JJRExUeXBlKCR0eXBlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlw
ZSgkdHlwZSwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOwog
ICAgICAgICAKICAgICAgICAgICAgIG15ICRtZXRhVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFj
ZSwgJHR5cGUpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5h
bWUgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8JG1ldGFUeXBlPigqc3RhdGUsICRhcmd1bWVu
dEluZGV4KTtcbiIpOwpAQCAtNDM4NiwxMCArNDM4MiwxMCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKICAgICAgICAgICAgIG15ICRkZWZpbmVPcHRpb25hbFZhbHVlID0gImF1dG8gb3B0
aW9uYWxWYWx1ZSI7CiAgICAgICAgICAgICBteSAkaW5kZW50ID0gIiI7CiAKLSAgICAgICAgICAg
IGRpZSAiVmFyaWFkaWMgcGFyYW1ldGVyIGlzIGFscmVhZHkgaGFuZGxlZCBoZXJlIiBpZiAkcGFy
YW1ldGVyLT5pc1ZhcmlhZGljOwotICAgICAgICAgICAgbXkgJGFyZ3VtZW50TG9va3VwTWV0aG9k
ID0gJHBhcmFtZXRlci0+aXNPcHRpb25hbCA/ICJhcmd1bWVudCIgOiAidW5jaGVja2VkQXJndW1l
bnQiOworICAgICAgICAgICAgZGllICJWYXJpYWRpYyBhcmd1bWVudCBpcyBhbHJlYWR5IGhhbmRs
ZWQgaGVyZSIgaWYgJGFyZ3VtZW50LT5pc1ZhcmlhZGljOworICAgICAgICAgICAgbXkgJGFyZ3Vt
ZW50TG9va3VwTWV0aG9kID0gJGFyZ3VtZW50LT5pc09wdGlvbmFsID8gImFyZ3VtZW50IiA6ICJ1
bmNoZWNrZWRBcmd1bWVudCI7CiAKLSAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc09wdGlv
bmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpKSB7CisgICAgICAgICAgICBpZiAo
JGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVudC0+ZGVmYXVsdCkpIHsK
ICAgICAgICAgICAgICAgICAkbmF0aXZlVHlwZSA9ICJPcHRpb25hbDwkY2xhc3NOYW1lPiI7CiAg
ICAgICAgICAgICAgICAgJG9wdGlvbmFsVmFsdWUgPSAkbmFtZTsKICAgICAgICAgICAgICAgICAk
ZGVmaW5lT3B0aW9uYWxWYWx1ZSA9ICRuYW1lOwpAQCAtNDM5OCwxMiArNDM5NCwxMiBAQCBzdWIg
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBhdXRvICR7bmFtZX1WYWx1ZSA9IHN0YXRlLT4kYXJndW1lbnRMb29rdXBNZXRob2QoJGFy
Z3VtZW50SW5kZXgpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
JG5hdGl2ZVR5cGUgJG5hbWU7XG4iKTsKIAotICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmlz
T3B0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWRlZmluZWQgJHBhcmFtZXRlci0+ZGVm
YXVsdCkgeworICAgICAgICAgICAgaWYgKCRhcmd1bWVudC0+aXNPcHRpb25hbCkgeworICAgICAg
ICAgICAgICAgIGlmICghZGVmaW5lZCAkYXJndW1lbnQtPmRlZmF1bHQpIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghJHtuYW1lfVZhbHVlLmlzVW5k
ZWZpbmVkKCkpIHtcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoJHtuYW1lfVZhbHVlLmlzVW5kZWZp
bmVkKCkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICAkbmFtZSA9ICIgLiBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJmYWNlLCAkcGFyYW1l
dGVyKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICAkbmFtZSA9ICIgLiBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJmYWNlLCAkYXJn
dW1lbnQtPnR5cGUsICRhcmd1bWVudC0+ZGVmYXVsdCkgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBlbHNlIHtcbiIpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAkaW5kZW50ID0gIiAgICAiOwpAQCAtNDQyMCwxOCArNDQx
NiwxOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIG15ICRvdXRlcjsKICAgICAgICAgICAgIG15ICRpbm5lcjsKLSAgICAgICAgICAg
IG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGludGVyZmFjZSwg
JHBhcmFtZXRlcik7CisgICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGUo
JGludGVyZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKICAgICAgICAgICAgIG15ICRpc1RlYXJPZmYg
PSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpICYmICRpbnRl
cmZhY2VOYW1lICF+IC9MaXN0JC87Ci0gICAgICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJl
bmNlID0gJGlzVGVhck9mZiB8fCBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0
ZXIsICRpbnRlcmZhY2UpOworICAgICAgICAgICAgbXkgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSA9
ICRpc1RlYXJPZmYgfHwgU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXJndW1lbnQsICRp
bnRlcmZhY2UpOwogCi0gICAgICAgICAgICBkaWUgIlZhcmlhZGljIHBhcmFtZXRlciBpcyBhbHJl
YWR5IGhhbmRsZWQgaGVyZSIgaWYgJHBhcmFtZXRlci0+aXNWYXJpYWRpYzsKLSAgICAgICAgICAg
IG15ICRhcmd1bWVudExvb2t1cE1ldGhvZCA9ICRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgPyAiYXJn
dW1lbnQiIDogInVuY2hlY2tlZEFyZ3VtZW50IjsKKyAgICAgICAgICAgIGRpZSAiVmFyaWFkaWMg
YXJndW1lbnQgaXMgYWxyZWFkeSBoYW5kbGVkIGhlcmUiIGlmICRhcmd1bWVudC0+aXNWYXJpYWRp
YzsKKyAgICAgICAgICAgIG15ICRhcmd1bWVudExvb2t1cE1ldGhvZCA9ICRhcmd1bWVudC0+aXNP
cHRpb25hbCA/ICJhcmd1bWVudCIgOiAidW5jaGVja2VkQXJndW1lbnQiOwogCiAgICAgICAgICAg
ICBpZiAoISRzaG91bGRQYXNzQnlSZWZlcmVuY2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBw
ZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkp
KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9
IDE7CiAgICAgICAgICAgICAgICAgbXkgJGNoZWNrZWRBcmd1bWVudCA9ICJzdGF0ZS0+JGFyZ3Vt
ZW50TG9va3VwTWV0aG9kKCRhcmd1bWVudEluZGV4KSI7CiAgICAgICAgICAgICAgICAgbXkgJHVu
Y2hlY2tlZEFyZ3VtZW50ID0gInN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRl
eCkiOwotICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlv
bikgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJHBhcmFtZXRlciwgJHVuY2hlY2tlZEFy
Z3VtZW50LCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0
aW9uYWx9KTsKKyAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dFeGNl
cHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVudCwgJHVuY2hlY2tl
ZEFyZ3VtZW50LCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICRuYXRpdmVUeXBlICRu
YW1lID0gbnVsbHB0cjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICBpZiAoISRjaGVja2VkQXJndW1lbnQuaXNVbmRlZmluZWRPck51bGwoKSkge1xuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9ICRuYXRp
dmVWYWx1ZTtcbiIpOwpAQCAtNDQ0MSwxMiArNDQzNywxMiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7
CiAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5hbWUpIjsKICAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgJiYg
ZGVmaW5lZCgkcGFyYW1ldGVyLT5kZWZhdWx0KSAmJiAhV2lsbENvbnZlcnRVbmRlZmluZWRUb0Rl
ZmF1bHRQYXJhbWV0ZXJWYWx1ZSgkdHlwZSwgJHBhcmFtZXRlci0+ZGVmYXVsdCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgbXkgJGRlZmF1bHRWYWx1ZSA9ICRwYXJhbWV0ZXItPmRlZmF1bHQ7Cisg
ICAgICAgICAgICAgICAgaWYgKCRhcmd1bWVudC0+aXNPcHRpb25hbCAmJiBkZWZpbmVkKCRhcmd1
bWVudC0+ZGVmYXVsdCkgJiYgIVdpbGxDb252ZXJ0VW5kZWZpbmVkVG9EZWZhdWx0UGFyYW1ldGVy
VmFsdWUoJHR5cGUsICRhcmd1bWVudC0+ZGVmYXVsdCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
bXkgJGRlZmF1bHRWYWx1ZSA9ICRhcmd1bWVudC0+ZGVmYXVsdDsKIAogICAgICAgICAgICAgICAg
ICAgICAjIFN0cmluZy1yZWxhdGVkIG9wdGltaXphdGlvbnMuCiAgICAgICAgICAgICAgICAgICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgbXkgJHVzZUF0b21pY1N0cmluZyA9ICRwYXJhbWV0ZXItPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0F0b21pY1N0cmluZ307CisgICAgICAgICAgICAgICAgICAgICAgICBteSAkdXNl
QXRvbWljU3RyaW5nID0gJGFyZ3VtZW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9taWNTdHJp
bmd9OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwi
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICR1c2VBdG9t
aWNTdHJpbmcgPyAibnVsbEF0b20iIDogIlN0cmluZygpIjsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzaWYgKCRkZWZhdWx0VmFsdWUgZXEgIlwiXCIiKSB7CkBAIC00NDU1LDEzICs0NDUx
LDEzIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICRkZWZhdWx0VmFsdWUgPSAkdXNlQXRvbWljU3RyaW5nID8gIkF0b21pY1N0cmluZygk
ZGVmYXVsdFZhbHVlLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSIgOiAiQVND
SUlMaXRlcmFsKCRkZWZhdWx0VmFsdWUpIjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICRkZWZh
dWx0VmFsdWUgPSBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSBHZW5lcmF0ZURlZmF1bHRW
YWx1ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUsICRhcmd1bWVudC0+ZGVmYXVsdCk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAic3Rh
dGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJbmRleCkuaXNVbmRlZmluZWQoKSA/
ICRkZWZhdWx0VmFsdWUgOiAiOwogICAgICAgICAgICAgICAgICAgICAkaW5uZXIgPSAic3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4KSI7Ci0gICAgICAgICAgICAgICAgfSBl
bHNpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCAmJiAhZGVmaW5lZCgkcGFyYW1ldGVyLT5kZWZh
dWx0KSkgewotICAgICAgICAgICAgICAgICAgICAjIFVzZSBXVEY6Ok9wdGlvbmFsPD4oKSBmb3Ig
b3B0aW9uYWwgcGFyYW1ldGVycyB0aGF0IGFyZSBtaXNzaW5nIG9yIHVuZGVmaW5lZCBhbmQgdGhh
dCBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgaW4gdGhlIElETC4KKyAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkYXJndW1lbnQtPmlzT3B0aW9uYWwgJiYgIWRlZmluZWQoJGFyZ3VtZW50LT5k
ZWZhdWx0KSkgeworICAgICAgICAgICAgICAgICAgICAjIFVzZSBXVEY6Ok9wdGlvbmFsPD4oKSBm
b3Igb3B0aW9uYWwgYXJndW1lbnRzIHRoYXQgYXJlIG1pc3Npbmcgb3IgdW5kZWZpbmVkIGFuZCB0
aGF0IGRvIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgSURMLgogICAgICAgICAgICAg
ICAgICAgICAkb3V0ZXIgPSAic3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJ
bmRleCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPCRuYXRpdmVUeXBlPigpIDogIjsKICAgICAg
ICAgICAgICAgICAgICAgJGlubmVyID0gInN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1l
bnRJbmRleCkiOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC00NDY5LDcgKzQ0NjUsNyBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICAgICAgJGlubmVy
ID0gInN0YXRlLT4kYXJndW1lbnRMb29rdXBNZXRob2QoJGFyZ3VtZW50SW5kZXgpIjsKICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhy
b3dFeGNlcHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXIsICRp
bm5lciwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlv
bmFsfSk7CisgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0
aW9uKSA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRpbm5lciwgJGZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRuYW1lID0gJHtvdXRlcn0ke25hdGl2
ZVZhbHVlfTtcbiIpOwogICAgICAgICAgICAgICAgICR2YWx1ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNl
cHRpb247CkBAIC00NDkzLDcgKzQ0ODksNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sK
ICAgICB9CiAKICAgICBwdXNoKEBhcmd1bWVudHMsICJXVEZNb3ZlKHByb21pc2UpIikgaWYgSXNS
ZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbik7Ci0gICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBp
ZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb259OworICAgIHB1c2goQGFyZ3VtZW50cywgImVjIikgaWYgJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CiAKICAgICBteSAk
ZnVuY3Rpb25TdHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRz
KSAuICIpIjsKICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0
ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0
ZUV4Y2VwdGlvbkNhbGwoJGZ1bmN0aW9uKTsKQEAgLTQ1OTIsMTAgKzQ1ODgsMTAgQEAgc3ViIEdl
bmVyYXRlQ2FsbGJhY2tIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuICAg
IC8vIEZ1bmN0aW9uc1xuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRl
cmZhY2UtPmZ1bmN0aW9uc30pIHsKICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKLSAg
ICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZXROYXRpdmVUeXBlRm9yQ2Fs
bGJhY2tzKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXItPnR5cGUpIC4gIiAiIC4gJHBhcmFtZXRlci0+
bmFtZSk7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFy
Z3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdldE5hdGl2ZVR5
cGVGb3JDYWxsYmFja3MoJGludGVyZmFjZSwgJGFyZ3VtZW50LT50eXBlKSAuICIgIiAuICRhcmd1
bWVudC0+bmFtZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHZpcnR1YWwgIiAuIEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MoJGludGVyZmFj
ZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4gIiAiIC4gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmlydHVhbCAiIC4gR2V0TmF0aXZlVHlw
ZUZvckNhbGxiYWNrcygkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpIC4gIiAiIC4gJGZ1bmN0
aW9uLT5uYW1lIC4gIigiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpO1xuIik7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTQ3MjQsMTQgKzQ3MjAsMTQgQEAgc3ViIEdlbmVyYXRlQ2FsbGJh
Y2tJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIlxuLy8gRnVuY3Rpb25zXG4iKTsKICAgICAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgbXkg
QHBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKLSAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tfSB8fCBHZXROYXRp
dmVUeXBlKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSBuZSAiYm9vbCIp
IHsKKyAgICAgICAgICAgIG15IEBwYXJhbXMgPSBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfTsKKyAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbX0gfHwg
R2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpIG5lICJib29sIikgewog
ICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSk7Ci0gICAg
ICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAuIEdldE5hdGl2ZVR5cGVGb3JDYWxs
YmFja3MoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4gIiAke2NsYXNz
TmFtZX06OiR7ZnVuY3Rpb25OYW1lfSgiKTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
Rm9ySURMVHlwZSgkZnVuY3Rpb24tPnR5cGUpOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9ICRmdW5jdGlvbi0+bmFtZTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4i
IC4gR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcygkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUp
IC4gIiAke2NsYXNzTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSgiKTsKIAogICAgICAgICAgICAgbXkg
QGFyZ3MgPSAoKTsKICAgICAgICAgICAgIG15IEBhcmdzQ2hlY2sgPSAoKTsKQEAgLTQ4MDMsMTAg
KzQ3OTksMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogewog
ICAgIG15ICgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgJGluZGVudCwgJHN2Z1Byb3BlcnR5
VHlwZSwgJGludGVyZmFjZSkgPSBAXzsKIAotICAgIG15ICRub25kZXRlcm1pbmlzdGljID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vbmRldGVybWluaXN0aWN9
OwotICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CisgICAgbXkg
JG5vbmRldGVybWluaXN0aWMgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vbmRl
dGVybWluaXN0aWN9OworICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiA9ICRmdW5jdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdhY3lFeGNlcHRpb259OwogCi0gICAg
aWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJ2b2lkIiB8fCBJc1JldHVy
bmluZ1Byb21pc2UoJGZ1bmN0aW9uKSkgeworICAgIGlmICgkZnVuY3Rpb24tPnR5cGUtPm5hbWUg
ZXEgInZvaWQiIHx8IElzUmV0dXJuaW5nUHJvbWlzZSgkZnVuY3Rpb24pKSB7CiAgICAgICAgIGlm
ICgkbm9uZGV0ZXJtaW5pc3RpYykgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxy
ZXBsYXkvSW5wdXRDdXJzb3IuaD4iLCAiV0VCX1JFUExBWSIpOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWYgRU5BQkxFKFdFQl9SRVBMQVkpXG4iKTsKQEAgLTQ4NDEsOSArNDgz
Nyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKICAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cmVwbGF5L0lucHV0Q3Vyc29yLmg+IiwgIldFQl9SRVBM
QVkiKTsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8d3RmL05ldmVyRGVzdHJveWVk
Lmg+IiwgIldFQl9SRVBMQVkiKTsKIAotICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXRO
YXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZSk7
Ci0gICAgICAgICAgICBteSAkbWVtb2l6ZWRUeXBlID0gR2V0TmF0aXZlVHlwZUZvck1lbW9pemF0
aW9uKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsKLSAgICAgICAgICAg
IG15ICRiaW5kaW5nTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAiLiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0
aXZlVHlwZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAgICAgICAgbXkgJG1l
bW9pemVkVHlwZSA9IEdldE5hdGl2ZVR5cGVGb3JNZW1vaXphdGlvbigkaW50ZXJmYWNlLCAkZnVu
Y3Rpb24tPnR5cGUpOworICAgICAgICAgICAgbXkgJGJpbmRpbmdOYW1lID0gJGludGVyZmFjZS0+
dHlwZS0+bmFtZSAuICIuIiAuICRmdW5jdGlvbi0+bmFtZTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkaW5kZW50IC4gIkpTVmFsdWUgcmVzdWx0O1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUoV0VCX1JFUExBWSlcbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiSW5wdXRDdXJzb3ImIGN1cnNvciA9IHN0
YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmlucHV0Q3Vyc29yKCk7XG4iKTsKQEAgLTQ4NTIs
MjggKzQ4NDgsMjggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgICRuYXRpdmVUeXBl
IG1lbW9pemVkUmVzdWx0ID0gJGZ1bmN0aW9uU3RyaW5nO1xuIik7CiAgICAgICAgICAgICBteSAk
ZXhjZXB0aW9uQ29kZSA9ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiA/ICJlYyIgOiAiMCI7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgY3Vyc29yLmFwcGVu
ZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PCRtZW1vaXplZFR5cGU+PihiaW5kaW5nTmFtZS5nZXQo
KS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsICRleGNlcHRpb25Db2RlKTtcbiIpOwotICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIHJlc3VsdCA9ICIgLiBOYXRp
dmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAxLCAkaW50ZXJm
YWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgcmVzdWx0ID0gIiAuIE5hdGl2ZVRv
SlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRS
ZXN1bHQiLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgJGluZGVudCAuICJ9IGVsc2UgaWYgKGN1cnNvci5pc1JlcGxheWluZygpKSB7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBNZW1vaXplZERP
TVJlc3VsdEJhc2UqIGlucHV0ID0gY3Vyc29yLmZldGNoSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHRC
YXNlPigpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIg
ICAgJG1lbW9pemVkVHlwZSBtZW1vaXplZFJlc3VsdDtcbiIpOwogICAgICAgICAgICAgIyBGSVhN
RTogdGhlIGdlbmVyYXRlZCBjb2RlIHNob3VsZCByZXBvcnQgYW4gZXJyb3IgaWYgYW4gaW5wdXQg
Y2Fubm90IGJlIGZldGNoZWQgb3IgY29udmVydGVkLgogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICRpbmRlbnQgLiAiICAgIGlmIChpbnB1dCAmJiBpbnB1dC0+Y29udmVydFRvPCRtZW1v
aXplZFR5cGU+KG1lbW9pemVkUmVzdWx0KSkge1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGluZGVudCAuICIgICAgICAgIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVV
c2luZ1BvaW50ZXJzKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAxLCAkaW50ZXJmYWNlLCAibWVtb2l6
ZWRSZXN1bHQiLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGluZGVudCAuICIgICAgICAgIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVV
c2luZ1BvaW50ZXJzKCRmdW5jdGlvbiwgMSwgJGludGVyZmFjZSwgIm1lbW9pemVkUmVzdWx0Iiwg
JHRoaXNPYmplY3QpIC4gIjtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRp
bmRlbnQgLiAiICAgICAgICBlYyA9IGlucHV0LT5leGNlcHRpb25Db2RlKCk7XG4iKSBpZiAkbWF5
VGhyb3dMZWdhY3lFeGNlcHRpb247CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGlu
ZGVudCAuICIgICAgfSBlbHNlXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAk
aW5kZW50IC4gIiAgICAgICAgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRl
cnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywg
JHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRp
bmRlbnQgLiAiICAgICAgICByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVy
cygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3Qp
IC4gIjtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAifSBl
bHNlXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBy
ZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24tPnNpZ25h
dHVyZSwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhpc09iamVjdCkgLiAiO1xu
Iik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgcmVzdWx0
ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJm
YWNlLCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiI2Vsc2VcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICRpbmRlbnQgLiAicmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRl
cnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywg
JHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRp
bmRlbnQgLiAicmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0
aW9uLCAxLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAuICI7XG4i
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIkpTVmFs
dWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLT5z
aWduYXR1cmUsIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4g
IjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiSlNWYWx1
ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEs
ICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOwogICAg
ICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIgLiAkaW5kZW50IC4gInNl
dERPTUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgZWMpO1xuIikgaWYgJG1heVRocm93TGVn
YWN5RXhjZXB0aW9uOwogCi0gICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRy
aWJ1dGVDb250YWlucygkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FsbFdpdGh9LCAiU2NyaXB0U3RhdGUiKSkgeworICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDYWxsV2l0aH0sICJTY3JpcHRTdGF0ZSIpKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgJGluZGVudCAuICJSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpO1xuIik7CiAgICAgICAgIH0KIApAQCAtNDkzOCw3ICs0OTM0LDcgQEAgY29uc3Qg
SlNDOjpDbGFzc0luZm8gJHtpdGVyYXRvclByb3RvdHlwZQogRU5ECiAKICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgewotICAgICAg
ICBteSAkcHJvcGVydHlOYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAg
IG15ICRwcm9wZXJ0eU5hbWUgPSAkZnVuY3Rpb24tPm5hbWU7CiAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9u
KTsKIAogICAgICAgICBpZiAoJHByb3BlcnR5TmFtZSBlcSAiZm9yRWFjaCIpIHsKQEAgLTQ5OTMs
MTMgKzQ5ODksNiBAQCBzdWIgYWRkSXRlcmFibGVQcm9wZXJ0aWVzKCkKICAgICB9CiB9CiAKLXN1
YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQotewotICAgIG15ICgkaW50ZXJmYWNlLCAkc2ln
bmF0dXJlKSA9IEBfOwotCi0gICAgcmV0dXJuIEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHNp
Z25hdHVyZS0+dHlwZSk7Ci19Ci0KIG15ICVuYXRpdmVUeXBlID0gKAogICAgICJET01TdHJpbmci
ID0+ICJTdHJpbmciLAogICAgICJVU1ZTdHJpbmciID0+ICJTdHJpbmciLApAQCAtNTEzNSw3ICs1
MTI0LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJHR5cGUp
ID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21U
eXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBl
IjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1lOwogCkBAIC01MTU3LDcgKzUxNDYs
NyBAQCBzdWIgU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZQogICAgIG15ICgkcGFyYW1ldGVy
LCAkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBl
KCRpbnRlcmZhY2UsICRwYXJhbWV0ZXItPnR5cGUpOwotICAgIHJldHVybiAkY29kZUdlbmVyYXRv
ci0+U2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFyYW1ldGVyLCAkaW50ZXJmYWNlKSAm
JiAoc3Vic3RyKCRuYXRpdmVUeXBlLCAtMSkgZXEgJyonIHx8ICRuYXRpdmVUeXBlID1+IC9eUmVm
UHRyLyk7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5TaG91bGRQYXNzV3JhcHBlckJ5UmVm
ZXJlbmNlKCRwYXJhbWV0ZXIpICYmIChzdWJzdHIoJG5hdGl2ZVR5cGUsIC0xKSBlcSAnKicgfHwg
JG5hdGl2ZVR5cGUgPX4gL15SZWZQdHIvKTsKIH0KIAogc3ViIEdldE5hdGl2ZVZlY3RvcklubmVy
VHlwZQpAQCAtNTIzNCwyNiArNTIyMywyNiBAQCBzdWIgSXNOYXRpdmVUeXBlCiAKIHN1YiBHZXRJ
bnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIHsKLSAgICBteSAkc2lnbmF0dXJlID0gc2hp
ZnQ7CisgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKIAotICAgIHJldHVybiAiSW50ZWdlckNvbnZl
cnNpb25Db25maWd1cmF0aW9uOjpFbmZvcmNlUmFuZ2UiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0VuZm9yY2VSYW5nZX07Ci0gICAgcmV0dXJuICJJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb246OkNsYW1wIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDbGFtcH07CisgICAgcmV0dXJuICJJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OkVu
Zm9yY2VSYW5nZSIgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuZm9yY2VSYW5n
ZX07CisgICAgcmV0dXJuICJJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OkNsYW1wIiBp
ZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2xhbXB9OwogICAgIHJldHVybiAiSW50
ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwiOwogfQogCiBzdWIgR2V0U3RyaW5n
Q29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIHsKLSAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7Cisg
ICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKIAotICAgIHJldHVybiAiU3RyaW5nQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb246OlRyZWF0TnVsbEFzRW1wdHlTdHJpbmciIGlmICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFzfSAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVtcHR5U3RyaW5nIjsKKyAgICByZXR1cm4gIlN0cmlu
Z0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpUcmVhdE51bGxBc0VtcHR5U3RyaW5nIiBpZiAkY29u
dGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9ICYmICRjb250ZXh0LT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVtcHR5U3RyaW5nIjsKICAgICByZXR1
cm4gIlN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwiOwogfQogCiBzdWIgSlNW
YWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01Db252ZXJ0CiB7Ci0gICAgbXkgKCR0eXBlLCAkc2ln
bmF0dXJlKSA9IEBfOworICAgIG15ICgkdHlwZSwgJGNvbnRleHQpID0gQF87CiAKLSAgICByZXR1
cm4gMCBpZiAkdHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIiAmJiAoJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0cmluZ30gfHwgJHNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXRvbWljU3RyaW5nfSk7CisgICAgcmV0dXJuIDAgaWYg
JHR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIgJiYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nfSB8fCAkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57QXRvbWljU3RyaW5nfSk7CiAKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+aXNV
bmlvbjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKQEAgLTUyNjgsMjAg
KzUyNTcsMjkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZUlzSGFuZGxlZEJ5RE9NQ29udmVydAogICAg
IHJldHVybiAwOwogfQogCitzdWIgSXNWYWxpZENvbnRleHRGb3JKU1ZhbHVlVG9OYXRpdmUKK3sK
KyAgICBteSAkY29udGV4dCA9IHNoaWZ0OworICAgIAorICAgIHJldHVybiByZWYoJGNvbnRleHQp
IGVxICJJRExBdHRyaWJ1dGUiIHx8IHJlZigkY29udGV4dCkgZXEgIklETE9wZXJhdGlvbiIgfHwg
cmVmKCRjb250ZXh0KSBlcSAiSURMQXJndW1lbnQiOworfQorCiAjIFJldHVybnMgKGNvbnZlcnRT
dHJpbmcsIG1heVRocm93RXhjZXB0aW9uKS4KIAogc3ViIEpTVmFsdWVUb05hdGl2ZQogewotICAg
IG15ICgkaW50ZXJmYWNlLCAkc2lnbmF0dXJlLCAkdmFsdWUsICRjb25kaXRpb25hbCwgJHN0YXRl
UG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkdGhpc09iamVjdFJlZmVyZW5jZSkgPSBAXzsKKyAg
ICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICR2YWx1ZSwgJGNvbmRpdGlvbmFsLCAkc3RhdGVQ
b2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2JqZWN0UmVmZXJlbmNlKSA9IEBfOworCisg
ICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQgdHlwZSIpIGlmICFJc1ZhbGlkQ29udGV4dEZvckpT
VmFsdWVUb05hdGl2ZSgkY29udGV4dCk7CiAKLSAgICBteSAkdHlwZSA9ICRzaWduYXR1cmUtPnR5
cGU7CisgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsKIAogICAgICMgRklYTUU6IFJlbW92
ZSB0aGVzZSAzIHZhcmlhYmxlcyB3aGVuIGFsbCBKU1ZhbHVlVG9OYXRpdmUgdXNlIHJlZmVyZW5j
ZXMuCiAgICAgJHN0YXRlUG9pbnRlciA9ICJzdGF0ZSIgdW5sZXNzICRzdGF0ZVBvaW50ZXI7CiAg
ICAgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSIgdW5sZXNzICRzdGF0ZVJlZmVyZW5jZTsKICAg
ICAkdGhpc09iamVjdFJlZmVyZW5jZSA9ICIqY2FzdGVkVGhpcyIgdW5sZXNzICR0aGlzT2JqZWN0
UmVmZXJlbmNlOwogCi0gICAgaWYgKEpTVmFsdWVUb05hdGl2ZUlzSGFuZGxlZEJ5RE9NQ29udmVy
dCgkdHlwZSwgJHNpZ25hdHVyZSkpIHsKKyAgICBpZiAoSlNWYWx1ZVRvTmF0aXZlSXNIYW5kbGVk
QnlET01Db252ZXJ0KCR0eXBlLCAkY29udGV4dCkpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIkpTRE9NQ29udmVydC5oIik7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlw
ZSgkdHlwZSwgJGNvbmRpdGlvbmFsKTsKIApAQCAtNTI5MCwxNSArNTI4OCwxNSBAQCBzdWIgSlNW
YWx1ZVRvTmF0aXZlCiAgICAgICAgIG15IEBjb252ZXJzaW9uQXJndW1lbnRzID0gKCk7CiAgICAg
ICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICIkc3RhdGVSZWZlcmVuY2UiKTsKICAgICAg
ICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIiR2YWx1ZSIpOwotICAgICAgICBwdXNoKEBj
b252ZXJzaW9uQXJndW1lbnRzLCBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJHNp
Z25hdHVyZSkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0ludGVnZXJUeXBlKCR0eXBlKTsKLSAgICAg
ICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgR2V0U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3Vy
YXRpb24oJHNpZ25hdHVyZSkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUp
OworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCBHZXRJbnRlZ2VyQ29udmVyc2lv
bkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdlbmVyYXRvci0+SXNJbnRlZ2VyVHlw
ZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsIEdldFN0cmluZ0Nv
bnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3Ry
aW5nVHlwZSgkdHlwZSk7CiAKICAgICAgICAgcmV0dXJuICgiY29udmVydDwkSURMVHlwZT4oIiAu
IGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4gIikiLCAxKTsKICAgICB9CiAKICAg
ICBpZiAoJHR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIpIHsKLSAgICAgICAgcmV0dXJuICgiQXRv
bWljU3RyaW5nKCR2YWx1ZS50b1N0cmluZygkc3RhdGVQb2ludGVyKS0+dG9FeGlzdGluZ0F0b21p
Y1N0cmluZygkc3RhdGVQb2ludGVyKSkiLCAxKSBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nfTsKLSAgICAgICAgcmV0dXJuICgi
JHZhbHVlLnRvU3RyaW5nKCRzdGF0ZVBvaW50ZXIpLT50b0F0b21pY1N0cmluZygkc3RhdGVQb2lu
dGVyKSIsIDEpIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21pY1N0cmlu
Z307CisgICAgICAgIHJldHVybiAoIkF0b21pY1N0cmluZygkdmFsdWUudG9TdHJpbmcoJHN0YXRl
UG9pbnRlciktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoJHN0YXRlUG9pbnRlcikpIiwgMSkgaWYg
JGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJp
bmd9OworICAgICAgICByZXR1cm4gKCIkdmFsdWUudG9TdHJpbmcoJHN0YXRlUG9pbnRlciktPnRv
QXRvbWljU3RyaW5nKCRzdGF0ZVBvaW50ZXIpIiwgMSkgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0F0b21pY1N0cmluZ307CiAgICAgICAgIGFzc2VydCgiVW5oYW5kbGVkIHN0cmlu
ZyBjb252ZXJzaW9uLiIpOwogICAgIH0KIApAQCAtNTM2OSw0NCArNTM2Nyw1MyBAQCBzdWIgTmF0
aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzR2xvYmFsCiAKIHN1YiBOYXRpdmVUb0pTVmFsdWVV
c2luZ1JlZmVyZW5jZXMKIHsKLSAgICBteSAoJHNpZ25hdHVyZSwgJGluRnVuY3Rpb25DYWxsLCAk
aW50ZXJmYWNlLCAkdmFsdWUsICR0aGlzVmFsdWUpID0gQF87CisgICAgbXkgKCRjb250ZXh0LCAk
aW5GdW5jdGlvbkNhbGwsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHRoaXNWYWx1ZSkgPSBAXzsKICAg
ICBteSAkc3RhdGVQb2ludGVyID0gIiZzdGF0ZSI7CiAgICAgbXkgJHN0YXRlUmVmZXJlbmNlID0g
InN0YXRlIjsKICAgICBteSAkd3JhcHBlZCA9ICIkdGhpc1ZhbHVlLndyYXBwZWQoKSI7CiAgICAg
bXkgJGdsb2JhbE9iamVjdCA9ICR0aGlzVmFsdWUgPyAiJHRoaXNWYWx1ZS5nbG9iYWxPYmplY3Qo
KSIgOiAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9iamVj
dCgpKSI7CiAKLSAgICByZXR1cm4gTmF0aXZlVG9KU1ZhbHVlKCRzaWduYXR1cmUsICRpbkZ1bmN0
aW9uQ2FsbCwgJGludGVyZmFjZSwgJHZhbHVlLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVu
Y2UsICR3cmFwcGVkLCAkZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gTmF0aXZlVG9KU1ZhbHVl
KCRjb250ZXh0LCAkaW5GdW5jdGlvbkNhbGwsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHN0YXRlUG9p
bnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkd3JhcHBlZCwgJGdsb2JhbE9iamVjdCk7CiB9CiAKICMg
RklYTUU6IFdlIHNob3VsZCByZW1vdmUgTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycyBhbmQg
Y29tYmluZSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMgYW5kIE5hdGl2ZVRvSlNWYWx1
ZQogc3ViIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMKIHsKLSAgICBteSAoJHNpZ25hdHVy
ZSwgJGluRnVuY3Rpb25DYWxsLCAkaW50ZXJmYWNlLCAkdmFsdWUsICR0aGlzVmFsdWUpID0gQF87
CisgICAgbXkgKCRjb250ZXh0LCAkaW5GdW5jdGlvbkNhbGwsICRpbnRlcmZhY2UsICR2YWx1ZSwg
JHRoaXNWYWx1ZSkgPSBAXzsKICAgICBteSAkc3RhdGVQb2ludGVyID0gInN0YXRlIjsKICAgICBt
eSAkc3RhdGVSZWZlcmVuY2UgPSAiKnN0YXRlIjsKICAgICBteSAkd3JhcHBlZCA9ICIkdGhpc1Zh
bHVlLT53cmFwcGVkKCkiOwogICAgIG15ICRnbG9iYWxPYmplY3QgPSAkdGhpc1ZhbHVlID8gIiR0
aGlzVmFsdWUtPmdsb2JhbE9iamVjdCgpIiA6ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihz
dGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSI7CiAKLSAgICByZXR1cm4gTmF0aXZlVG9KU1Zh
bHVlKCRzaWduYXR1cmUsICRpbkZ1bmN0aW9uQ2FsbCwgJGludGVyZmFjZSwgJHZhbHVlLCAkc3Rh
dGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR3cmFwcGVkLCAkZ2xvYmFsT2JqZWN0KTsKKyAg
ICByZXR1cm4gTmF0aXZlVG9KU1ZhbHVlKCRjb250ZXh0LCAkaW5GdW5jdGlvbkNhbGwsICRpbnRl
cmZhY2UsICR2YWx1ZSwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkd3JhcHBlZCwg
JGdsb2JhbE9iamVjdCk7Cit9CisKK3N1YiBJc1ZhbGlkQ29udGV4dEZvck5hdGl2ZVRvSlNWYWx1
ZQoreworICAgIG15ICRjb250ZXh0ID0gc2hpZnQ7CisgICAgCisgICAgcmV0dXJuIHJlZigkY29u
dGV4dCkgZXEgIklETEF0dHJpYnV0ZSIgfHwgcmVmKCRjb250ZXh0KSBlcSAiSURMT3BlcmF0aW9u
IiB8fCByZWYoJGNvbnRleHQpIGVxICJJRExBcmd1bWVudCI7CiB9CiAKIHN1YiBOYXRpdmVUb0pT
VmFsdWUKIHsKLSAgICBteSAoJHNpZ25hdHVyZSwgJGluRnVuY3Rpb25DYWxsLCAkaW50ZXJmYWNl
LCAkdmFsdWUsICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHdyYXBwZWQsICRnbG9i
YWxPYmplY3QpID0gQF87CisgICAgbXkgKCRjb250ZXh0LCAkaW5GdW5jdGlvbkNhbGwsICRpbnRl
cmZhY2UsICR2YWx1ZSwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkd3JhcHBlZCwg
JGdsb2JhbE9iamVjdCkgPSBAXzsKKworICAgIGFzc2VydCgiSW52YWxpZCBjb250ZXh0IHR5cGUi
KSBpZiAhSXNWYWxpZENvbnRleHRGb3JOYXRpdmVUb0pTVmFsdWUoJGNvbnRleHQpOwogCi0gICAg
bXkgJGNvbmRpdGlvbmFsID0gJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0
aW9uYWx9OwotICAgIG15ICR0eXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKLSAgICBteSAkbWF5VGhy
b3dFeGNlcHRpb24gPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntHZXR0ZXJNYXlU
aHJvd0V4Y2VwdGlvbn0gfHwgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhy
b3dFeGNlcHRpb259OworICAgIG15ICRjb25kaXRpb25hbCA9ICRjb250ZXh0LT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CisgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsK
KyAgICBteSAkbWF5VGhyb3dFeGNlcHRpb24gPSAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57R2V0dGVyTWF5VGhyb3dFeGNlcHRpb259IHx8ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CiAKICAgICAjIFdlIGNvdWxkIGluc3RlYWQgb3Zlcmxv
YWQgYSBmdW5jdGlvbiB0byB3b3JrIHdpdGggb3B0aW9uYWwgYXMgd2VsbCBhcyBub24tb3B0aW9u
YWwgbnVtYmVycywgYnV0IHRoaXMKICAgICAjIGlzIHNsaWdodGx5IGJldHRlciBiZWNhdXNlIGl0
IGd1YXJhbnRlZXMgd2Ugd2lsbCBmYWlsIHRvIGNvbXBpbGUgaWYgdGhlIElETCBmaWxlIGRvZXNu
J3QgbWF0Y2ggdGhlIEMrKy4KLSAgICBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UmVmbGVjdH0gYW5kICgkdHlwZS0+bmFtZSBlcSAidW5zaWduZWQgbG9uZyIgb3IgJHR5cGUt
Pm5hbWUgZXEgInVuc2lnbmVkIHNob3J0IikpIHsKKyAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1JlZmxlY3R9IGFuZCAoJHR5cGUtPm5hbWUgZXEgInVuc2lnbmVkIGxvbmci
IG9yICR0eXBlLT5uYW1lIGVxICJ1bnNpZ25lZCBzaG9ydCIpKSB7CiAgICAgICAgICR2YWx1ZSA9
fiBzL2dldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUvZ2V0SW50ZWdyYWxBdHRyaWJ1dGUvZzsK
ICAgICAgICAgJHZhbHVlID0gInN0ZDo6bWF4KDAsICR2YWx1ZSkiOwogICAgIH0KIAogICAgIGlm
ICgkdHlwZS0+bmFtZSBlcSAiYW55IikgewotICAgICAgICBteSAkcmV0dXJuVHlwZSA9ICRzaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGF0aW9uUmV0dXJuVHlwZX07Cisg
ICAgICAgIG15ICRyZXR1cm5UeXBlID0gJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lt
cGxlbWVudGF0aW9uUmV0dXJuVHlwZX07CiAgICAgICAgIGlmIChkZWZpbmVkICRyZXR1cm5UeXBl
IGFuZCAoJHJldHVyblR5cGUgZXEgIklEQktleVBhdGgiIG9yICRyZXR1cm5UeXBlIGVxICJJREJL
ZXkiKSkgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIklEQkJpbmRpbmdVdGlsaXRp
ZXMuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICByZXR1cm4gInRvSlMoJHN0YXRlUmVm
ZXJlbmNlLCAqJGdsb2JhbE9iamVjdCwgJHZhbHVlKSI7CkBAIC01NDQ1LDcgKzU0NTIsNyBAQCBz
dWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICR2YWx1ZSA9ICJzdGF0aWNfY2FzdDwiIC4gR2V0
TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSkgLiAiPigkdmFsdWUpIjsKICAgICB9IGVsc2lm
ICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpIGFuZCBub3Qg
JGludGVyZmFjZS0+dHlwZS0+bmFtZSA9fiAvTGlzdCQvKSB7CiAgICAgICAgIG15ICR0ZWFyT2Zm
VHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVlZGluZ1RlYXJPZmYoJHR5cGUpOwot
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZVdpdGhXcml0YWJsZVByb3BlcnRp
ZXNOZWVkaW5nVGVhck9mZigkdHlwZSkgYW5kICEkaW5GdW5jdGlvbkNhbGwgYW5kIG5vdCBkZWZp
bmVkICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltbXV0YWJsZX0pIHsKKyAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVXaXRoV3JpdGFibGVQcm9wZXJ0aWVzTmVl
ZGluZ1RlYXJPZmYoJHR5cGUpIGFuZCAhJGluRnVuY3Rpb25DYWxsIGFuZCBub3QgZGVmaW5lZCAk
Y29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1tdXRhYmxlfSkgewogICAgICAgICAgICAg
bXkgJGdldHRlciA9ICR2YWx1ZTsKICAgICAgICAgICAgICRnZXR0ZXIgPX4gcy9pbXBsXC4vLzsK
ICAgICAgICAgICAgICRnZXR0ZXIgPX4gcy9pbXBsLT4vLzsKQEAgLTU0NzAsMTAgKzU0NzcsMTAg
QEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgJHZhbHVlID0g
IkJpbmRpbmdTZWN1cml0eTo6Y2hlY2tTZWN1cml0eUZvck5vZGUoJHN0YXRlUmVmZXJlbmNlLCAk
dmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5
Rm9yTm9kZX07CisgICAgJHZhbHVlID0gIkJpbmRpbmdTZWN1cml0eTo6Y2hlY2tTZWN1cml0eUZv
ck5vZGUoJHN0YXRlUmVmZXJlbmNlLCAkdmFsdWUpIiBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q2hlY2tTZWN1cml0eUZvck5vZGV9OwogCiAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9
ICJ0b0pTIjsKLSAgICAkZnVuY3Rpb25OYW1lID0gInRvSlNOZXdseUNyZWF0ZWQiIGlmICRzaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05ld09iamVjdH07CisgICAgJGZ1bmN0aW9uTmFt
ZSA9ICJ0b0pTTmV3bHlDcmVhdGVkIiBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TmV3T2JqZWN0fTsKIAogICAgIG15ICRhcmd1bWVudHMgPSAiJHN0YXRlUG9pbnRlciwgJGdsb2Jh
bE9iamVjdCwgJHZhbHVlIjsKICAgICAkYXJndW1lbnRzID0gIiRzdGF0ZVJlZmVyZW5jZSwgKiRn
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsICR2YWx1ZSIgaWYgJG1heVRocm93RXhjZXB0aW9uOwpA
QCAtNTg4Nyw3ICs1ODk0LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAK
ICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRm
dW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdhY3lFeGNlcHRpb259IHx8ICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yTWF5VGhyb3dMZWdhY3lF
eGNlcHRpb259KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q29uc3RydWN0b3JNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn0pIHsKICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDE7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwO1xuIik7
CiAgICAgICAgICAgICB9CkBAIC01OTE4LDEyICs1OTI1LDEyIEBAIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAi
KmNhc3RlZFRoaXMtPmRvY3VtZW50KCkiKSBpZiAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3I7
CiAKICAgICAgICAgICAgIG15ICRpbmRleCA9IDA7Ci0gICAgICAgICAgICBmb3JlYWNoIG15ICRw
YXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgeworICAgICAgICAgICAgZm9yZWFj
aCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CiAgICAgICAgICAgICAg
ICAgbGFzdCBpZiAkaW5kZXggZXEgJHBhcmFtSW5kZXg7Ci0gICAgICAgICAgICAgICAgaWYgKFNo
b3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJHBhcmFtZXRlciwgJGludGVyZmFjZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiKiIgLiAkcGFyYW1l
dGVyLT5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVy
ZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2go
QGNvbnN0cnVjdG9yQXJnTGlzdCwgIioiIC4gJGFyZ3VtZW50LT5uYW1lKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xp
c3QsICJXVEZNb3ZlKCIgLiAkcGFyYW1ldGVyLT5uYW1lIC4gIikiKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiV1RGTW92ZSgiIC4gJGFyZ3VtZW50LT5u
YW1lIC4gIikiKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgJGluZGV4Kys7
CiAgICAgICAgICAgICB9CkBAIC02MDgxLDcgKzYwODgsNyBAQCBzdWIgTmVlZHNDb25zdHJ1Y3Rv
clByb3BlcnR5CiBzdWIgSXNSZXR1cm5pbmdQcm9taXNlCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0g
c2hpZnQ7Ci0gICAgcmV0dXJuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlICYmICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJQcm9taXNlIjsKKyAgICByZXR1cm4gJGZ1bmN0
aW9uLT50eXBlICYmICRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAiUHJvbWlzZSI7CiB9CiAKIHN1
YiBJc0NvbnN0cnVjdGFibGUKQEAgLTYxMDMsNyArNjExMCw3IEBAIHN1YiBJc1VuZm9yZ2VhYmxl
CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRwcm9wZXJ0eSA9IHNoaWZ0
OwotICAgIHJldHVybiAkcHJvcGVydHktPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
VW5mb3JnZWFibGV9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1VuZm9yZ2Vh
YmxlfTsKKyAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntVbmZvcmdl
YWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5mb3JnZWFibGV9Owog
fQogCiBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbApAQCAtNjExMyw3ICs2MTIwLDcgQEAgc3Vi
IENvbXB1dGVGdW5jdGlvblNwZWNpYWwKIAogICAgIG15IEBzcGVjaWFscyA9ICgpOwogICAgIHB1
c2goQHNwZWNpYWxzLCAoIkRvbnREZWxldGUiLCAiUmVhZE9ubHkiKSkgaWYgSXNVbmZvcmdlYWJs
ZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwotICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVudW0i
KSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVy
YWJsZX07CisgICAgcHVzaChAc3BlY2lhbHMsICJEb250RW51bSIpIGlmICRmdW5jdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX07CiAgICAgaWYgKElzSlNCdWlsdGluKCRp
bnRlcmZhY2UsICRmdW5jdGlvbikpIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OkJ1
aWx0aW4iKTsKICAgICB9CkBAIC02MTI3LDExICs2MTM0LDExIEBAIHN1YiBJc0pTQnVpbHRpbgog
ewogICAgIG15ICgkaW50ZXJmYWNlLCAkb2JqZWN0KSA9IEBfOwogCi0gICAgcmV0dXJuIDAgaWYg
JG9iamVjdC0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b219OwotICAgIHJl
dHVybiAwIGlmICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9t
R2V0dGVyfTsKLSAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbVNldHRlcn07CisgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tfTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b21HZXR0ZXJ9OworICAgIHJldHVybiAwIGlmICRvYmplY3QtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVNldHRlcn07CiAKLSAgICByZXR1cm4gMSBpZiAkb2Jq
ZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pTQnVpbHRpbn07CisgICAgcmV0
dXJuIDEgaWYgJG9iamVjdC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNCdWlsdGlufTsKICAgICBy
ZXR1cm4gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0J1aWx0aW59Owog
CiAgICAgcmV0dXJuIDA7CkBAIC02MTUwLDkgKzYxNTcsOSBAQCBzdWIgSXNKU0J1aWx0aW5Db25z
dHJ1Y3Rvcgogc3ViIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZQogewogICAgIG15ICgkY2xhc3NO
YW1lLCAkZnVuY3Rpb24pID0gQF87Ci0gICAgbXkgJHNjb3BlTmFtZSA9ICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKKyAgICBteSAkc2Nv
cGVOYW1lID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsK
ICAgICAkc2NvcGVOYW1lID0gc3Vic3RyICRjbGFzc05hbWUsIDIgdW5sZXNzICRzY29wZU5hbWU7
Ci0gICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcoJHNjb3BlTmFt
ZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOworICAgIHJldHVybiBHZXRKU0J1aWx0aW5G
dW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRzY29wZU5hbWUsICRmdW5jdGlvbi0+bmFtZSk7CiB9CiAK
IHN1YiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nCkBAIC02MTY0LDcgKzYxNzEs
NyBAQCBzdWIgR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZwogc3ViIEdldEpTQnVp
bHRpblNjb3BlTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkb2JqZWN0KSA9IEBfOwotICAg
IHJldHVybiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVu
dGVkQnl9IHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CisgICAgcmV0dXJuICRvYmplY3QtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9IHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5h
bWU7CiB9CiAKIHN1YiBBZGRKU0J1aWx0aW5JbmNsdWRlc0lmTmVlZGVkKCkKQEAgLTYxNzcsMTEg
KzYxODQsMTEgQEAgc3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVzSWZOZWVkZWQoKQogICAgIH0KIAog
ICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0SlNCdWlsdGluU2NvcGVOYW1lKCRpbnRlcmZhY2Us
ICRmdW5jdGlvbikgLiAiQnVpbHRpbnMuaCIsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRm
dW5jdGlvbik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFt
ZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pIC4gIkJ1aWx0aW5zLmgiLCAkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwg
JGZ1bmN0aW9uKTsKICAgICB9CiAKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVy
ZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0SlNCdWls
dGluU2NvcGVOYW1lKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpIC4gIkJ1aWx0aW5zLmgiLCAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkgaWYg
SXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSAuICJC
dWlsdGlucy5oIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9
KSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCShyZXZp
c2lvbiAyMDgxMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETFBhcnNl
ci5wbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNzYgKzM3LDgxIEBAIHVzZSBjb25zdGFudCBPdGhl
clRva2VuID0+IDQ7CiB1c2UgY29uc3RhbnQgRW1wdHlUb2tlbiA9PiA1OwogCiAjIFVzZWQgdG8g
cmVwcmVzZW50IGEgcGFyc2VkIElETCBkb2N1bWVudAotc3RydWN0KCBpZGxEb2N1bWVudCA9PiB7
Ci0gICAgaW50ZXJmYWNlcyA9PiAnQCcsICMgTGlzdCBvZiAnZG9tSW50ZXJmYWNlJwotICAgIGVu
dW1lcmF0aW9ucyA9PiAnQCcsICMgTGlzdCBvZiAnZG9tRW51bScKLSAgICBkaWN0aW9uYXJpZXMg
PT4gJ0AnLCAjIExpc3Qgb2YgJ2RvbURpY3Rpb25hcnknCitzdHJ1Y3QoIElETERvY3VtZW50ID0+
IHsKKyAgICBpbnRlcmZhY2VzID0+ICdAJywgIyBMaXN0IG9mICdJRExJbnRlcmZhY2UnCisgICAg
ZW51bWVyYXRpb25zID0+ICdAJywgIyBMaXN0IG9mICdJRExFbnVtJworICAgIGRpY3Rpb25hcmll
cyA9PiAnQCcsICMgTGlzdCBvZiAnSURMRGljdGlvbmFyeScKICAgICBmaWxlTmFtZSA9PiAnJCcs
CiB9KTsKIAotc3RydWN0KCBkb21UeXBlID0+IHsKKyMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jaWRsLXR5cGVzCitzdHJ1Y3QoIElETFR5cGUgPT4gewogICAgIG5hbWUgPT4gICAg
ICAgICAnJCcsICMgVHlwZSBpZGVudGlmaWVyCiAgICAgaXNOdWxsYWJsZSA9PiAgICckJywgIyBJ
cyB0aGUgdHlwZSBOdWxsYWJsZSAoVD8pCiAgICAgaXNVbmlvbiA9PiAgICAgICckJywgIyBJcyB0
aGUgdHlwZSBhIHVuaW9uIChUIG9yIFUpCiAgICAgc3VidHlwZXMgPT4gICAgICdAJywgIyBBcnJh
eSBvZiBzdWJ0eXBlcywgb25seSB2YWxpZCBpZiBpc1VuaW9uIG9yIHNlcXVlbmNlCiB9KTsKIAot
IyBVc2VkIHRvIHJlcHJlc2VudCBhIG1hcCBvZiAndmFyaWFibGUgbmFtZScgPC0+ICd2YXJpYWJs
ZSB0eXBlJwotc3RydWN0KCBkb21TaWduYXR1cmUgPT4gewotICAgIGRpcmVjdGlvbiA9PiAnJCcs
ICAgIyBWYXJpYWJsZSBkaXJlY3Rpb24gKGluIG9yIG91dCkKLSAgICBuYW1lID0+ICckJywgICAg
ICAgICMgVmFyaWFibGUgbmFtZQotICAgIHR5cGUgPT4gJ2RvbVR5cGUnLCAgIyBWYXJpYWJsZSB0
eXBlCi0gICAgc3BlY2lhbHMgPT4gJ0AnLCAgICAjIFNwZWNpYWxzCi0gICAgZXh0ZW5kZWRBdHRy
aWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCi0gICAgaXNWYXJpYWRpYyA9PiAn
JCcsICAjIElzIHZhcmlhYmxlIHZhcmlhZGljIChsb25nLi4uIG51bWJlcnMpCi0gICAgaXNPcHRp
b25hbCA9PiAnJCcsICAjIElzIHZhcmlhYmxlIG9wdGlvbmFsIChvcHRpb25hbCBUKQotICAgIGRl
ZmF1bHQgPT4gJyQnLCAgICAgIyBEZWZhdWx0IHZhbHVlIGZvciBwYXJhbWV0ZXJzCi19KTsKLQog
IyBVc2VkIHRvIHJlcHJlc2VudCAnaW50ZXJmYWNlJyBibG9ja3MKLXN0cnVjdCggZG9tSW50ZXJm
YWNlID0+IHsKLSAgICB0eXBlID0+ICdkb21UeXBlJywgIyBDbGFzcyB0eXBlCi0gICAgcGFyZW50
VHlwZSA9PiAnZG9tVHlwZScsICMgUGFyZW50IGNsYXNzIHR5cGUKLSAgICBjb25zdGFudHMgPT4g
J0AnLCAgICAjIExpc3Qgb2YgJ2RvbUNvbnN0YW50JwotICAgIGZ1bmN0aW9ucyA9PiAnQCcsICAg
ICMgTGlzdCBvZiAnZG9tRnVuY3Rpb24nCi0gICAgYW5vbnltb3VzRnVuY3Rpb25zID0+ICdAJywg
IyBMaXN0IG9mICdkb21GdW5jdGlvbicKLSAgICBhdHRyaWJ1dGVzID0+ICdAJywgICAgIyBMaXN0
IG9mICdkb21BdHRyaWJ1dGUnICAgIAotICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsICMg
RXh0ZW5kZWQgYXR0cmlidXRlcwotICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29uc3RydWN0
b3JzLCBsaXN0IG9mICdkb21GdW5jdGlvbicKLSAgICBjdXN0b21Db25zdHJ1Y3RvcnMgPT4gJ0An
LCAjIEN1c3RvbSBjb25zdHJ1Y3RvcnMsIGxpc3Qgb2YgJ2RvbUZ1bmN0aW9uJworc3RydWN0KCBJ
RExJbnRlcmZhY2UgPT4geworICAgIHR5cGUgPT4gJ0lETFR5cGUnLAorICAgIHBhcmVudFR5cGUg
PT4gJ0lETFR5cGUnLAorICAgIGNvbnN0YW50cyA9PiAnQCcsICAgICMgTGlzdCBvZiAnSURMQ29u
c3RhbnQnCisgICAgZnVuY3Rpb25zID0+ICdAJywgICAgIyBMaXN0IG9mICdJRExPcGVyYXRpb24n
CisgICAgYW5vbnltb3VzRnVuY3Rpb25zID0+ICdAJywgIyBMaXN0IG9mICdJRExPcGVyYXRpb24n
CisgICAgYXR0cmlidXRlcyA9PiAnQCcsICAgICMgTGlzdCBvZiAnSURMQXR0cmlidXRlJyAgICAK
KyAgICBjb25zdHJ1Y3RvcnMgPT4gJ0AnLCAjIENvbnN0cnVjdG9ycywgbGlzdCBvZiAnSURMT3Bl
cmF0aW9uJworICAgIGN1c3RvbUNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ3VzdG9tIGNvbnN0cnVj
dG9ycywgbGlzdCBvZiAnSURMT3BlcmF0aW9uJwogICAgIGlzRXhjZXB0aW9uID0+ICckJywgIyBV
c2VkIGZvciBleGNlcHRpb24gaW50ZXJmYWNlcwogICAgIGlzQ2FsbGJhY2sgPT4gJyQnLCAjIFVz
ZWQgZm9yIGNhbGxiYWNrIGludGVyZmFjZXMKICAgICBpc1BhcnRpYWwgPT4gJyQnLCAjIFVzZWQg
Zm9yIHBhcnRpYWwgaW50ZXJmYWNlcwogICAgIGl0ZXJhYmxlID0+ICckJywgIyBVc2VkIGZvciBp
dGVyYWJsZSBpbnRlcmZhY2VzCiAgICAgc2VyaWFsaXphYmxlID0+ICckJywgIyBVc2VkIGZvciBz
ZXJpYWxpemFibGUgaW50ZXJmYWNlcworICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsCiB9
KTsKIAotIyBVc2VkIHRvIHJlcHJlc2VudCBkb21JbnRlcmZhY2UgY29udGVudHMgKG5hbWUgb2Yg
bWV0aG9kLCBzaWduYXR1cmUpCi1zdHJ1Y3QoIGRvbUZ1bmN0aW9uID0+IHsKKyMgVXNlZCB0byBy
ZXByZXNlbnQgYW4gYXJndW1lbnQgdG8gYSBJRExPcGVyYXRpb24uCitzdHJ1Y3QoIElETEFyZ3Vt
ZW50ID0+IHsKKyAgICBuYW1lID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywKKyAgICBp
c1ZhcmlhZGljID0+ICckJywKKyAgICBpc09wdGlvbmFsID0+ICckJywKKyAgICBkZWZhdWx0ID0+
ICckJywKKyAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAorfSk7CisKKyMgaHR0cHM6Ly9o
ZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLW9wZXJhdGlvbnMKK3N0cnVjdCggSURMT3BlcmF0
aW9uID0+IHsKKyAgICBuYW1lID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywgIyBSZXR1
cm4gdHlwZQorICAgIGFyZ3VtZW50cyA9PiAnQCcsICMgTGlzdCBvZiAnSURMQXJndW1lbnQnCiAg
ICAgaXNTdGF0aWMgPT4gJyQnLAotICAgIHNpZ25hdHVyZSA9PiAnZG9tU2lnbmF0dXJlJywgIyBS
ZXR1cm4gdHlwZS9PYmplY3QgbmFtZS9leHRlbmRlZCBhdHRyaWJ1dGVzCi0gICAgcGFyYW1ldGVy
cyA9PiAnQCcsICMgTGlzdCBvZiAnZG9tU2lnbmF0dXJlJworICAgIHNwZWNpYWxzID0+ICdAJywK
KyAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAogfSk7CiAKLSMgVXNlZCB0byByZXByZXNl
bnQgZG9tSW50ZXJmYWNlIGNvbnRlbnRzIChuYW1lIG9mIGF0dHJpYnV0ZSwgc2lnbmF0dXJlKQot
c3RydWN0KCBkb21BdHRyaWJ1dGUgPT4geworCisjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2lkbC1hdHRyaWJ1dGVzCitzdHJ1Y3QoIElETEF0dHJpYnV0ZSA9PiB7CisgICAgbmFt
ZSA9PiAnJCcsCisgICAgdHlwZSA9PiAnSURMVHlwZScsCiAgICAgaXNTdGF0aWMgPT4gJyQnLAog
ICAgIGlzU3RyaW5naWZpZXIgPT4gJyQnLAogICAgIGlzUmVhZE9ubHkgPT4gJyQnLAotICAgIHNp
Z25hdHVyZSA9PiAnZG9tU2lnbmF0dXJlJywgIyBBdHRyaWJ1dGUgc2lnbmF0dXJlCisgICAgZXh0
ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywKIH0pOwogCi0jIFVzZWQgdG8gcmVwcmVzZW50IEl0ZXJh
YmxlIGludGVyZmFjZXMKLXN0cnVjdCggZG9tSXRlcmFibGUgPT4gewotICAgIGlzS2V5VmFsdWUg
PT4gJyQnLCMgSXMgbWFwIGl0ZXJhYmxlIG9yIHNldCBpdGVyYWJsZQotICAgIGtleVR5cGUgPT4g
J2RvbVR5cGUnLCAjIEtleSB0eXBlIGZvciBtYXAgaXRlcmFibGVzCi0gICAgdmFsdWVUeXBlID0+
ICdkb21UeXBlJywgIyBWYWx1ZSB0eXBlIGZvciBtYXAgb3Igc2V0IGl0ZXJhYmxlcworIyBodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtaXRlcmFibGUKK3N0cnVjdCggSURMSXRl
cmFibGUgPT4geworICAgIGlzS2V5VmFsdWUgPT4gJyQnLAorICAgIGtleVR5cGUgPT4gJ0lETFR5
cGUnLAorICAgIHZhbHVlVHlwZSA9PiAnSURMVHlwZScsCiAgICAgZnVuY3Rpb25zID0+ICdAJywg
IyBJdGVyYWJsZSBmdW5jdGlvbnMgKGVudHJpZXMsIGtleXMsIHZhbHVlcywgW1N5bWJvbC5JdGVy
YXRvcl0sIGZvckVhY2gpCi0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRl
ZCBhdHRyaWJ1dGVzCisgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywKIH0pOwogCi0jIFVz
ZWQgdG8gcmVwcmVzZW50IHNlcmlhbGl6YWJsZSBpbnRlcmZhY2UKLXN0cnVjdCggZG9tU2VyaWFs
aXphYmxlID0+IHsKKyMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLXNlcmlh
bGl6ZXJzCitzdHJ1Y3QoIElETFNlcmlhbGl6YWJsZSA9PiB7CiAgICAgYXR0cmlidXRlcyA9PiAn
QCcsICMgTGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHNlcmlhbGl6ZQogICAgIGhhc0F0dHJpYnV0ZSA9
PiAnJCcsICMgc2VyaWFsaXplciA9IHsgYXR0cmlidXRlIH0KICAgICBoYXNJbmhlcml0ID0+ICck
JywgIyBzZXJpYWxpemVyID0geyBpbmhlcml0IH0KQEAgLTExNCwzOSArMTE5LDUwIEBAIHN0cnVj
dCggZG9tU2VyaWFsaXphYmxlID0+IHsKICAgICBmdW5jdGlvbnMgPT4gJ0AnLCAjIHRvSlNPTiBm
dW5jdGlvbgogfSk7CiAKLSMgVXNlZCB0byByZXByZXNlbnQgc3RyaW5nIGNvbnN0YW50cwotc3Ry
dWN0KCBkb21Db25zdGFudCA9PiB7Ci0gICAgbmFtZSA9PiAnJCcsICMgRE9NIENvbnN0YW50IGlk
ZW50aWZpZXIKLSAgICB0eXBlID0+ICdkb21UeXBlJywgIyBUeXBlIG5hbWUgb2YgZGF0YQotICAg
IHZhbHVlID0+ICckJywgIyBDb25zdGFudCB2YWx1ZQotICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9
PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcworIyBodHRwczovL2hleWNhbS5naXRodWIuaW8v
d2ViaWRsLyNpZGwtY29uc3RhbnRzCitzdHJ1Y3QoIElETENvbnN0YW50ID0+IHsKKyAgICBuYW1l
ID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywKKyAgICB2YWx1ZSA9PiAnJCcsCisgICAg
ZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywKK30pOworCisjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2lkbC1lbnVtcworc3RydWN0KCBJRExFbnVtID0+IHsKKyAgICBuYW1lID0+
ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywKKyAgICB2YWx1ZXMgPT4gJ0AnLAorICAgIGV4
dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsCiB9KTsKIAotIyBVc2VkIHRvIHJlcHJlc2VudCAnZW51
bScgZGVmaW5pdGlvbnMKLXN0cnVjdCggZG9tRW51bSA9PiB7Ci0gICAgbmFtZSA9PiAnJCcsICMg
RW51bWVyYXRpb24gaWRlbnRpZmllcgotICAgIHR5cGUgPT4gJ2RvbVR5cGUnLCAjIEVudW1lcmF0
aW9uIHR5cGUKLSAgICB2YWx1ZXMgPT4gJ0AnLCAjIEVudW1lcmF0aW9uIHZhbHVlcyAobGlzdCBv
ZiB1bmlxdWUgc3RyaW5ncykKKworc3RydWN0KCBJRExEaWN0aW9uYXJ5TWVtYmVyID0+IHsKKyAg
ICBuYW1lID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywKKyAgICBpc1JlcXVpcmVkID0+
ICckJywKKyAgICBkZWZhdWx0ID0+ICckJywKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQn
LAogfSk7CiAKLXN0cnVjdCggZG9tRGljdGlvbmFyeSA9PiB7Ci0gICAgdHlwZSA9PiAnZG9tVHlw
ZScsICMgRGljdGlvbmFyeSB0eXBlCi0gICAgcGFyZW50VHlwZSA9PiAnZG9tVHlwZScsICAjIFBh
cmVudCB0eXBlIGlkZW50aWZpZXIKLSAgICBtZW1iZXJzID0+ICdAJywgIyBMaXN0IG9mICdkb21T
aWduYXR1cmUnCisKKyMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLWRpY3Rp
b25hcmllcworc3RydWN0KCBJRExEaWN0aW9uYXJ5ID0+IHsKKyAgICB0eXBlID0+ICdJRExUeXBl
JywKKyAgICBwYXJlbnRUeXBlID0+ICdJRExUeXBlJywKKyAgICBtZW1iZXJzID0+ICdAJywgIyBM
aXN0IG9mICdJRExEaWN0aW9uYXJ5TWVtYmVyJwogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAn
JCcsCiB9KTsKIAorIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtZW51bXMK
K3N0cnVjdCggSURMVHlwZWRlZiA9PiB7CisgICAgdHlwZSA9PiAnSURMVHlwZScsCit9KTsKKwog
c3RydWN0KCBUb2tlbiA9PiB7CiAgICAgdHlwZSA9PiAnJCcsICMgdHlwZSBvZiB0b2tlbgogICAg
IHZhbHVlID0+ICckJyAjIHZhbHVlIG9mIHRva2VuCiB9KTsKIAotc3RydWN0KCBUeXBlZGVmID0+
IHsKLSAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVkIGF0dHJpYnV0ZXMK
LSAgICB0eXBlID0+ICdkb21UeXBlJywgIyBUeXBlIG9mIGRhdGEKLX0pOwotCiAjIE1hcHMgJ3R5
cGVkZWYgbmFtZScgLT4gVHlwZWRlZgogbXkgJXR5cGVkZWZzID0gKCk7CiAKQEAgLTI1MSwxNCAr
MjY3LDE0IEBAIHN1YiBQYXJzZQogICAgIH07CiAgICAgYXNzZXJ0ICRAIC4gIiBpbiAkZmlsZU5h
bWUiIGlmICRAOwogCi0gICAgbXkgJGRvY3VtZW50ID0gaWRsRG9jdW1lbnQtPm5ldygpOworICAg
IG15ICRkb2N1bWVudCA9IElETERvY3VtZW50LT5uZXcoKTsKICAgICAkZG9jdW1lbnQtPmZpbGVO
YW1lKCRmaWxlTmFtZSk7CiAgICAgZm9yZWFjaCBteSAkZGVmaW5pdGlvbiAoQGRlZmluaXRpb25z
KSB7Ci0gICAgICAgIGlmIChyZWYoJGRlZmluaXRpb24pIGVxICJkb21JbnRlcmZhY2UiKSB7Cisg
ICAgICAgIGlmIChyZWYoJGRlZmluaXRpb24pIGVxICJJRExJbnRlcmZhY2UiKSB7CiAgICAgICAg
ICAgICBwdXNoKEB7JGRvY3VtZW50LT5pbnRlcmZhY2VzfSwgJGRlZmluaXRpb24pOwotICAgICAg
ICB9IGVsc2lmIChyZWYoJGRlZmluaXRpb24pIGVxICJkb21FbnVtIikgeworICAgICAgICB9IGVs
c2lmIChyZWYoJGRlZmluaXRpb24pIGVxICJJRExFbnVtIikgewogICAgICAgICAgICAgcHVzaChA
eyRkb2N1bWVudC0+ZW51bWVyYXRpb25zfSwgJGRlZmluaXRpb24pOwotICAgICAgICB9IGVsc2lm
IChyZWYoJGRlZmluaXRpb24pIGVxICJkb21EaWN0aW9uYXJ5IikgeworICAgICAgICB9IGVsc2lm
IChyZWYoJGRlZmluaXRpb24pIGVxICJJRExEaWN0aW9uYXJ5IikgewogICAgICAgICAgICAgcHVz
aChAeyRkb2N1bWVudC0+ZGljdGlvbmFyaWVzfSwgJGRlZmluaXRpb24pOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgZGllICJVbnJlY29nbml6ZWQgSURMIGRlZmluaXRpb24ga2luZDog
XCIiIC4gcmVmKCRkZWZpbml0aW9uKSAuICJcIiI7CkBAIC0zNjIsNyArMzc4LDcgQEAgc3ViIG1h
a2VTaW1wbGVUeXBlCiB7CiAgICAgbXkgJHR5cGVOYW1lID0gc2hpZnQ7CiAKLSAgICBteSAkdHlw
ZSA9IGRvbVR5cGUtPm5ldygpOworICAgIG15ICR0eXBlID0gSURMVHlwZS0+bmV3KCk7CiAgICAg
JHR5cGUtPm5hbWUoJHR5cGVOYW1lKTsKICAgICAKICAgICByZXR1cm4gJHR5cGU7CkBAIC0zNzMs
NyArMzg5LDcgQEAgc3ViIGNsb25lVHlwZQogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkg
JHR5cGUgPSBzaGlmdDsKIAotICAgIG15ICRjbG9uZWRUeXBlID0gZG9tVHlwZS0+bmV3KCk7Cisg
ICAgbXkgJGNsb25lZFR5cGUgPSBJRExUeXBlLT5uZXcoKTsKICAgICAkY2xvbmVkVHlwZS0+bmFt
ZSgkdHlwZS0+bmFtZSk7CiAgICAgJGNsb25lZFR5cGUtPmlzTnVsbGFibGUoJHR5cGUtPmlzTnVs
bGFibGUpOwogICAgICRjbG9uZWRUeXBlLT5pc1VuaW9uKCR0eXBlLT5pc1VuaW9uKTsKQEAgLTQ0
MSw4NCArNDU3LDYxIEBAIHN1YiBhcHBseVR5cGVkZWZzCiAgICAgaWYgKCEldHlwZWRlZnMpIHsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICAjIEZJWE1FOiBBZGQgc3VwcG9ydCBm
b3IgYXBwbHlpbmcgdHlwZWRlZnMgdG8gSURMSXRlcmFibGUuCiAgICAgZm9yZWFjaCBteSAkZGVm
aW5pdGlvbiAoQCRkZWZpbml0aW9ucykgewotICAgICAgICBpZiAocmVmKCRkZWZpbml0aW9uKSBl
cSAiZG9tSW50ZXJmYWNlIikgeworICAgICAgICBpZiAocmVmKCRkZWZpbml0aW9uKSBlcSAiSURM
SW50ZXJmYWNlIikgewogICAgICAgICAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGRlZmlu
aXRpb24tPmNvbnN0YW50c30pIHsKLSAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICR0eXBlZGVm
c3skY29uc3RhbnQtPnR5cGUtPm5hbWV9KSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICR0eXBl
ZGVmID0gJHR5cGVkZWZzeyRjb25zdGFudC0+dHlwZS0+bmFtZX07Ci0gICAgICAgICAgICAgICAg
ICAgICRzZWxmLT5hc3NlcnROb0V4dGVuZGVkQXR0cmlidXRlc0luVHlwZWRlZigkY29uc3RhbnQt
PnR5cGUtPm5hbWUsIF9fTElORV9fKTsKLQotICAgICAgICAgICAgICAgICAgICBteSAkY2xvbmVk
VHlwZSA9ICRzZWxmLT5jbG9uZVR5cGUoJHR5cGVkZWYtPnR5cGUpOwotICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgICAgICAjIFJldGFpbiBudWxsYWJpbGl0eSBmcm9tIHRoZSBvcmln
aW5hbCB0eXBlLgotICAgICAgICAgICAgICAgICAgICAkY2xvbmVkVHlwZS0+aXNOdWxsYWJsZSgk
Y29uc3RhbnQtPnR5cGUtPmlzTnVsbGFibGUpOwotCi0gICAgICAgICAgICAgICAgICAgICRjb25z
dGFudC0+dHlwZSgkY2xvbmVkVHlwZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICRjb25zdGFudC0+dHlwZSgkc2VsZi0+dHlwZUJ5QXBwbHlpbmdUeXBlZGVmcygkY29uc3Rh
bnQtPnR5cGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJp
YnV0ZSAoQHskZGVmaW5pdGlvbi0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICAgICAkc2Vs
Zi0+YXBwbHlUeXBlZGVmc0ZvclNpZ25hdHVyZSgkYXR0cmlidXRlLT5zaWduYXR1cmUpOworICAg
ICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnR5cGUoJHNlbGYtPnR5cGVCeUFwcGx5aW5nVHlwZWRl
ZnMoJGF0dHJpYnV0ZS0+dHlwZSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEB7JGRlZmluaXRpb24tPmZ1bmN0aW9uc30sIEB7JGRlZmluaXRpb24t
PmFub255bW91c0Z1bmN0aW9uc30sIEB7JGRlZmluaXRpb24tPmNvbnN0cnVjdG9yc30sIEB7JGRl
ZmluaXRpb24tPmN1c3RvbUNvbnN0cnVjdG9yc30pIHsKLSAgICAgICAgICAgICAgICAkc2VsZi0+
YXBwbHlUeXBlZGVmc0ZvclNpZ25hdHVyZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSk7Ci0gICAgICAg
ICAgICAgICAgZm9yZWFjaCBteSAkc2lnbmF0dXJlIChAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc30p
IHsKLSAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmFwcGx5VHlwZWRlZnNGb3JTaWduYXR1cmUo
JHNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+dHlwZSkgeworICAg
ICAgICAgICAgICAgICAgICAkZnVuY3Rpb24tPnR5cGUoJHNlbGYtPnR5cGVCeUFwcGx5aW5nVHlw
ZWRlZnMoJGZ1bmN0aW9uLT50eXBlKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7Cisg
ICAgICAgICAgICAgICAgICAgICRhcmd1bWVudC0+dHlwZSgkc2VsZi0+dHlwZUJ5QXBwbHlpbmdU
eXBlZGVmcygkYXJndW1lbnQtPnR5cGUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9Ci0gICAgICAgIH0gZWxzaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgImRvbURpY3Rpb25hcnki
KSB7CisgICAgICAgIH0gZWxzaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgIklETERpY3Rpb25hcnki
KSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXIgKEB7JGRlZmluaXRpb24tPm1lbWJl
cnN9KSB7Ci0gICAgICAgICAgICAgICAgJHNlbGYtPmFwcGx5VHlwZWRlZnNGb3JTaWduYXR1cmUo
JG1lbWJlcik7CisgICAgICAgICAgICAgICAgJG1lbWJlci0+dHlwZSgkc2VsZi0+dHlwZUJ5QXBw
bHlpbmdUeXBlZGVmcygkbWVtYmVyLT50eXBlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CiB9CiAKLXN1YiBhcHBseVR5cGVkZWZzRm9yU2lnbmF0dXJlCitzdWIgdHlwZUJ5QXBw
bHlpbmdUeXBlZGVmcwogewogICAgIG15ICRzZWxmID0gc2hpZnQ7Ci0gICAgbXkgJHNpZ25hdHVy
ZSA9IHNoaWZ0OwotCi0gICAgaWYgKCFkZWZpbmVkICgkc2lnbmF0dXJlLT50eXBlKSkgewotICAg
ICAgICByZXR1cm47Ci0gICAgfQorICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKLSAgICBteSAkdHlw
ZU5hbWUgPSAkc2lnbmF0dXJlLT50eXBlLT5uYW1lOworICAgIGFzc2VydCgiTWlzc2luZyB0eXBl
IikgaWYgISR0eXBlOwogCi0gICAgIyBIYW5kbGUgdW5pb24gdHlwZXMsIHNlcXVlbmNlcyBhbmQg
ZXRjLgotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJlY3Vyc2l2ZS4KLSAgICBteSAkbnVt
YmVyT2ZTdWJ0eXBlcyA9IHNjYWxhciBAeyRzaWduYXR1cmUtPnR5cGUtPnN1YnR5cGVzfTsKKyAg
ICBteSAkbnVtYmVyT2ZTdWJ0eXBlcyA9IHNjYWxhciBAeyR0eXBlLT5zdWJ0eXBlc307CiAgICAg
aWYgKCRudW1iZXJPZlN1YnR5cGVzKSB7CiAgICAgICAgIGZvciBteSAkaSAoMC4uJG51bWJlck9m
U3VidHlwZXMgLSAxKSB7Ci0gICAgICAgICAgICBteSAkc3VidHlwZSA9IEB7JHNpZ25hdHVyZS0+
dHlwZS0+c3VidHlwZXN9WyRpXTsKLSAgICAgICAgICAgIG15ICRzdWJ0eXBlTmFtZSA9ICRzdWJ0
eXBlLT5uYW1lOwotCi0gICAgICAgICAgICBpZiAoZXhpc3RzICR0eXBlZGVmc3skc3VidHlwZU5h
bWV9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJHR5cGVkZWYgPSAkdHlwZWRlZnN7JHN1YnR5cGVO
YW1lfTsKLQotICAgICAgICAgICAgICAgIG15ICRjbG9uZWRUeXBlID0gJHNlbGYtPmNsb25lVHlw
ZSgkdHlwZWRlZi0+dHlwZSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgIyBS
ZXRhaW4gbnVsbGFiaWxpdHkgZnJvbSB0aGUgb3JpZ2luYWwgdHlwZS4KLSAgICAgICAgICAgICAg
ICAkY2xvbmVkVHlwZS0+aXNOdWxsYWJsZSgkc3VidHlwZS0+aXNOdWxsYWJsZSk7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgQHskc2lnbmF0dXJlLT50eXBlLT5zdWJ0eXBlc31b
JGldID0gJGNsb25lZFR5cGU7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBteSAkc3VidHlw
ZSA9IEB7JHR5cGUtPnN1YnR5cGVzfVskaV07CisgICAgICAgICAgICBteSAkcmVwbGFjZW1lbnRT
dWJ0eXBlID0gJHNlbGYtPnR5cGVCeUFwcGx5aW5nVHlwZWRlZnMoJHN1YnR5cGUpOworICAgICAg
ICAgICAgQHskdHlwZS0+c3VidHlwZXN9WyRpXSA9ICRyZXBsYWNlbWVudFN1YnR5cGUKICAgICAg
ICAgfQotICAgIAotICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmV0dXJuICR0eXBlOwogICAg
IH0KIAotICAgIGlmIChleGlzdHMgJHR5cGVkZWZzeyR0eXBlTmFtZX0pIHsKLSAgICAgICAgbXkg
JHR5cGVkZWYgPSAkdHlwZWRlZnN7JHR5cGVOYW1lfTsKKyAgICBpZiAoZXhpc3RzICR0eXBlZGVm
c3skdHlwZS0+bmFtZX0pIHsKKyAgICAgICAgbXkgJHR5cGVkZWYgPSAkdHlwZWRlZnN7JHR5cGUt
Pm5hbWV9OwogCiAgICAgICAgIG15ICRjbG9uZWRUeXBlID0gJHNlbGYtPmNsb25lVHlwZSgkdHlw
ZWRlZi0+dHlwZSk7Ci0gICAgICAgIAotICAgICAgICAjIFJldGFpbiBudWxsYWJpbGl0eSBmcm9t
IHRoZSBvcmlnaW5hbCB0eXBlLgotICAgICAgICAkY2xvbmVkVHlwZS0+aXNOdWxsYWJsZSgkc2ln
bmF0dXJlLT50eXBlLT5pc051bGxhYmxlKTsKKyAgICAgICAgJGNsb25lZFR5cGUtPmlzTnVsbGFi
bGUoJGNsb25lZFR5cGUtPmlzTnVsbGFibGUgfHwgJHR5cGUtPmlzTnVsbGFibGUpOwogCi0gICAg
ICAgICRzaWduYXR1cmUtPnR5cGUoJGNsb25lZFR5cGUpOwotCi0gICAgICAgIGNvcHlFeHRlbmRl
ZEF0dHJpYnV0ZXMoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkdHlwZWRlZi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuICRjbG9uZWRUeXBlOwogICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gJHR5cGU7CiB9CiAKIHN1YiBwYXJzZURlZmluaXRpb24KQEAgLTU5MSw3
ICs1ODQsNyBAQCBzdWIgcGFyc2VJbnRlcmZhY2UKIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5l
eHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiaW50ZXJmYWNlIikgewotICAg
ICAgICBteSAkaW50ZXJmYWNlID0gZG9tSW50ZXJmYWNlLT5uZXcoKTsKKyAgICAgICAgbXkgJGlu
dGVyZmFjZSA9IElETEludGVyZmFjZS0+bmV3KCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tl
blZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiaW50ZXJmYWNlIiwgX19MSU5FX18pOwogICAgICAg
ICBteSAkaW50ZXJmYWNlTmFtZVRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblR5cGUoJGludGVyZmFjZU5hbWVUb2tlbiwgSWRlbnRpZmllclRva2Vu
KTsKQEAgLTcwOCw3ICs3MDEsNyBAQCBzdWIgcGFyc2VEaWN0aW9uYXJ5CiAKICAgICBteSAkbmV4
dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgImRpY3Rp
b25hcnkiKSB7Ci0gICAgICAgIG15ICRkaWN0aW9uYXJ5ID0gZG9tRGljdGlvbmFyeS0+bmV3KCk7
CisgICAgICAgIG15ICRkaWN0aW9uYXJ5ID0gSURMRGljdGlvbmFyeS0+bmV3KCk7CiAgICAgICAg
ICRkaWN0aW9uYXJ5LT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiZGlj
dGlvbmFyeSIsIF9fTElORV9fKTsKIApAQCAtNzU5LDEyICs3NTIsMTIgQEAgc3ViIHBhcnNlRGlj
dGlvbmFyeU1lbWJlcgogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAg
aWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpID1+
IC8kbmV4dEV4Y2VwdGlvbkZpZWxkXzEvKSB7Ci0gICAgICAgIG15ICRtZW1iZXIgPSBkb21TaWdu
YXR1cmUtPm5ldygpOwotICAgICAgICBpZiAoJG5leHQtPnZhbHVlIG5lICJyZXF1aXJlZCIpIHsK
LSAgICAgICAgICAgICRtZW1iZXItPmlzT3B0aW9uYWwoMSk7Ci0gICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgIG15ICRtZW1iZXIgPSBJRExEaWN0aW9uYXJ5TWVtYmVyLT5uZXcoKTsKKyAgICAgICAg
aWYgKCRuZXh0LT52YWx1ZSBlcSAicmVxdWlyZWQiKSB7CiAgICAgICAgICAgICAkc2VsZi0+YXNz
ZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgInJlcXVpcmVkIiwgX19MSU5FX18pOwot
ICAgICAgICAgICAgJG1lbWJlci0+aXNPcHRpb25hbCgwKTsKKyAgICAgICAgICAgICRtZW1iZXIt
PmlzUmVxdWlyZWQoMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAkbWVtYmVyLT5p
c1JlcXVpcmVkKDApOwogICAgICAgICB9CiAgICAgICAgICRtZW1iZXItPmV4dGVuZGVkQXR0cmli
dXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIApAQCAtODMzLDcgKzgyNiw3IEBAIHN1YiBw
YXJzZUV4Y2VwdGlvbgogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAg
aWYgKCRuZXh0LT52YWx1ZSgpIGVxICJleGNlcHRpb24iKSB7Ci0gICAgICAgIG15ICRpbnRlcmZh
Y2UgPSBkb21JbnRlcmZhY2UtPm5ldygpOworICAgICAgICBteSAkaW50ZXJmYWNlID0gSURMSW50
ZXJmYWNlLT5uZXcoKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdl
dFRva2VuKCksICJleGNlcHRpb24iLCBfX0xJTkVfXyk7CiAgICAgICAgIG15ICRleGNlcHRpb25O
YW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VHlwZSgkZXhjZXB0aW9uTmFtZVRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwpAQCAtODk5LDcgKzg5
Miw3IEBAIHN1YiBwYXJzZUVudW0KIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigp
OwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiZW51bSIpIHsKLSAgICAgICAgbXkgJGVudW0g
PSBkb21FbnVtLT5uZXcoKTsKKyAgICAgICAgbXkgJGVudW0gPSBJRExFbnVtLT5uZXcoKTsKICAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJlbnVtIiwg
X19MSU5FX18pOwogICAgICAgICBteSAkZW51bU5hbWVUb2tlbiA9ICRzZWxmLT5nZXRUb2tlbigp
OwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCRlbnVtTmFtZVRva2VuLCBJZGVudGlm
aWVyVG9rZW4pOwpAQCAtOTc4LDggKzk3MSw3IEBAIHN1YiBwYXJzZVR5cGVkZWYKICAgICBteSAk
bmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgInR5
cGVkZWYiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tl
bigpLCAidHlwZWRlZiIsIF9fTElORV9fKTsKLSAgICAgICAgbXkgJHR5cGVkZWYgPSBUeXBlZGVm
LT5uZXcoKTsKLSAgICAgICAgJHR5cGVkZWYtPmV4dGVuZGVkQXR0cmlidXRlcygkc2VsZi0+cGFy
c2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5KCkpOworICAgICAgICBteSAkdHlwZWRl
ZiA9IElETFR5cGVkZWYtPm5ldygpOwogCiAgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNl
VHlwZSgpOwogICAgICAgICAkdHlwZWRlZi0+dHlwZSgkdHlwZSk7CkBAIC0xMDE4LDcgKzEwMTAs
NyBAQCBzdWIgcGFyc2VDb25zdAogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7
CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJjb25zdCIpIHsKLSAgICAgICAgbXkgJG5ld0Rh
dGFOb2RlID0gZG9tQ29uc3RhbnQtPm5ldygpOworICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBJ
RExDb25zdGFudC0+bmV3KCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxm
LT5nZXRUb2tlbigpLCAiY29uc3QiLCBfX0xJTkVfXyk7CiAgICAgICAgIG15ICR0eXBlID0gJHNl
bGYtPnBhcnNlQ29uc3RUeXBlKCk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgkdHlwZSk7
CkBAIC0xMTMzLDEzICsxMTI1LDEyIEBAIHN1YiBwYXJzZVNlcmlhbGl6ZXIKICAgICAgICAgICAg
ICRuZXdEYXRhTm9kZSA9ICRzZWxmLT5wYXJzZVNlcmlhbGl6ZXJSZXN0KCRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QpOwogICAgICAgICAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkbmV3RGF0YU5vZGUgPSBkb21TZXJpYWxpemFi
bGUtPm5ldygpOworICAgICAgICAgICAgJG5ld0RhdGFOb2RlID0gSURMU2VyaWFsaXphYmxlLT5u
ZXcoKTsKICAgICAgICAgfQogCi0gICAgICAgIG15ICR0b0pTT05GdW5jdGlvbiA9IGRvbUZ1bmN0
aW9uLT5uZXcoKTsKLSAgICAgICAgJHRvSlNPTkZ1bmN0aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0
dXJlLT5uZXcoKSk7Ci0gICAgICAgICR0b0pTT05GdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgICR0b0pTT05GdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJ0b0pTT04iKTsKKyAgICAgICAgbXkgJHRvSlNPTkZ1bmN0
aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAgICAgJHRvSlNPTkZ1bmN0aW9uLT5uYW1l
KCJ0b0pTT04iKTsKKyAgICAgICAgJHRvSlNPTkZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMo
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1
bmN0aW9uc30sICR0b0pTT05GdW5jdGlvbik7CiAKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5FX18pOwpAQCAtMTE3Miw3ICsxMTYz
LDcgQEAgc3ViIHBhcnNlU2VyaWFsaXphdGlvblBhdHRlcm4KICAgICBteSAkbmV4dCA9ICRzZWxm
LT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgInsiKSB7CiAgICAgICAg
ICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAieyIsIF9fTElORV9f
KTsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tU2VyaWFsaXphYmxlLT5uZXcoKTsKKyAg
ICAgICAgbXkgJG5ld0RhdGFOb2RlID0gSURMU2VyaWFsaXphYmxlLT5uZXcoKTsKICAgICAgICAg
JHNlbGYtPnBhcnNlU2VyaWFsaXphdGlvbkF0dHJpYnV0ZXMoJG5ld0RhdGFOb2RlKTsKICAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJ9IiwgX19MSU5F
X18pOwogICAgICAgICByZXR1cm4gJG5ld0RhdGFOb2RlOwpAQCAtMTE4Niw3ICsxMTc3LDcgQEAg
c3ViIHBhcnNlU2VyaWFsaXphdGlvblBhdHRlcm4KICAgICAgICAgJHNlbGYtPmFzc2VydFRva2Vu
VHlwZSgkdG9rZW4sIElkZW50aWZpZXJUb2tlbik7CiAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMs
ICR0b2tlbi0+dmFsdWUoKSk7CiAKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tU2VyaWFs
aXphYmxlLT5uZXcoKTsKKyAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gSURMU2VyaWFsaXphYmxl
LT5uZXcoKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5hdHRyaWJ1dGVzKFxAYXR0cmlidXRlcyk7
CiAKICAgICAgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKQEAgLTExOTcsMjEgKzExODgsMjEgQEAg
c3ViIHBhcnNlU2VyaWFsaXphdGlvblBhdHRlcm4KIHN1YiBwYXJzZVNlcmlhbGl6YXRpb25BdHRy
aWJ1dGVzCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkZG9tU2VyaWFsaXphYmxl
ID0gc2hpZnQ7CisgICAgbXkgJHNlcmlhbGl6YWJsZSA9IHNoaWZ0OwogICAgIG15ICR0b2tlbiA9
ICRzZWxmLT5nZXRUb2tlbigpOwogCiAgICAgaWYgKCR0b2tlbi0+dmFsdWUoKSBlcSAiZ2V0dGVy
IikgewotICAgICAgICAkZG9tU2VyaWFsaXphYmxlLT5oYXNHZXR0ZXIoMSk7CisgICAgICAgICRz
ZXJpYWxpemFibGUtPmhhc0dldHRlcigxKTsKICAgICAgICAgZGllICJTZXJpYWxpemVyIGdldHRl
ciBrZXl3b3JkIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiI7CiAKICAgICB9CiAgICAgaWYg
KCR0b2tlbi0+dmFsdWUoKSBlcSAiaW5oZXJpdCIpIHsKLSAgICAgICAgJGRvbVNlcmlhbGl6YWJs
ZS0+aGFzSW5oZXJpdCgxKTsKKyAgICAgICAgJHNlcmlhbGl6YWJsZS0+aGFzSW5oZXJpdCgxKTsK
ICAgICAgICAgZGllICJTZXJpYWxpemVyIGluaGVyaXQga2V5d29yZCBpcyBub3QgY3VycmVudGx5
IHN1cHBvcnRlZC4iOwogICAgIH0KIAogICAgIGlmICgkdG9rZW4tPnZhbHVlKCkgZXEgImF0dHJp
YnV0ZSIpIHsKLSAgICAgICAgJGRvbVNlcmlhbGl6YWJsZS0+aGFzQXR0cmlidXRlKDEpOworICAg
ICAgICAkc2VyaWFsaXphYmxlLT5oYXNBdHRyaWJ1dGUoMSk7CiAgICAgICAgICMgQXR0cmlidXRl
cyB3aWxsIGJlIGZpbGxlZCBpbiB2aWEgYXBwbHlNZW1iZXJMaXN0KCkKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEyMjAsNyArMTIxMSw3IEBAIHN1YiBwYXJzZVNlcmlhbGl6YXRpb25BdHRy
aWJ1dGVzCiAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkdG9rZW4sIElkZW50aWZpZXJUb2tl
bik7CiAgICAgcHVzaChAYXR0cmlidXRlcywgJHRva2VuLT52YWx1ZSgpKTsKICAgICBwdXNoKEBh
dHRyaWJ1dGVzLCBAeyRzZWxmLT5wYXJzZUlkZW50aWZpZXJzKCl9KTsKLSAgICAkZG9tU2VyaWFs
aXphYmxlLT5hdHRyaWJ1dGVzKFxAYXR0cmlidXRlcyk7CisgICAgJHNlcmlhbGl6YWJsZS0+YXR0
cmlidXRlcyhcQGF0dHJpYnV0ZXMpOwogfQogCiBzdWIgcGFyc2VJZGVudGlmaWVyTGlzdApAQCAt
MTI4NiwxMSArMTI3NywxMSBAQCBzdWIgcGFyc2VBdHRyaWJ1dGVPck9wZXJhdGlvblJlc3QKICAg
ICB9CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52
YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9yT3BlcmF0aW9uUmVzdF8xLykgewogICAgICAgICBt
eSAkcmV0dXJuVHlwZSA9ICRzZWxmLT5wYXJzZVJldHVyblR5cGUoKTsKLSAgICAgICAgbXkgJGlu
dGVyZmFjZSA9ICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlz
dCk7Ci0gICAgICAgIGlmIChkZWZpbmVkICgkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAgJGlu
dGVyZmFjZS0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgbXkgJG9wZXJh
dGlvbiA9ICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CisgICAgICAgIGlmIChkZWZpbmVkICgkb3BlcmF0aW9uKSkgeworICAgICAgICAgICAgJG9wZXJh
dGlvbi0+dHlwZSgkcmV0dXJuVHlwZSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICRpbnRl
cmZhY2U7CisgICAgICAgIHJldHVybiAkb3BlcmF0aW9uOwogICAgIH0KICAgICAkc2VsZi0+YXNz
ZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CkBAIC0xMzE1
LDI2ICsxMzA2LDI1IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJlc3QKIAogICAgIG15ICRuZXh0ID0g
JHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHRBdHRy
aWJ1dGVSZXN0XzEvKSB7Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IGRvbUF0dHJpYnV0ZS0+
bmV3KCk7Ci0gICAgICAgIGlmICgkc2VsZi0+cGFyc2VSZWFkT25seSgpKSB7Ci0gICAgICAgICAg
ICAkbmV3RGF0YU5vZGUtPmlzUmVhZE9ubHkoMSk7Ci0gICAgICAgIH0KKyAgICAgICAgbXkgJG5l
d0RhdGFOb2RlID0gSURMQXR0cmlidXRlLT5uZXcoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5p
c1JlYWRPbmx5KCRzZWxmLT5wYXJzZVJlYWRPbmx5KCkpOworCiAgICAgICAgICRzZWxmLT5hc3Nl
cnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiYXR0cmlidXRlIiwgX19MSU5FX18pOwot
ICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKICAg
ICAgICAgCiAgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOwotICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkdHlwZSk7CisgICAgICAgICRuZXdEYXRhTm9k
ZS0+dHlwZSgkdHlwZSk7CiAKICAgICAgICAgbXkgJHRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7
CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJHRva2VuLCBJZGVudGlmaWVyVG9rZW4p
OwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZShpZGVudGlmaWVyUmVtb3Zl
TnVsbGFibGVQcmVmaXgoJHRva2VuLT52YWx1ZSgpKSk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+
bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHRva2VuLT52YWx1ZSgpKSk7CiAg
ICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9f
TElORV9fKTsKKwogICAgICAgICAjIEN1c3RvbUNvbnN0cnVjdG9yIG1heSBhbHNvIGJlIHVzZWQg
b24gYXR0cmlidXRlcy4KICAgICAgICAgaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlz
dC0+eyJDdXN0b21Db25zdHJ1Y3RvcnMifSkgewogICAgICAgICAgICAgZGVsZXRlICRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QtPnsiQ3VzdG9tQ29uc3RydWN0b3JzIn07CiAgICAgICAgICAgICAkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkN1c3RvbUNvbnN0cnVjdG9yIn0gPSAiVkFMVUVfSVNfTUlT
U0lORyI7CiAgICAgICAgIH0KLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgJG5ld0RhdGFO
b2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAg
IHJldHVybiAkbmV3RGF0YU5vZGU7CiAgICAgfQogICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVk
VG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKQEAgLTEzNzksNyArMTM2OSw3IEBAIHN1
YiBwYXJzZU9wZXJhdGlvbk9ySXRlcmF0b3IKICAgICAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4
dFRva2VuKCk7CiAgICAgICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8
fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsKICAgICAgICAgICAgIG15ICRvcGVyYXRpb24gPSAk
c2VsZi0+cGFyc2VPcGVyYXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAg
ICAgICAgJG9wZXJhdGlvbi0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAg
ICAgICRvcGVyYXRpb24tPnR5cGUoJHJldHVyblR5cGUpOwogICAgICAgICAgICAgcmV0dXJuICRv
cGVyYXRpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzk2LDEyICsxMzg2LDEyIEBAIHN1YiBw
YXJzZVNwZWNpYWxPcGVyYXRpb24KICAgICAgICAgbXkgQHNwZWNpYWxzID0gKCk7CiAgICAgICAg
IHB1c2goQHNwZWNpYWxzLCBAeyRzZWxmLT5wYXJzZVNwZWNpYWxzKCl9KTsKICAgICAgICAgbXkg
JHJldHVyblR5cGUgPSAkc2VsZi0+cGFyc2VSZXR1cm5UeXBlKCk7Ci0gICAgICAgIG15ICRpbnRl
cmZhY2UgPSAkc2VsZi0+cGFyc2VPcGVyYXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OwotICAgICAgICBpZiAoZGVmaW5lZCAoJGludGVyZmFjZSkpIHsKLSAgICAgICAgICAgICRpbnRl
cmZhY2UtPnNpZ25hdHVyZS0+dHlwZSgkcmV0dXJuVHlwZSk7Ci0gICAgICAgICAgICAkaW50ZXJm
YWNlLT5zaWduYXR1cmUtPnNwZWNpYWxzKFxAc3BlY2lhbHMpOworICAgICAgICBteSAkb3BlcmF0
aW9uID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uUmVzdCgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsK
KyAgICAgICAgaWYgKGRlZmluZWQgKCRvcGVyYXRpb24pKSB7CisgICAgICAgICAgICAkb3BlcmF0
aW9uLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgICAgICRvcGVyYXRpb24tPnNwZWNpYWxz
KFxAc3BlY2lhbHMpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAkaW50ZXJmYWNlOworICAg
ICAgICByZXR1cm4gJG9wZXJhdGlvbjsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0
ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwogfQpAQCAtMTQ2OSwzNiArMTQ1OSwz
MSBAQCBzdWIgcGFyc2VPcHRpb25hbEl0ZXJhYmxlSW50ZXJmYWNlCiAgICAgbXkgJHNlbGYgPSBz
aGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKLSAgICBteSAk
c3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAkc3ltYm9s
SXRlcmF0b3JGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwotICAgICRz
eW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbi0+c2lnbmF0
dXJlLT5uYW1lKCJbU3ltYm9sLkl0ZXJhdG9yXSIpOwotCi0gICAgbXkgJGVudHJpZXNGdW5jdGlv
biA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAkZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUo
ZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgJGVudHJpZXNGdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJGVudHJpZXNG
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJlbnRyaWVzIik7Ci0KLSAgICBteSAka2V5c0Z1bmN0
aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAgICRrZXlzRnVuY3Rpb24tPnNpZ25hdHVyZShk
b21TaWduYXR1cmUtPm5ldygpKTsKLSAgICAka2V5c0Z1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAka2V5c0Z1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWUoImtleXMiKTsKLQotICAgIG15ICR2YWx1ZXNGdW5jdGlvbiA9IGRv
bUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAkdmFsdWVzRnVuY3Rpb24tPnNpZ25hdHVyZShkb21TaWdu
YXR1cmUtPm5ldygpKTsKLSAgICAkdmFsdWVzRnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICR2YWx1ZXNGdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lKCJ2YWx1ZXMiKTsKLQotICAgIG15ICRmb3JFYWNoRnVuY3Rpb24gPSBk
b21GdW5jdGlvbi0+bmV3KCk7Ci0gICAgJGZvckVhY2hGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNp
Z25hdHVyZS0+bmV3KCkpOwotICAgICRmb3JFYWNoRnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRmb3JFYWNoRnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSgiZm9yRWFjaCIpOwotICAgIG15ICRmb3JFYWNoQXJndW1lbnQg
PSBkb21TaWduYXR1cmUtPm5ldygpOworICAgIG15ICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0g
SURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbi0+bmFtZSgi
W1N5bWJvbC5JdGVyYXRvcl0iKTsKKyAgICAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworCisgICAgbXkgJGVudHJpZXNG
dW5jdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGVudHJpZXNGdW5jdGlvbi0+bmFt
ZSgiZW50cmllcyIpOworICAgICRlbnRyaWVzRnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKworICAgIG15ICRrZXlzRnVuY3Rpb24gPSBJRExPcGVy
YXRpb24tPm5ldygpOworICAgICRrZXlzRnVuY3Rpb24tPm5hbWUoImtleXMiKTsKKyAgICAka2V5
c0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisK
KyAgICBteSAkdmFsdWVzRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICR2YWx1
ZXNGdW5jdGlvbi0+bmFtZSgidmFsdWVzIik7CisgICAgJHZhbHVlc0Z1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisKKyAgICBteSAkZm9yRWFjaEZ1
bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkZm9yRWFjaEZ1bmN0aW9uLT5uYW1l
KCJmb3JFYWNoIik7CisgICAgJGZvckVhY2hGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgIG15ICRmb3JFYWNoQXJndW1lbnQgPSBJRExBcmd1
bWVudC0+bmV3KCk7CiAgICAgJGZvckVhY2hBcmd1bWVudC0+bmFtZSgiY2FsbGJhY2siKTsKICAg
ICAkZm9yRWFjaEFyZ3VtZW50LT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7Ci0gICAgcHVz
aChAeyRmb3JFYWNoRnVuY3Rpb24tPnBhcmFtZXRlcnN9LCAoJGZvckVhY2hBcmd1bWVudCkpOwor
ICAgIHB1c2goQHskZm9yRWFjaEZ1bmN0aW9uLT5hcmd1bWVudHN9LCAoJGZvckVhY2hBcmd1bWVu
dCkpOwogCi0gICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tSXRlcmFibGUtPm5ldygpOworICAgIG15
ICRuZXdEYXRhTm9kZSA9IElETEl0ZXJhYmxlLT5uZXcoKTsKICAgICAkbmV3RGF0YU5vZGUtPmV4
dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICBwdXNoKEB7JG5l
d0RhdGFOb2RlLT5mdW5jdGlvbnN9LCAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbik7CiAgICAgcHVz
aChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGVudHJpZXNGdW5jdGlvbik7CkBAIC0xNTMy
LDE1ICsxNTE3LDE5IEBAIHN1YiBwYXJzZU9wZXJhdGlvblJlc3QKIAogICAgIG15ICRuZXh0ID0g
JHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dHlwZSgpID09IElkZW50aWZpZXJU
b2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2Rl
ID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShk
b21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gSURMT3BlcmF0
aW9uLT5uZXcoKTsKKwogICAgICAgICBteSAkbmFtZSA9ICRzZWxmLT5wYXJzZU9wdGlvbmFsSWRl
bnRpZmllcigpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZShpZGVudGlm
aWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJG5hbWUpKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5u
YW1lKGlkZW50aWZpZXJSZW1vdmVOdWxsYWJsZVByZWZpeCgkbmFtZSkpOworICAgICAgICAKICAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIoIiwgJG5h
bWUsIF9fTElORV9fKTsKLSAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30s
IEB7JHNlbGYtPnBhcnNlQXJndW1lbnRMaXN0KCl9KTsKKyAgICAgICAgCisgICAgICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPmFyZ3VtZW50c30sIEB7JHNlbGYtPnBhcnNlQXJndW1lbnRMaXN0KCl9
KTsKKyAgICAgICAgCiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRU
b2tlbigpLCAiKSIsIF9fTElORV9fKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUo
JHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5FX18pOwotICAgICAgICAkbmV3RGF0YU5vZGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwor
ICAgICAgICAKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgIHJldHVybiAkbmV3RGF0YU5vZGU7CiAgICAgfQog
ICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9f
KTsKQEAgLTE1OTIsMTAgKzE1ODEsOCBAQCBzdWIgcGFyc2VBcmd1bWVudAogICAgIG15ICRzZWxm
ID0gc2hpZnQ7CiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRu
ZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4
dEFyZ3VtZW50TGlzdF8xLykgewotICAgICAgICBteSAkaW4gPSAkc2VsZi0+cGFyc2VJbigpOwog
ICAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gJHNlbGYtPnBhcnNlRXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0QWxsb3dFbXB0eSgpOwogICAgICAgICBteSAkYXJndW1lbnQgPSAkc2VsZi0+
cGFyc2VPcHRpb25hbE9yUmVxdWlyZWRBcmd1bWVudCgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsK
LSAgICAgICAgJGFyZ3VtZW50LT5kaXJlY3Rpb24oJHNlbGYtPnBhcnNlSW4oKSk7CiAgICAgICAg
IHJldHVybiAkYXJndW1lbnQ7CiAgICAgfQogICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9r
ZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKQEAgLTE2MDYsNyArMTU5Myw3IEBAIHN1YiBw
YXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAg
ICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7CiAKLSAgICBteSAkcGFyYW1EYXRh
Tm9kZSA9IGRvbVNpZ25hdHVyZS0+bmV3KCk7CisgICAgbXkgJHBhcmFtRGF0YU5vZGUgPSBJRExB
cmd1bWVudC0+bmV3KCk7CiAgICAgJHBhcmFtRGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tl
bigpOwpAQCAtMTY3NywxOSArMTY2NCwxNyBAQCBzdWIgcGFyc2VFeGNlcHRpb25GaWVsZAogCiAg
ICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT50eXBlKCkg
PT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEV4Y2VwdGlvbkZp
ZWxkXzEvKSB7Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IGRvbUF0dHJpYnV0ZS0+bmV3KCk7
Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgiYXR0cmlidXRlIik7CisgICAgICAgIG15ICRu
ZXdEYXRhTm9kZSA9IElETEF0dHJpYnV0ZS0+bmV3KCk7CiAgICAgICAgICRuZXdEYXRhTm9kZS0+
aXNSZWFkT25seSgxKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0
dXJlLT5uZXcoKSk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7Ci0g
ICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCR0eXBlKTsKKyAgICAgICAgJG5l
d0RhdGFOb2RlLT50eXBlKCR0eXBlKTsKICAgICAgICAgCiAgICAgICAgIG15ICR0b2tlbiA9ICRz
ZWxmLT5nZXRUb2tlbigpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCR0b2tlbiwg
SWRlbnRpZmllclRva2VuKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUo
aWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCR0b2tlbi0+dmFsdWUoKSkpOworICAgICAg
ICAkbmV3RGF0YU5vZGUtPm5hbWUoaWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCR0b2tl
bi0+dmFsdWUoKSkpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0
VG9rZW4oKSwgIjsiLCBfX0xJTkVfXyk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgICRu
ZXdEYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwog
ICAgICAgICByZXR1cm4gJG5ld0RhdGFOb2RlOwogICAgIH0KICAgICAkc2VsZi0+YXNzZXJ0VW5l
eHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CkBAIC0xOTU5LDcgKzE5NDQs
NyBAQCBzdWIgcGFyc2VTaW5nbGVUeXBlCiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJhbnki
KSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAi
YW55IiwgX19MSU5FX18pOwogICAgICAgICAKLSAgICAgICAgbXkgJGFueVR5cGUgPSBkb21UeXBl
LT5uZXcoKTsKKyAgICAgICAgbXkgJGFueVR5cGUgPSBJRExUeXBlLT5uZXcoKTsKICAgICAgICAg
JGFueVR5cGUtPm5hbWUoImFueSIpOwogICAgICAgICByZXR1cm4gJGFueVR5cGU7CiAgICAgfQpA
QCAtMTk3Niw3ICsxOTYxLDcgQEAgc3ViIHBhcnNlVW5pb25UeXBlCiAgICAgbXkgJHNlbGYgPSBz
aGlmdDsKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKIAotICAgIG15ICR1bmlv
blR5cGUgPSBkb21UeXBlLT5uZXcoKTsKKyAgICBteSAkdW5pb25UeXBlID0gSURMVHlwZS0+bmV3
KCk7CiAgICAgJHVuaW9uVHlwZS0+bmFtZSgiVU5JT04iKTsKICAgICAkdW5pb25UeXBlLT5pc1Vu
aW9uKDEpOwogCkBAIC0yMDM1LDcgKzIwMjAsNyBAQCBzdWIgcGFyc2VOb25BbnlUeXBlCiAgICAg
bXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKIAot
ICAgIG15ICR0eXBlID0gZG9tVHlwZS0+bmV3KCk7CisgICAgbXkgJHR5cGUgPSBJRExUeXBlLT5u
ZXcoKTsKIAogICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAvJG5leHROb25BbnlUeXBlXzEvKSB7
CiAgICAgICAgICR0eXBlLT5uYW1lKCRzZWxmLT5wYXJzZVByaW1pdGl2ZVR5cGUoKSk7CkBAIC0y
MTMxLDcgKzIxMTYsNyBAQCBzdWIgcGFyc2VDb25zdFR5cGUKICAgICBteSAkc2VsZiA9IHNoaWZ0
OwogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogCi0gICAgbXkgJHR5cGUgPSBk
b21UeXBlLT5uZXcoKTsKKyAgICBteSAkdHlwZSA9IElETFR5cGUtPm5ldygpOwogCiAgICAgaWYg
KCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dE5vbkFueVR5cGVfMS8pIHsKICAgICAgICAgJHR5cGUt
Pm5hbWUoJHNlbGYtPnBhcnNlUHJpbWl0aXZlVHlwZSgpKTsKQEAgLTIyNjgsNyArMjI1Myw3IEBA
IHN1YiBwYXJzZVJldHVyblR5cGUKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgInZvaWQiKSB7
CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAidm9p
ZCIsIF9fTElORV9fKTsKICAgICAgICAgCi0gICAgICAgIG15ICR2b2lkVHlwZSA9IGRvbVR5cGUt
Pm5ldygpOworICAgICAgICBteSAkdm9pZFR5cGUgPSBJRExUeXBlLT5uZXcoKTsKICAgICAgICAg
JHZvaWRUeXBlLT5uYW1lKCJ2b2lkIik7CiAgICAgICAgIHJldHVybiAkdm9pZFR5cGU7CiAgICAg
fQpAQCAtMjI3OCwxNyArMjI2Myw2IEBAIHN1YiBwYXJzZVJldHVyblR5cGUKICAgICAkc2VsZi0+
YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CiAKLXN1
YiBwYXJzZUluCi17Ci0gICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkbmV4dCA9ICRzZWxm
LT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgImluIikgewotICAgICAg
ICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgImluIiwgX19MSU5F
X18pOwotICAgICAgICByZXR1cm4gImluIjsKLSAgICB9Ci0gICAgcmV0dXJuICIiOwotfQotCiBz
dWIgcGFyc2VPcHRpb25hbFNlbWljb2xvbgogewogICAgIG15ICRzZWxmID0gc2hpZnQ7CkBAIC0y
MzI5LDcgKzIzMDMsNyBAQCBzdWIgaXNTZXJpYWxpemFibGVBdHRyaWJ1dGUKICAgICAjIFRoaXMg
Y2hlY2sgbWF5IGhhdmUgdG8gbW92ZSB0byB0aGUgY29kZSBnZW5lcmF0b3IsIGlmIHdlIGRvbid0
IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uCiAgICAgIyBoZXJlIHRvIGRldGVybWluZSBzZXJpYWxp
emFiaWxpdHk6IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1zZXJpYWxpemVy
cwogICAgIG15ICRzZXJpYWxpemFibGVfdHlwZXMgPSAnXihcKGJ5dGV8b2N0ZXR8c2hvcnR8dW5z
aWduZWQgc2hvcnR8bG9uZ3x1bnNpZ25lZCBsb25nfGxvbmcgbG9uZ3x1bnNpZ25lZCBsb25nIGxv
bmd8ZmxvYXR8dW5yZXN0cmljdGVkIGZsb2F0fGRvdWJsZXx1bnJlc3RyaWN0ZWQgZG91YmxlfGJv
b2xlYW58RE9NU3RyaW5nfEJ5dGVTdHJpbmd8VVNWU3RyaW5nKSQnOwotICAgIHJldHVybiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUtPm5hbWUgPX4gLyRzZXJpYWxpemFibGVfdHlwZXMvOwor
ICAgIHJldHVybiAkYXR0cmlidXRlLT50eXBlLT5uYW1lID1+IC8kc2VyaWFsaXphYmxlX3R5cGVz
LzsKIH0KIAogc3ViIGFwcGx5TWVtYmVyTGlzdApAQCAtMjMzOCwyNyArMjMxMiwyNyBAQCBzdWIg
YXBwbHlNZW1iZXJMaXN0CiAgICAgbXkgJG1lbWJlcnMgPSBzaGlmdDsKIAogICAgIGZvciBteSAk
aXRlbSAoQHskbWVtYmVyc30pIHsKLSAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEgImRvbUF0dHJp
YnV0ZSIpIHsKKyAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEgIklETEF0dHJpYnV0ZSIpIHsKICAg
ICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSwgJGl0ZW0pOwogICAgICAg
ICAgICAgbmV4dDsKICAgICAgICAgfQotICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAiZG9tQ29u
c3RhbnQiKSB7CisgICAgICAgIGlmIChyZWYoJGl0ZW0pIGVxICJJRExDb25zdGFudCIpIHsKICAg
ICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdGFudHN9LCAkaXRlbSk7CiAgICAgICAg
ICAgICBuZXh0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChyZWYoJGl0ZW0pIGVxICJkb21JdGVy
YWJsZSIpIHsKKyAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEgIklETEl0ZXJhYmxlIikgewogICAg
ICAgICAgICAgJGludGVyZmFjZS0+aXRlcmFibGUoJGl0ZW0pOwogICAgICAgICAgICAgbmV4dDsK
ICAgICAgICAgfQotICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAiZG9tRnVuY3Rpb24iKSB7Ci0g
ICAgICAgICAgICBpZiAoJGl0ZW0tPnNpZ25hdHVyZS0+bmFtZSBlcSAiIikgeworICAgICAgICBp
ZiAocmVmKCRpdGVtKSBlcSAiSURMT3BlcmF0aW9uIikgeworICAgICAgICAgICAgaWYgKCRpdGVt
LT5uYW1lIGVxICIiKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmFub255
bW91c0Z1bmN0aW9uc30sICRpdGVtKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30sICRpdGVtKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlZigkaXRlbSkg
ZXEgImRvbVNlcmlhbGl6YWJsZSIpIHsKKyAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEgIklETFNl
cmlhbGl6YWJsZSIpIHsKICAgICAgICAgICAgICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZSgkaXRl
bSk7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CkBAIC0yMzY5LDEyICsyMzQzLDEyIEBA
IHN1YiBhcHBseU1lbWJlckxpc3QKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPnNlcmlhbGl6YWJs
ZS0+aGFzQXR0cmlidXRlKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7
JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgICAgICBpZiAoaXNTZXJpYWxp
emFibGVBdHRyaWJ1dGUoJGF0dHJpYnV0ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
eyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5zZXJp
YWxpemFibGUtPmF0dHJpYnV0ZXN9LCAkYXR0cmlidXRlLT5uYW1lKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKCRudW1TZXJpYWxpemVyQXR0cmli
dXRlcyA9PSAwKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVy
ZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+
c2VyaWFsaXphYmxlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5hdHRyaWJ1
dGVzfSwgJGF0dHJpYnV0ZS0+bmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CkBAIC0yMzg5LDI0ICsyMzYzLDIyIEBAIHN1YiBhcHBseUV4dGVuZGVkQXR0cmlidXRlTGlzdAog
ICAgICAgICBteSBAY29uc3RydWN0b3JQYXJhbXMgPSBAeyRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qt
PnsiQ29uc3RydWN0b3JzIn19OwogICAgICAgICBteSAkaW5kZXggPSAoQGNvbnN0cnVjdG9yUGFy
YW1zID09IDEpID8gMCA6IDE7CiAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtIChAY29uc3RydWN0
b3JQYXJhbXMpIHsKLSAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvciA9IGRvbUZ1bmN0aW9uLT5u
ZXcoKTsKLSAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+
bmV3KCkpOwotICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUtPm5hbWUoIkNvbnN0
cnVjdG9yIik7Ci0gICAgICAgICAgICAkY29uc3RydWN0b3ItPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICAgICAgJGNvbnN0cnVj
dG9yLT5wYXJhbWV0ZXJzKCRwYXJhbSk7CisgICAgICAgICAgICBteSAkY29uc3RydWN0b3IgPSBJ
RExPcGVyYXRpb24tPm5ldygpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5uYW1lKCJDb25z
dHJ1Y3RvciIpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5leHRlbmRlZEF0dHJpYnV0ZXMo
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgICAgICAkY29uc3RydWN0b3ItPmFyZ3Vt
ZW50cygkcGFyYW0pOwogICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9y
c30sICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KICAgICAgICAgZGVsZXRlICRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn07CiAgICAgICAgICRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QtPnsiQ29uc3RydWN0b3IifSA9ICJWQUxVRV9JU19NSVNTSU5HIjsKICAgICB9IGVsc2lm
IChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7
Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAgICAg
JG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKCJOYW1lZENvbnN0cnVjdG9yIik7Ci0gICAgICAg
ICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCk7CisgICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IElETE9wZXJhdGlvbi0+bmV3
KCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgiTmFtZWRDb25zdHJ1Y3RvciIpOworICAg
ICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKICAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSAleyRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qt
PnsiTmFtZWRDb25zdHJ1Y3RvciJ9fTsKICAgICAgICAgbXkgQGF0dHJpYnV0ZUtleXMgPSBrZXlz
ICglYXR0cmlidXRlcyk7CiAgICAgICAgIG15ICRjb25zdHJ1Y3Rvck5hbWUgPSAkYXR0cmlidXRl
S2V5c1swXTsKLSAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JGF0
dHJpYnV0ZXN7JGNvbnN0cnVjdG9yTmFtZX19KTsKKyAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9k
ZS0+YXJndW1lbnRzfSwgQHskYXR0cmlidXRlc3skY29uc3RydWN0b3JOYW1lfX0pOwogICAgICAg
ICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5hbWVkQ29uc3RydWN0b3IifSA9ICRjb25zdHJ1
Y3Rvck5hbWU7CiAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdHJ1Y3RvcnN9LCAkbmV3
RGF0YU5vZGUpOwogICAgIH0KQEAgLTI0MTQsMTEgKzIzODYsMTAgQEAgc3ViIGFwcGx5RXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0CiAgICAgICAgIG15IEBjdXN0b21Db25zdHJ1Y3RvclBhcmFtcyA9IEB7
JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDdXN0b21Db25zdHJ1Y3RvcnMifX07CiAgICAgICAg
IG15ICRpbmRleCA9IChAY3VzdG9tQ29uc3RydWN0b3JQYXJhbXMgPT0gMSkgPyAwIDogMTsKICAg
ICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEBjdXN0b21Db25zdHJ1Y3RvclBhcmFtcykgewotICAg
ICAgICAgICAgbXkgJGN1c3RvbUNvbnN0cnVjdG9yID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAg
ICAgICAgICAgJGN1c3RvbUNvbnN0cnVjdG9yLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXco
KSk7Ci0gICAgICAgICAgICAkY3VzdG9tQ29uc3RydWN0b3ItPnNpZ25hdHVyZS0+bmFtZSgiQ3Vz
dG9tQ29uc3RydWN0b3IiKTsKLSAgICAgICAgICAgICRjdXN0b21Db25zdHJ1Y3Rvci0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAg
ICAgICAkY3VzdG9tQ29uc3RydWN0b3ItPnBhcmFtZXRlcnMoJHBhcmFtKTsKKyAgICAgICAgICAg
IG15ICRjdXN0b21Db25zdHJ1Y3RvciA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgICAgICAg
ICAkY3VzdG9tQ29uc3RydWN0b3ItPm5hbWUoIkN1c3RvbUNvbnN0cnVjdG9yIik7CisgICAgICAg
ICAgICAkY3VzdG9tQ29uc3RydWN0b3ItPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRy
aWJ1dGVMaXN0KTsKKyAgICAgICAgICAgICRjdXN0b21Db25zdHJ1Y3Rvci0+YXJndW1lbnRzKCRw
YXJhbSk7CiAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+Y3VzdG9tQ29uc3RydWN0b3Jz
fSwgJGN1c3RvbUNvbnN0cnVjdG9yKTsKICAgICAgICAgfQogICAgICAgICBkZWxldGUgJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdC0+eyJDdXN0b21Db25zdHJ1Y3RvcnMifTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAko
cmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5l
cmF0ZS1iaW5kaW5ncy5wbAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDI4ICsxNTcsMjggQEAgZm9y
ZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElkbEZpbAogCiAgICAgICAgICAgICAjIFN1
cHBvcnQgZm9yIGF0dHJpYnV0ZXMgb2YgcGFydGlhbCBpbnRlcmZhY2VzLgogICAgICAgICAgICAg
Zm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAg
ICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgICAgICBu
ZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkYXR0cmlidXRlLCBcQHRhcmdldEds
b2JhbENvbnRleHRzKTsKIAogICAgICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhpcyBhdHRy
aWJ1dGUgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0gICAgICAgICAgICAgICAg
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRC
eSJ9ID0gJGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsOworICAgICAgICAg
ICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0g
PSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWw7CiAKICAgICAgICAgICAg
ICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIGVhY2ggYXR0
cmlidXRlLgogICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGV4dGVuZGVkQXR0cmlidXRlTmFt
ZSAoa2V5cyAleyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlc30pIHsKLSAgICAgICAgICAg
ICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0
ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRl
eHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAgICAgICAgICAkYXR0cmlidXRlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5hdHRyaWJ1
dGVzfSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICMgU3VwcG9y
dCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCiAgICAgICAgICAgICBmb3JlYWNo
IG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICAgICAg
ICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGZ1bmN0aW9uLT5zaWduYXR1
cmUsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOworICAgICAgICAgICAgICAgIG5leHQgdW5sZXNz
IHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRmdW5jdGlvbiwgXEB0YXJnZXRHbG9iYWxDb250ZXh0
cyk7CiAKICAgICAgICAgICAgICAgICAjIFJlY29yZCB0aGF0IHRoaXMgbWV0aG9kIGlzIGltcGxl
bWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgotICAgICAgICAgICAgICAgICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGludGVyZmFj
ZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsOworICAgICAgICAgICAgICAgICRmdW5jdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1l
IGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKIAogICAgICAgICAgICAgICAgICMgQWRkIGludGVy
ZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBtZXRob2QuCiAgICAgICAgICAg
ICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX0g
PSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1l
fTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsk
ZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5mdW5jdGlvbnN9LCAkZnVuY3Rpb24pOwogICAg
ICAgICAgICAgfQpAQCAtMjEwLDkgKzIxMCw5IEBAICRjb2RlR2VuLT5Qcm9jZXNzRG9jdW1lbnQo
JHRhcmdldERvY3VtZW4KICMgb24gd2hpY2ggZ2xvYmFsIGNvbnRleHRzIHRoZXkgc2hvdWxkIGJl
IGV4cG9zZWQuCiBzdWIgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQKIHsKLSAgICBteSAoJHNpZ25h
dHVyZSwgJHRhcmdldEdsb2JhbENvbnRleHRzKSA9IEBfOworICAgIG15ICgkY29udGV4dCwgJHRh
cmdldEdsb2JhbENvbnRleHRzKSA9IEBfOwogCi0gICAgbXkgJGV4cG9zZWQgPSAkc2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsKKyAgICBteSAkZXhwb3NlZCA9ICRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsKIAogICAgIHJldHVybiAxIHVubGVz
cyAkZXhwb3NlZDsKIApAQCAtMjg5LDEzICsyODksMTMgQEAgc3ViIGNoZWNrSURMQXR0cmlidXRl
cwogICAgICAgICBjaGVja0lmSURMQXR0cmlidXRlc0V4aXN0cygkaWRsQXR0cmlidXRlcywgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaWRsRmlsZSk7CiAKICAgICAgICAgZm9yZWFj
aCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAg
ICBjaGVja0lmSURMQXR0cmlidXRlc0V4aXN0cygkaWRsQXR0cmlidXRlcywgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpZGxGaWxlKTsKKyAgICAgICAgICAgIGNo
ZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1dGVzLCAkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMsICRpZGxGaWxlKTsKICAgICAgICAgfQogCiAgICAgICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIGNo
ZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1dGVzLCAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaWRsRmlsZSk7Ci0gICAgICAgICAgICBmb3JlYWNo
IG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkgewotICAgICAgICAgICAg
ICAgIGNoZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1dGVzLCAkcGFyYW1ldGVy
LT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpZGxGaWxlKTsKKyAgICAgICAgICAgIGNoZWNrSWZJRExB
dHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1dGVzLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcywgJGlkbEZpbGUpOworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1
bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgY2hlY2tJZklETEF0dHJpYnV0
ZXNFeGlzdHMoJGlkbEF0dHJpYnV0ZXMsICRhcmd1bWVudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAk
aWRsRmlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlk
bAkocmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RUeXBlZGVmcy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQAog
ICAgIHZvaWQgbnVsbGFibGVTZXF1ZW5jZUFyZyhTRVFVRU5DRV9PRl9TVFJJTkdTPyBzZXF1ZW5j
ZUFyZyk7CiAgICAgdm9pZCBzZXF1ZW5jZU9mTnVsbGFibGVzQXJnKHNlcXVlbmNlPFNUUklORz8+
IHNlcXVlbmNlQXJnKTsKICAgICB2b2lkIG51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhT
RVFVRU5DRV9PRl9OVUxMQUJMRV9TVFJJTkdTPyBzZXF1ZW5jZUFyZyk7CisgICAgdm9pZCBudWxs
YWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoc2VxdWVuY2U8KFNUUklORyBvciBTRVFVRU5DRV9PRl9T
VFJJTkdTKT4/IHNlcXVlbmNlQXJnKTsKIAogICAgIHZvaWQgdW5pb25BcmcoVU5JT05fU1RSSU5H
X0xPTkcgdW5pb25BcmcpOwogCi0gICAgdm9pZCBmdW5jV2l0aENsYW1wKFVMT05HTE9OR19DTEFN
UCBhcmcxLCBvcHRpb25hbCBVTE9OR0xPTkdfQ0xBTVAgYXJnMik7CisgICAgdm9pZCBmdW5jV2l0
aENsYW1wKFtDbGFtcF0gVUxPTkdMT05HIGFyZzEsIFtDbGFtcF0gb3B0aW9uYWwgVUxPTkdMT05H
IGFyZzIpOwogCiAgICAgW0ltbXV0YWJsZV0gU1ZHUE9JTlQgaW1tdXRhYmxlUG9pbnRGdW5jdGlv
bigpOwogCkBAIC03MSw3ICs3Miw2IEBACiAKIHR5cGVkZWYgdW5yZXN0cmljdGVkIGZsb2F0ICAg
ICAgICAgRE9VQkxFOwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAgICBVTE9OR0xP
Tkc7Ci10eXBlZGVmIFtDbGFtcF0gdW5zaWduZWQgbG9uZyBsb25nIFVMT05HTE9OR19DTEFNUDsK
IHR5cGVkZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlICAgICAgU0NSSVBUX1ZBTFVFOwogdHlwZWRl
ZiBzZXF1ZW5jZTxsb25nPiAgICAgICAgICAgICBTRVFVRU5DRV9PRl9MT05HUzsKIHR5cGVkZWYg
bG9uZz8gICAgICAgICAgICAgICAgICAgICAgTlVMTEFCTEVfTE9ORzsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5
cGVkZWZzLmNwcAkocmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NiArNDgsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVu
Y2VPZk51bGxhYmxlc0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVl
bmNlT2ZOdWxsYWJsZXNBcmcoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1
ZW5jZU9mVW5pb25zQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnKEpTQzo6
RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTczLDYg
KzE3NCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RUeXBlZGUKICAgICB7
ICJudWxsYWJsZVNlcXVlbmNlQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7
ICJzZXF1ZW5jZU9mTnVsbGFibGVzQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwK
ICAgICB7ICJudWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmciLCBKU0M6OkZ1bmN0aW9uLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcp
LCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAibnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJn
IiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1
ZW5jZU9mVW5pb25zQXJnKSwgKGludHB0cl90KSAoMSkgfSB9LAogICAgIHsgInVuaW9uQXJnIiwg
SlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcpLCAoaW50
cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiZnVuY1dpdGhDbGFtcCIsIEpTQzo6RnVuY3Rpb24sIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXApLCAoaW50cHRyX3QpICgxKSB9
IH0sCiAgICAgeyAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50RnVuY3Rpb24pLCAoaW50cHRyX3Qp
ICgwKSB9IH0sCkBAIC02MTAsNiArNjEyLDI2IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZ0NhbGxlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdFR5cGVkZWZzKiwgSlNDOjpUaHJvd1Njb3BlJik7CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxh
YmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnQ2FsbGVyPihzdGF0
ZSwgIm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U2VxdWVuY2VPZlVuaW9uc0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdFR5
cGVkZWZzKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwor
ICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETFNlcXVlbmNlPElE
TFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4+Pj4oKnN0YXRl
LCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaW1wbC5udWxsYWJsZVNlcXVlbmNl
T2ZVbmlvbnNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmdDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU1Rlc3RUeXBlZGVmcyosIEpTQzo6VGhyb3dTY29wZSYpOwogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Vbmlv
bkFyZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWtlX3Nl
dHRpbmdzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFrZV9zZXR0aW5n
cy5wbAkocmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWtlX3NldHRp
bmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcwLDcgQEAgc3ViIGdlbmVyYXRlSW50
ZXJuYWxTZXR0aW5nc0lkbEZpbGUoJCkKICAgICAgICAgbXkgJHR5cGUgPSAkcGFyc2VkSXRlbXN7
JHNldHRpbmdOYW1lfXsidHlwZSJ9OwogICAgICAgICBteSAkaWRsVHlwZSA9ICR3ZWJjb3JlVHlw
ZVRvSWRsVHlwZXskdHlwZX07CiAgICAgICAgIG15ICRzZXR0ZXJGdW5jdGlvbk5hbWUgPSBzZXR0
ZXJGdW5jdGlvbk5hbWUoJHNldHRpbmdOYW1lKTsKLSAgICAgICAgcHJpbnQgJGZpbGUgIiAgICB2
b2lkICRzZXR0ZXJGdW5jdGlvbk5hbWUoaW4gJGlkbFR5cGUgJHNldHRpbmdOYW1lKTtcbiI7Cisg
ICAgICAgIHByaW50ICRmaWxlICIgICAgdm9pZCAkc2V0dGVyRnVuY3Rpb25OYW1lKCRpZGxUeXBl
ICRzZXR0aW5nTmFtZSk7XG4iOwogICAgIH07CiAKICAgICBlbnVtZXJhdGVQYXJzZWRJdGVtcygk
ZmlsZSwgJHBhcnNlZEl0ZW1zUmVmLCBcJndyaXRlSWRsU2V0dGVyKTsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODEyOSkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2
LTEwLTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0g
UmVzdHJ1Y3R1cmUgSURMUGFyc2VyIHN0cnVjdHMgdG8gYmV0dGVyIG1hdGNoIG1vZGVybiBXZWJJ
TEQgY29uY2VwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDIwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVl
LnBtOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
Q29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG06CisgICAgICAgIFVwZGF0ZSBmb3IgbmV3IHN0cnVj
dCB0eXBlcy4KKwogMjAxNi0xMC0yOSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgRml4IGZhaWxpbmcgRXh0ZW5kZWRDb2xvciB0ZXN0cy4KSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVt
cFJlbmRlclRyZWUucG0JKHJldmlzaW9uIDIwODEyOSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQkod29ya2luZyBjb3B5KQpA
QCAtMTc2LDcgKzE3Niw3IEBAIEVPRgogICAgIGlmIChteSBAZnVuY3Rpb25zID0gQHskaW50ZXJm
YWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4gICAgLy8gRnVu
Y3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykg
ewotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIEpTVmFsdWVSZWYgQHtb
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWVdfShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYqKTtcbiIp
OworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIEpTVmFsdWVSZWYgQHtb
JGZ1bmN0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYs
IHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKik7XG4iKTsKICAgICAgICAg
fQogICAgIH0KIApAQCAtMjcwLDcgKzI3MCw3IEBAIEVPRgogICAgICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQGZ1bmN0aW9ucykgewogICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9G
KTsKIAotSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lXX0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRm
dW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAke2ltcGxlbWVudGF0
aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0oY29udGV4
dCwgdGhpc09iamVjdCk7CiAgICAgaWYgKCFpbXBsKQpAQCAtMjc4LDQwICsyNzgsNDAgQEAgSlNW
YWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+cwogCiBFT0YKICAgICAgICAgICAg
IG15ICRmdW5jdGlvbkNhbGw7Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAg
ICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+bmFtZSAuICIoY29udGV4dCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRzLCBleGNlcHRpb24p
IjsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0g
ImltcGwtPiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFy
Z3VtZW50cywgZXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIG15IEBwYXJhbWV0ZXJzID0gKCk7Ci0gICAgICAgICAgICAgICAgbXkgQHNwZWNpZmllZFBh
cmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAgICAgICAgICAgbXkg
QGFyZ3VtZW50cyA9ICgpOworICAgICAgICAgICAgICAgIG15IEBzcGVjaWZpZWRBcmd1bWVudHMg
PSBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfTsKIAotICAgICAgICAgICAgICAgICRzZWxmLT5faW5j
bHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlw
ZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVk
ZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVuY3Rpb24tPnR5cGUpOwogCi0gICAgICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
UGFzc0NvbnRleHQifSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAi
Y29udGV4dCIpOworICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJQYXNzQ29udGV4dCJ9KSB7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3Vt
ZW50cywgImNvbnRleHQiKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBm
b3JlYWNoIG15ICRpICgwLi4kI3NwZWNpZmllZFBhcmFtZXRlcnMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgbXkgJHBhcmFtZXRlciA9ICRzcGVjaWZpZWRQYXJhbWV0ZXJzWyRpXTsKKyAgICAgICAg
ICAgICAgICBmb3JlYWNoIG15ICRpICgwLi4kI3NwZWNpZmllZEFyZ3VtZW50cykgeworICAgICAg
ICAgICAgICAgICAgICBteSAkYXJndW1lbnQgPSAkc3BlY2lmaWVkQXJndW1lbnRzWyRpXTsKIAot
ICAgICAgICAgICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNs
dWRlcywgJHR5cGUsICRwYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgICAgICAkc2VsZi0+X2lu
Y2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJHR5cGUpOwogCi0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICIgLiAkc2VsZi0+X3BsYXRmb3JtVHlwZVZhcmlh
YmxlRGVjbGFyYXRpb24oJHBhcmFtZXRlciwgJHBhcmFtZXRlci0+bmFtZSwgImFyZ3VtZW50c1sk
aV0iLCAiYXJndW1lbnRDb3VudCA+ICRpIikgLiAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICIgICAgIiAuICRzZWxmLT5fcGxhdGZvcm1UeXBlVmFyaWFibGVEZWNs
YXJhdGlvbigkYXJndW1lbnQtPnR5cGUsICRhcmd1bWVudC0+bmFtZSwgImFyZ3VtZW50c1skaV0i
LCAiYXJndW1lbnRDb3VudCA+ICRpIikgLiAiXG4iKTsKICAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlcnMsICRzZWxmLT5fcGFyYW1ldGVyRXhw
cmVzc2lvbigkcGFyYW1ldGVyKSk7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgJHNlbGYtPl9hcmd1bWVudEV4cHJlc3Npb24oJGFyZ3VtZW50KSk7CiAgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJpbXBsLT4iIC4gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJhbWV0ZXJzKSAuICIp
IjsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIgLiAkZnVuY3Rpb24t
Pm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAke2Z1bmN0
aW9uQ2FsbH07XG5cbiIpIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJ2
b2lkIjsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVybiAiIC4gJHNlbGYt
Pl9yZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkZnVuY3Rpb25DYWxsKSAu
ICI7XG59XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICR7ZnVuY3Rpb25D
YWxsfTtcblxuIikgaWYgJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKKyAgICAgICAg
ICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVybiAiIC4gJHNlbGYtPl9yZXR1cm5FeHByZXNz
aW9uKCRmdW5jdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xufVxuIik7CiAgICAgICAg
IH0KICAgICB9CiAKICAgICBpZiAobXkgQGF0dHJpYnV0ZXMgPSBAeyRpbnRlcmZhY2UtPmF0dHJp
YnV0ZXN9KSB7CiAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4vLyBBdHRyaWJ1dGVzXG4iKTsK
ICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0cmlidXRlcykgewotICAgICAgICAg
ICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVkZXMsICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+dHlwZSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgICRz
ZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkYXR0cmlidXRlLT50eXBl
KTsKIAogICAgICAgICAgICAgbXkgJGdldHRlck5hbWUgPSAkc2VsZi0+X2dldHRlck5hbWUoJGF0
dHJpYnV0ZSk7CiAgICAgICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvbiA9ICJpbXBsLT4ke2dl
dHRlck5hbWV9KCkiOwpAQCAtMzI0LDcgKzMyNCw3IEBAIEpTVmFsdWVSZWYgJHtjbGFzc05hbWV9
Ojoke2dldHRlck5hbWV9KEoKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIHJldHVybiBAe1skc2VsZi0+X3JldHVybkV4
cHJlc3Npb24oJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkZ2V0dGVyRXhwcmVzc2lvbildfTsKKyAg
ICByZXR1cm4gQHtbJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRhdHRyaWJ1dGUtPnR5cGUsICRn
ZXR0ZXJFeHByZXNzaW9uKV19OwogfQogRU9GCiAKQEAgLTMzOSw3ICszMzksNyBAQCBib29sICR7
Y2xhc3NOYW1lfTo6QHtbJHNlbGYtPl9zZXR0ZXJOYW1lCiAKIEVPRgogCi0gICAgICAgICAgICAg
ICAgbXkgJHBsYXRmb3JtVmFsdWUgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgbXkgJHBsYXRm
b3JtVmFsdWUgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCRhdHRyaWJ1dGUtPnR5
cGUsICJ2YWx1ZSIpOwogCiAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsK
ICAgICBpbXBsLT5Ae1skc2VsZi0+X3NldHRlck5hbWUoJGF0dHJpYnV0ZSldfSgke3BsYXRmb3Jt
VmFsdWV9KTsKQEAgLTM2OCwxMiArMzY4LDEyIEBAIHN1YiBfZ2V0dGVyTmFtZQogewogICAgIG15
ICgkc2VsZiwgJGF0dHJpYnV0ZSkgPSBAXzsKIAotICAgIHJldHVybiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPm5hbWU7CisgICAgcmV0dXJuICRhdHRyaWJ1dGUtPm5hbWU7CiB9CiAKIHN1YiBfaW5j
bHVkZUhlYWRlcnMKIHsKLSAgICBteSAoJHNlbGYsICRoZWFkZXJzLCAkdHlwZSwgJHNpZ25hdHVy
ZSkgPSBAXzsKKyAgICBteSAoJHNlbGYsICRoZWFkZXJzLCAkdHlwZSkgPSBAXzsKIAogICAgIHJl
dHVybiB1bmxlc3MgZGVmaW5lZCAkdHlwZTsKICAgICByZXR1cm4gaWYgJHR5cGUtPm5hbWUgZXEg
ImJvb2xlYW4iOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHN1YiBfcGFyZW50SW50ZXJmYWNlCiAKIHN1
YiBfcGxhdGZvcm1UeXBlCiB7Ci0gICAgbXkgKCRzZWxmLCAkdHlwZSwgJHNpZ25hdHVyZSkgPSBA
XzsKKyAgICBteSAoJHNlbGYsICR0eXBlKSA9IEBfOwogCiAgICAgcmV0dXJuIHVuZGVmIHVubGVz
cyBkZWZpbmVkICR0eXBlOwogCkBAIC00MjksOSArNDI5LDcgQEAgc3ViIF9wbGF0Zm9ybVR5cGUK
IAogc3ViIF9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3RvcgogewotICAgIG15ICgkc2VsZiwgJHNpZ25h
dHVyZSwgJGFyZ3VtZW50TmFtZSkgPSBAXzsKLQotICAgIG15ICR0eXBlID0gJHNpZ25hdHVyZS0+
dHlwZTsKKyAgICBteSAoJHNlbGYsICR0eXBlLCAkYXJndW1lbnROYW1lKSA9IEBfOwogCiAgICAg
cmV0dXJuICJKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsICRhcmd1bWVudE5hbWUpIiBpZiAkdHlw
ZSBlcSAiYm9vbGVhbiI7CiAgICAgcmV0dXJuICIkYXJndW1lbnROYW1lIiBpZiAkdHlwZS0+bmFt
ZSBlcSAib2JqZWN0IjsKQEAgLTQ0MiwxMCArNDQwLDEwIEBAIHN1YiBfcGxhdGZvcm1UeXBlQ29u
c3RydWN0b3IKIAogc3ViIF9wbGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uCiB7Ci0gICAg
bXkgKCRzZWxmLCAkc2lnbmF0dXJlLCAkdmFyaWFibGVOYW1lLCAkYXJndW1lbnROYW1lLCAkY29u
ZGl0aW9uKSA9IEBfOworICAgIG15ICgkc2VsZiwgJHR5cGUsICR2YXJpYWJsZU5hbWUsICRhcmd1
bWVudE5hbWUsICRjb25kaXRpb24pID0gQF87CiAKLSAgICBteSAkcGxhdGZvcm1UeXBlID0gJHNl
bGYtPl9wbGF0Zm9ybVR5cGUoJHNpZ25hdHVyZS0+dHlwZSwgJHNpZ25hdHVyZSk7Ci0gICAgbXkg
JGNvbnN0cnVjdG9yID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3Rvcigkc2lnbmF0dXJl
LCAkYXJndW1lbnROYW1lKTsKKyAgICBteSAkcGxhdGZvcm1UeXBlID0gJHNlbGYtPl9wbGF0Zm9y
bVR5cGUoJHR5cGUpOworICAgIG15ICRjb25zdHJ1Y3RvciA9ICRzZWxmLT5fcGxhdGZvcm1UeXBl
Q29uc3RydWN0b3IoJHR5cGUsICRhcmd1bWVudE5hbWUpOwogCiAgICAgbXkgJW5vblBvaW50ZXJU
eXBlcyA9ICgKICAgICAgICAgImJvb2wiID0+IDEsCkBAIC00NzAsOSArNDY4LDcgQEAgc3ViIF9w
bGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uCiAKIHN1YiBfcmV0dXJuRXhwcmVzc2lvbgog
ewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwgJGV4cHJlc3Npb24pID0gQF87Ci0KLSAgICBt
eSAkcmV0dXJuVHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CisgICAgbXkgKCRzZWxmLCAkcmV0dXJu
VHlwZSwgJGV4cHJlc3Npb24pID0gQF87CiAKICAgICByZXR1cm4gIkpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAidm9pZCI7CiAgICAgcmV0dXJu
ICJKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgJHtleHByZXNzaW9ufSkiIGlmICRyZXR1cm5U
eXBlLT5uYW1lIGVxICJib29sZWFuIjsKQEAgLTQ4MiwxMiArNDc4LDEyIEBAIHN1YiBfcmV0dXJu
RXhwcmVzc2lvbgogICAgIHJldHVybiAidG9KUyhjb250ZXh0LCBXVEY6OmdldFB0cigke2V4cHJl
c3Npb259KSkiOwogfQogCi1zdWIgX3BhcmFtZXRlckV4cHJlc3Npb24KK3N1YiBfYXJndW1lbnRF
eHByZXNzaW9uCiB7Ci0gICAgbXkgKCRzZWxmLCAkcGFyYW1ldGVyKSA9IEBfOworICAgIG15ICgk
c2VsZiwgJGFyZ3VtZW50KSA9IEBfOwogCi0gICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBl
OwotICAgIG15ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsKKyAgICBteSAkdHlwZSA9ICRhcmd1
bWVudC0+dHlwZTsKKyAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+bmFtZTsKIAogICAgIHJldHVy
biAiJHtuYW1lfS5nZXQoKSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5Jc1N0cmluZ1R5cGUo
JHR5cGUpOwogICAgIHJldHVybiAkbmFtZTsKQEAgLTQ5Nyw3ICs0OTMsNyBAQCBzdWIgX3NldHRl
ck5hbWUKIHsKICAgICBteSAoJHNlbGYsICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICBteSAkbmFt
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBteSAkbmFtZSA9ICRhdHRyaWJ1
dGUtPm5hbWU7CiAKICAgICByZXR1cm4gInNldCIgLiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPldL
X3VjZmlyc3QoJG5hbWUpOwogfQpAQCAtNTA3LDkgKzUwMyw5IEBAIHN1YiBfc3RhdGljRnVuY3Rp
b25zR2V0dGVySW1wbGVtZW50YXRpb24KICAgICBteSAoJHNlbGYsICRpbnRlcmZhY2UpID0gQF87
CiAKICAgICBteSAkbWFwRnVuY3Rpb24gPSBzdWIgewotICAgICAgICBteSAkbmFtZSA9ICRfLT5z
aWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJF8tPm5hbWU7CiAgICAgICAgIG15
IEBhdHRyaWJ1dGVzID0gcXcoa0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkpOwotICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAia0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJEb250RW51bSJ9OworICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAia0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9udEVu
dW0ifTsKIAogICAgICAgICByZXR1cm4gICJ7IFwiJG5hbWVcIiwgJG5hbWUsICIgLiBqb2luKCIg
fCAiLCBAYXR0cmlidXRlcykgLiAiIH0iOwogICAgIH07CkBAIC01NDcsMTQgKzU0MywxNCBAQCBz
dWIgX3N0YXRpY1ZhbHVlc0dldHRlckltcGxlbWVudGF0aW9uCiAgICAgbXkgKCRzZWxmLCAkaW50
ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkgJG1hcEZ1bmN0aW9uID0gc3ViIHsKLSAgICAgICAgcmV0
dXJuIGlmICRfLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ltcGxlbWVudGF0
aW9uIn07CisgICAgICAgIHJldHVybiBpZiAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW1w
bGVtZW50YXRpb24ifTsKIAotICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRfLT5zaWduYXR1
cmUtPm5hbWU7CisgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJF8tPm5hbWU7CiAgICAgICAg
IG15ICRnZXR0ZXJOYW1lID0gJHNlbGYtPl9nZXR0ZXJOYW1lKCRfKTsKICAgICAgICAgbXkgJHNl
dHRlck5hbWUgPSAkXy0+aXNSZWFkT25seSA/ICIwIiA6ICRzZWxmLT5fc2V0dGVyTmFtZSgkXyk7
CiAgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gcXcoa0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlKTsKICAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkiKSBpZiAkXy0+aXNSZWFkT25seTsKLSAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKKyAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImtKU1By
b3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRv
bnRFbnVtIn07CiAKICAgICAgICAgcmV0dXJuICJ7IFwiJGF0dHJpYnV0ZU5hbWVcIiwgJGdldHRl
ck5hbWUsICRzZXR0ZXJOYW1lLCAiIC4gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIC4gIiB9IjsK
ICAgICB9OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVu
bmVyLnBtCShyZXZpc2lvbiAyMDgxMjkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw4ICs3MSw2IEBAIHN1YiBfY2xhc3NOYW1lCiB7CiAgICAgbXkgKCR0eXBlKSA9
IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlw
ZSI7Ci0KICAgICByZXR1cm4gIkpTIiAuIF9pbXBsZW1lbnRhdGlvbkNsYXNzTmFtZSgkdHlwZSk7
CiB9CiAKQEAgLTE5MSw3ICsxODksNyBAQCBFT0YKICAgICBpZiAobXkgQGZ1bmN0aW9ucyA9IEB7
JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBwdXNoKEBjb250ZW50cywgIlxuICAg
IC8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5j
dGlvbnMpIHsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRpYyBKU1ZhbHVl
UmVmIEB7WyRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lXX0oSlNDb250ZXh0UmVmLCBKU09iamVj
dFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVm
Kik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHN0YXRpYyBKU1ZhbHVl
UmVmIEB7WyRmdW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTT2Jq
ZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopO1xuIik7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTI4NSw3ICsyODMsNyBAQCBFT0YKICAgICAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCA8PEVPRik7CiAKLUpTVmFsdWVSZWYgJHtjbGFzc05hbWV9OjpAe1skZnVuY3Rpb24tPnNpZ25h
dHVyZS0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK0pTVmFsdWVSZWYgJHtjbGFzc05hbWV9
OjpAe1skZnVuY3Rpb24tPm5hbWVdfShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYs
IEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgJHtpbXBs
ZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9
KGNvbnRleHQsIHRoaXNPYmplY3QpOwogICAgIGlmICghaW1wbCkKQEAgLTI5Myw0MCArMjkxLDQw
IEBAIEpTVmFsdWVSZWYgJHtjbGFzc05hbWV9OjpAe1skZnVuY3Rpb24tPnMKIAogRU9GCiAgICAg
ICAgICAgICBteSAkZnVuY3Rpb25DYWxsOwotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7
Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJpbXBsLT4iIC4gJGZ1bmN0aW9uLT5z
aWduYXR1cmUtPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhj
ZXB0aW9uKSI7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
Q2FsbCA9ICJpbXBsLT4iIC4gJGZ1bmN0aW9uLT5uYW1lIC4gIihjb250ZXh0LCBhcmd1bWVudENv
dW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbikiOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgICAgICBteSBAcGFyYW1ldGVycyA9ICgpOwotICAgICAgICAgICAgICAgIG15IEBzcGVj
aWZpZWRQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgICAgICAgICAg
ICAgIG15IEBhcmd1bWVudHMgPSAoKTsKKyAgICAgICAgICAgICAgICBteSBAc3BlY2lmaWVkQXJn
dW1lbnRzID0gQHskZnVuY3Rpb24tPmFyZ3VtZW50c307CiAKLSAgICAgICAgICAgICAgICAkc2Vs
Zi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPnR5cGUsICRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICAkc2VsZi0+
X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJGZ1bmN0aW9uLT50eXBlKTsKIAot
ICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IlBhc3NDb250ZXh0In0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAcGFyYW1l
dGVycywgImNvbnRleHQiKTsKKyAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiUGFzc0NvbnRleHQifSkgeworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBhcmd1bWVudHMsICJjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgZm9yZWFjaCBteSAkaSAoMC4uJCNzcGVjaWZpZWRQYXJhbWV0ZXJzKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG15ICRwYXJhbWV0ZXIgPSAkc3BlY2lmaWVkUGFyYW1ldGVyc1skaV07Cisg
ICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoMC4uJCNzcGVjaWZpZWRBcmd1bWVudHMpIHsK
KyAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50ID0gJHNwZWNpZmllZEFyZ3VtZW50c1sk
aV07CiAKLSAgICAgICAgICAgICAgICAgICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhcJWNvbnRl
bnRzSW5jbHVkZXMsICR0eXBlLCAkcGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgJHNl
bGYtPl9pbmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVkZXMsICR0eXBlKTsKIAotICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5
cGVWYXJpYWJsZURlY2xhcmF0aW9uKCRwYXJhbWV0ZXIsICRwYXJhbWV0ZXItPm5hbWUsICJhcmd1
bWVudHNbJGldIiwgImFyZ3VtZW50Q291bnQgPiAkaSIpIC4gIlxuIik7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICIgLiAkc2VsZi0+X3BsYXRmb3JtVHlwZVZhcmlh
YmxlRGVjbGFyYXRpb24oJGFyZ3VtZW50LT50eXBlLCAkYXJndW1lbnQtPm5hbWUsICJhcmd1bWVu
dHNbJGldIiwgImFyZ3VtZW50Q291bnQgPiAkaSIpIC4gIlxuIik7CiAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJhbWV0ZXJzLCAkc2VsZi0+X3BhcmFt
ZXRlckV4cHJlc3Npb24oJHBhcmFtZXRlcikpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBh
cmd1bWVudHMsICRzZWxmLT5fYXJndW1lbnRFeHByZXNzaW9uKCRhcmd1bWVudCkpOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICRmdW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAu
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIigiIC4gam9pbigiLCAiLCBAcGFyYW1ldGVy
cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJpbXBsLT4iIC4gJGZ1
bmN0aW9uLT5uYW1lIC4gIigiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAg
JHtmdW5jdGlvbkNhbGx9O1xuXG4iKSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZS0+bmFt
ZSBlcSAidm9pZCI7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICByZXR1cm4gIiAu
ICRzZWxmLT5fcmV0dXJuRXhwcmVzc2lvbigkZnVuY3Rpb24tPnNpZ25hdHVyZSwgJGZ1bmN0aW9u
Q2FsbCkgLiAiO1xufVxuIik7CisgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAke2Z1
bmN0aW9uQ2FsbH07XG5cbiIpIGlmICRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9pZCI7Cisg
ICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICByZXR1cm4gIiAuICRzZWxmLT5fcmV0dXJu
RXhwcmVzc2lvbigkZnVuY3Rpb24tPnR5cGUsICRmdW5jdGlvbkNhbGwpIC4gIjtcbn1cbiIpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG15IEBhdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNl
LT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBwdXNoKEBjb250ZW50cywgIlxuLy8gQXR0cmlidXRl
c1xuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQGF0dHJpYnV0ZXMpIHsKLSAg
ICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPnR5cGUsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CisgICAgICAg
ICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJGF0dHJpYnV0
ZS0+dHlwZSk7CiAKICAgICAgICAgICAgIG15ICRnZXR0ZXJOYW1lID0gJHNlbGYtPl9nZXR0ZXJO
YW1lKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGdldHRlckV4cHJlc3Npb24gPSAiaW1w
bC0+JHtnZXR0ZXJOYW1lfSgpIjsKQEAgLTMzOSw3ICszMzcsNyBAQCBKU1ZhbHVlUmVmICR7Y2xh
c3NOYW1lfTo6JHtnZXR0ZXJOYW1lfShKCiAgICAgaWYgKCFpbXBsKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAgICByZXR1cm4gQHtbJHNlbGYtPl9y
ZXR1cm5FeHByZXNzaW9uKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJGdldHRlckV4cHJlc3Npb24p
XX07CisgICAgcmV0dXJuIEB7WyRzZWxmLT5fcmV0dXJuRXhwcmVzc2lvbigkYXR0cmlidXRlLT50
eXBlLCAkZ2V0dGVyRXhwcmVzc2lvbildfTsKIH0KIEVPRgogCkBAIC0zNTQsNyArMzUyLDcgQEAg
Ym9vbCAke2NsYXNzTmFtZX06OkB7WyRzZWxmLT5fc2V0dGVyTmFtZQogCiBFT0YKIAotICAgICAg
ICAgICAgICAgIG15ICRwbGF0Zm9ybVZhbHVlID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGVDb25zdHJ1
Y3RvcigkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgIG15
ICRwbGF0Zm9ybVZhbHVlID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3RvcigkYXR0cmli
dXRlLT50eXBlLCAidmFsdWUiKTsKIAogICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCA8
PEVPRik7CiAgICAgaW1wbC0+QHtbJHNlbGYtPl9zZXR0ZXJOYW1lKCRhdHRyaWJ1dGUpXX0oJHtw
bGF0Zm9ybVZhbHVlfSk7CkBAIC0zODMsMTIgKzM4MSwxMiBAQCBzdWIgX2dldHRlck5hbWUKIHsK
ICAgICBteSAoJHNlbGYsICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICByZXR1cm4gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgIHJldHVybiAkYXR0cmlidXRlLT5uYW1lOwogfQogCiBz
dWIgX2luY2x1ZGVIZWFkZXJzCiB7Ci0gICAgbXkgKCRzZWxmLCAkaGVhZGVycywgJHR5cGUsICRz
aWduYXR1cmUpID0gQF87CisgICAgbXkgKCRzZWxmLCAkaGVhZGVycywgJHR5cGUpID0gQF87CiAK
ICAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJHR5cGU7CiAgICAgcmV0dXJuIGlmICR0eXBlLT5u
YW1lIGVxICJib29sZWFuIjsKQEAgLTQzMSw3ICs0MjksNyBAQCBzdWIgX3BhcmVudEludGVyZmFj
ZQogCiBzdWIgX3BsYXRmb3JtVHlwZQogewotICAgIG15ICgkc2VsZiwgJHR5cGUsICRzaWduYXR1
cmUpID0gQF87CisgICAgbXkgKCRzZWxmLCAkdHlwZSkgPSBAXzsKIAogICAgIHJldHVybiB1bmRl
ZiB1bmxlc3MgZGVmaW5lZCAkdHlwZTsKIApAQCAtNDQ0LDkgKzQ0Miw3IEBAIHN1YiBfcGxhdGZv
cm1UeXBlCiAKIHN1YiBfcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IKIHsKLSAgICBteSAoJHNlbGYs
ICRzaWduYXR1cmUsICRhcmd1bWVudE5hbWUpID0gQF87Ci0KLSAgICBteSAkdHlwZSA9ICRzaWdu
YXR1cmUtPnR5cGU7CisgICAgbXkgKCRzZWxmLCAkdHlwZSwgJGFyZ3VtZW50TmFtZSkgPSBAXzsK
IAogICAgIHJldHVybiAiSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCAkYXJndW1lbnROYW1lKSIg
aWYgJHR5cGUtPm5hbWUgZXEgImJvb2xlYW4iOwogICAgIHJldHVybiAiJGFyZ3VtZW50TmFtZSIg
aWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CkBAIC00NTcsMTAgKzQ1MywxMCBAQCBzdWIgX3Bs
YXRmb3JtVHlwZUNvbnN0cnVjdG9yCiAKIHN1YiBfcGxhdGZvcm1UeXBlVmFyaWFibGVEZWNsYXJh
dGlvbgogewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwgJHZhcmlhYmxlTmFtZSwgJGFyZ3Vt
ZW50TmFtZSwgJGNvbmRpdGlvbikgPSBAXzsKKyAgICBteSAoJHNlbGYsICR0eXBlLCAkdmFyaWFi
bGVOYW1lLCAkYXJndW1lbnROYW1lLCAkY29uZGl0aW9uKSA9IEBfOwogCi0gICAgbXkgJHBsYXRm
b3JtVHlwZSA9ICRzZWxmLT5fcGxhdGZvcm1UeXBlKCRzaWduYXR1cmUtPnR5cGUsICRzaWduYXR1
cmUpOwotICAgIG15ICRjb25zdHJ1Y3RvciA9ICRzZWxmLT5fcGxhdGZvcm1UeXBlQ29uc3RydWN0
b3IoJHNpZ25hdHVyZSwgJGFyZ3VtZW50TmFtZSk7CisgICAgbXkgJHBsYXRmb3JtVHlwZSA9ICRz
ZWxmLT5fcGxhdGZvcm1UeXBlKCR0eXBlKTsKKyAgICBteSAkY29uc3RydWN0b3IgPSAkc2VsZi0+
X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCR0eXBlLCAkYXJndW1lbnROYW1lKTsKIAogICAgIG15
ICVub25Qb2ludGVyVHlwZXMgPSAoCiAgICAgICAgICJib29sIiA9PiAxLApAQCAtNDg1LDkgKzQ4
MSw3IEBAIHN1YiBfcGxhdGZvcm1UeXBlVmFyaWFibGVEZWNsYXJhdGlvbgogCiBzdWIgX3JldHVy
bkV4cHJlc3Npb24KIHsKLSAgICBteSAoJHNlbGYsICRzaWduYXR1cmUsICRleHByZXNzaW9uKSA9
IEBfOwotCi0gICAgbXkgJHJldHVyblR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOworICAgIG15ICgk
c2VsZiwgJHJldHVyblR5cGUsICRleHByZXNzaW9uKSA9IEBfOwogCiAgICAgcmV0dXJuICJKU1Zh
bHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSIgaWYgJHJldHVyblR5cGUtPm5hbWUgZXEgInZvaWQi
OwogICAgIHJldHVybiAiSlNWYWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsICR7ZXhwcmVzc2lvbn0p
IiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiI7CkBAIC00OTcsMTIgKzQ5MSwxMiBA
QCBzdWIgX3JldHVybkV4cHJlc3Npb24KICAgICByZXR1cm4gInRvSlMoY29udGV4dCwgV1RGOjpn
ZXRQdHIoJHtleHByZXNzaW9ufSkpIjsKIH0KIAotc3ViIF9wYXJhbWV0ZXJFeHByZXNzaW9uCitz
dWIgX2FyZ3VtZW50RXhwcmVzc2lvbgogewotICAgIG15ICgkc2VsZiwgJHBhcmFtZXRlcikgPSBA
XzsKKyAgICBteSAoJHNlbGYsICRhcmd1bWVudCkgPSBAXzsKIAotICAgIG15ICR0eXBlID0gJHBh
cmFtZXRlci0+dHlwZTsKLSAgICBteSAkbmFtZSA9ICRwYXJhbWV0ZXItPm5hbWU7CisgICAgbXkg
JHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7
CiAKICAgICByZXR1cm4gIiR7bmFtZX0uZ2V0KCkiIGlmICQkc2VsZntjb2RlR2VuZXJhdG9yfS0+
SXNTdHJpbmdUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gJG5hbWU7CkBAIC01MTIsNyArNTA2LDcg
QEAgc3ViIF9zZXR0ZXJOYW1lCiB7CiAgICAgbXkgKCRzZWxmLCAkYXR0cmlidXRlKSA9IEBfOwog
Ci0gICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgbXkgJG5h
bWUgPSAkYXR0cmlidXRlLT5uYW1lOwogCiAgICAgcmV0dXJuICJzZXQiIC4gJCRzZWxme2NvZGVH
ZW5lcmF0b3J9LT5XS191Y2ZpcnN0KCRuYW1lKTsKIH0KQEAgLTUyMiw5ICs1MTYsOSBAQCBzdWIg
X3N0YXRpY0Z1bmN0aW9uc0dldHRlckltcGxlbWVudGF0aW9uCiAgICAgbXkgKCRzZWxmLCAkaW50
ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkgJG1hcEZ1bmN0aW9uID0gc3ViIHsKLSAgICAgICAgbXkg
JG5hbWUgPSAkXy0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICBteSAkbmFtZSA9ICRfLT5uYW1l
OwogICAgICAgICBteSBAYXR0cmlidXRlcyA9IHF3KGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KTsKLSAgICAgICAgcHVzaChAYXR0cmli
dXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKKyAgICAgICAgcHVzaChAYXR0cmlidXRl
cywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkRvbnRFbnVtIn07CiAKICAgICAgICAgcmV0dXJuICAieyBcIiRuYW1lXCIsICRuYW1l
LCAiIC4gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIC4gIiB9IjsKICAgICB9OwpAQCAtNTYyLDE0
ICs1NTYsMTQgQEAgc3ViIF9zdGF0aWNWYWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbgogICAgIG15
ICgkc2VsZiwgJGludGVyZmFjZSkgPSBAXzsKIAogICAgIG15ICRtYXBGdW5jdGlvbiA9IHN1YiB7
Ci0gICAgICAgIHJldHVybiBpZiAkXy0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Tm9JbXBsZW1lbnRhdGlvbiJ9OworICAgICAgICByZXR1cm4gaWYgJF8tPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOb0ltcGxlbWVudGF0aW9uIn07CiAKLSAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUg
PSAkXy0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRfLT5u
YW1lOwogICAgICAgICBteSAkZ2V0dGVyTmFtZSA9ICRzZWxmLT5fZ2V0dGVyTmFtZSgkXyk7CiAg
ICAgICAgIG15ICRzZXR0ZXJOYW1lID0gJF8tPmlzUmVhZE9ubHkgPyAiMCIgOiAkc2VsZi0+X3Nl
dHRlck5hbWUoJF8pOwogICAgICAgICBteSBAYXR0cmlidXRlcyA9IHF3KGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSk7CiAgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IikgaWYgJF8tPmlzUmVhZE9ubHk7Ci0gICAgICAgIHB1c2goQGF0
dHJpYnV0ZXMsICJrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtIikgaWYgJF8tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07CisgICAgICAgIHB1c2goQGF0dHJp
YnV0ZXMsICJrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtIikgaWYgJF8tPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJEb250RW51bSJ9OwogCiAgICAgICAgIHJldHVybiAieyBcIiRhdHRyaWJ1dGVO
YW1lXCIsICRnZXR0ZXJOYW1lLCAkc2V0dGVyTmFtZSwgIiAuIGpvaW4oIiB8ICIsIEBhdHRyaWJ1
dGVzKSAuICIgfSI7CiAgICAgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293360</attachid>
            <date>2016-10-30 11:39:37 -0700</date>
            <delta_ts>2016-10-30 11:40:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164208-20161030113543.patch</filename>
            <type>text/plain</type>
            <size>201464</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODEyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTMwICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVzdHJ1Y3R1cmUgSURM
UGFyc2VyIHN0cnVjdHMgdG8gYmV0dGVyIG1hdGNoIG1vZGVybiBXZWJJTEQgY29uY2VwdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc3RydWN0dXJl
IElETFBhcnNlcnMgc3RydWN0cyB0byBtYXRjaCBtb2Rlcm4gV2ViSURMIGNvbnZlbnRpb25zOgor
ICAgICAgICAtIFJlbmFtZSBzdHJ1Y3RzIHRvIGhhdmUgbW9yZSBXZWJDb3JlIGxpa2UgbmFtaW5n
LCBjb25zaXN0ZW50bHkgdXNpbmcKKyAgICAgICAgICB0aGUgcHJlZml4IElETC4KKyAgICAgICAg
LSBSZW1vdmUgZG9tU2lnbmF0dXJlLiBTaW5raW5nIGl0J3MgcHJvcGVydGllcyBpbnRvIHRoZSBz
dHJ1Y3RzIHRoYXQKKyAgICAgICAgICBjb250YWluZWQgaXQuCisgICAgICAgIC0gQWRkIElETEFy
Z3VtZW50LCByZXBsYWNpbmcgdGhlIHVzZSBvZiBkb21TaWduYXR1cmVzIGZvciBhcmd1bWVudHMu
CisgICAgICAgICAgSURMQXJndW1lbnQgaXMgdGhlIHN1YnNldCBvZiBkb21TaWduYXR1cmVzIG5l
ZWRlZCBmb3IgYXJndW1lbnRzLgorICAgICAgICAtIFJlbmFtZSBkb21GdW5jdGlvbiB0byBJRExP
cGVyYXRpb24gKG1hdGNoaW5nIFdlYklMRCBub21lbmNsYXR1cmUpLAorICAgICAgICAgIHJlcGxh
Y2Ugc2lnbmF0dXJlIHdpdGggaXRzIG93biBuYW1lLCB0eXBlIChmb3IgcmV0dXJuVHlwZSksIHNw
ZWNpYWxzLAorICAgICAgICAgIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGVzIHByb3BlcnRpZXMuCisg
ICAgICAgIC0gR2l2ZSBJRExBdHRyaWJ1dGUgaXQncyBvd24gbmFtZSwgdHlwZSBhbmQgZXh0ZW5k
ZWQgYXR0cmlidXRlcyBwcm9wZXJ0aWVzLgorICAgICAgICAtIEFkZCBJRExEaWN0aW9uYXJ5TWVt
YmVyLCByZXBsYWNpbmcgdGhlIHVzZSBvZiBkb21TaWduYXR1cmUgYXMgdGhlCisgICAgICAgICAg
dHlwZSBvZiBtZW1iZXJzIGluIElETERpY3Rpb25hcnkuIEdpdmUgaXQgbmFtZSwgdHlwZSwgaXNS
ZXF1aXJlZCwKKyAgICAgICAgICBkZWZhdWx0IGFuZCBleHRlbmRlZEF0dHJpYnV0ZXMgcHJvcGVy
dGllcy4KKyAgICAgICAgLSBSZW5hbWVkIFR5cGVkZWYgdG8gYmUgSURMVHlwZWRlZi4gUmVtb3Zl
IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIAorICAgICAgICAgIHByb3BlcnR5IGFzIHRob3NlIGFy
ZSBub3QgYWxsb3dlZCBpbiB0eXBlZGVmcyBwZXItUGViSURMLgorCisgICAgICAgIEFsc28gZml4
IHNvbWUgcGFyc2luZyBpc3N1ZXM6CisgICAgICAgIC0gU3RvcCBwYXJzaW5nICdpbicgZGlyZWN0
aXZlcyBpbiBmdW5jdGlvbiBhcmd1bWVudHMuCisgICAgICAgIC0gU3RvcCBwYXJzaW5nIGV4dGVu
ZGVkIGF0dHJpYnV0ZXMgaW4gdHlwZWRlZnMuCisgICAgICAgIC0gU3VwcG9ydCBhcHBseWluZyB0
eXBlZGVmcyB0byB0eXBlcyBkZWVwIGluIGFnZ3JlZ2F0ZSB0eXBlcworICAgICAgICAgIChlLmcu
IChzZXF1ZW5jZTwoTE9ORyBvciBTVFJJTkcpPiBvciBET01TdHJpbmcpPykuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbDoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgc3RydWN0IHR5cGVzLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbDoKKyAgICAgICAg
UmVtb3ZlIHRlc3Qgd2hpY2ggdGVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW4gdHlwZWRlZnMs
CisgICAgICAgIGFuZCBhZGQgYSB0ZXN0IHdoaWNoIHRlc3RzIHR5cGVkZWZzIHVzZWQgaW4gZGVl
cCB0eXBlIHN0cnVjdHVyZXMuCisKKyAgICAgICAgKiBwYWdlL21ha2Vfc2V0dGluZ3MucGw6Cisg
ICAgICAgIERvbid0IGdlbmVyYXRlIHRoZSAnaW4nIHByZWZpeCBmb3IgYXJndW1lbnRzIGluIElE
TCBmaWxlcy4KKwogMjAxNi0xMC0zMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDIwODEyOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29y
a2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNiBAQCBteSAldHlwZWRBcnJheVR5cGVzID0gKAogICAg
ICJVaW50OENsYW1wZWRBcnJheSIgPT4gMSwKICk7CiAKLW15ICVub25Qb2ludGVyVHlwZUhhc2gg
PSAoICJET01UaW1lU3RhbXAiID0+IDEgKTsKLQogbXkgJXN2Z0F0dHJpYnV0ZXNJbkhUTUxIYXNo
ID0gKAogICAgICJjbGFzcyIgPT4gMSwKICAgICAiaWQiID0+IDEsCkBAIC0yODgsMjIgKzI4Niw2
IEBAIHN1YiBGb3JBbGxQYXJlbnRzCiAgICAgJiRyZWN1cnNlKCRpbnRlcmZhY2UsICRpbnRlcmZh
Y2UpOwogfQogCi1zdWIgRmluZFN1cGVyTWV0aG9kCi17Ci0gICAgbXkgKCRvYmplY3QsICRpbnRl
cmZhY2UsICRmdW5jdGlvbk5hbWUpID0gQF87Ci0gICAgbXkgJGluZGV4ZXI7Ci0gICAgJG9iamVj
dC0+Rm9yQWxsUGFyZW50cygkaW50ZXJmYWNlLCB1bmRlZiwgc3ViIHsKLSAgICAgICAgbXkgJGN1
cnJlbnRJbnRlcmZhY2UgPSBzaGlmdDsKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7
JGN1cnJlbnRJbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSBlcSAkZnVuY3Rpb25OYW1lKSB7Ci0gICAgICAgICAgICAgICAg
JGluZGV4ZXIgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
J3BydW5lJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotICAgIHJldHVybiAk
aW5kZXhlcjsKLX0KLQogc3ViIElETEZpbGVGb3JJbnRlcmZhY2UKIHsKICAgICBteSAkb2JqZWN0
ID0gc2hpZnQ7CkBAIC0zMzIsNyArMzE0LDcgQEAgc3ViIEdldEF0dHJpYnV0ZUZyb21JbnRlcmZh
Y2UKIAogICAgIG15ICRpbnRlcmZhY2UgPSAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkb3V0ZXJJ
bnRlcmZhY2UsICRpbnRlcmZhY2VOYW1lKTsKICAgICBmb3IgbXkgJGF0dHJpYnV0ZSAoQHskaW50
ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICByZXR1cm4gJGF0dHJpYnV0ZSBpZiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgJGF0dHJpYnV0ZU5hbWU7CisgICAgICAgIHJldHVy
biAkYXR0cmlidXRlIGlmICRhdHRyaWJ1dGUtPm5hbWUgZXEgJGF0dHJpYnV0ZU5hbWU7CiAgICAg
fQogICAgIGRpZSgiQ291bGQgbm90IGZpbmQgYXR0cmlidXRlICckYXR0cmlidXRlTmFtZScgb24g
aW50ZXJmYWNlICckaW50ZXJmYWNlTmFtZScuIik7CiB9CkBAIC0zOTUsNyArMzc3LDcgQEAgc3Vi
IElzTnVtZXJpY1R5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBh
c3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3Nl
cnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVy
biAxIGlmICRpbnRlZ2VyVHlwZUhhc2h7JHR5cGUtPm5hbWV9OwogICAgIHJldHVybiAxIGlmICRm
bG9hdGluZ1BvaW50VHlwZUhhc2h7JHR5cGUtPm5hbWV9OwpAQCAtNDA2LDcgKzM4OCw3IEBAIHN1
YiBJc1N0cmluZ09yRW51bVR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAg
ICAgCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gMSBpZiAkb2JqZWN0LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwogICAgIHJldHVy
biAxIGlmICRvYmplY3QtPklzRW51bVR5cGUoJHR5cGUpOwpAQCAtNDE3LDcgKzM5OSw3IEBAIHN1
YiBJc0ludGVnZXJUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAg
YXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNz
ZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1
cm4gMSBpZiAkaW50ZWdlclR5cGVIYXNoeyR0eXBlLT5uYW1lfTsKICAgICByZXR1cm4gMDsKQEAg
LTQyNyw3ICs0MDksNyBAQCBzdWIgSXNGbG9hdGluZ1BvaW50VHlwZQogewogICAgIG15ICgkb2Jq
ZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlw
ZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkg
bmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDEgaWYgJGZsb2F0aW5nUG9pbnRUeXBlSGFzaHsk
dHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDA7CkBAIC00MzcsNyArNDE5LDcgQEAgc3ViIElzUHJp
bWl0aXZlVHlwZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2Vy
dCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgi
Tm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDEg
aWYgJHByaW1pdGl2ZVR5cGVIYXNoeyR0eXBlLT5uYW1lfTsKICAgICByZXR1cm4gMSBpZiAkb2Jq
ZWN0LT5Jc051bWVyaWNUeXBlKCR0eXBlKTsKQEAgLTQ0OSw3ICs0MzEsNyBAQCBzdWIgSXNTdHJp
bmdUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJO
b3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3Qg
YSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBpZiAk
dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBl
cSAiVVNWU3RyaW5nIjsKQEAgLTQ2MCw3ICs0NDIsNyBAQCBzdWIgSXNFbnVtVHlwZQogewogICAg
IG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIGRlZmluZWQoJG9iamVjdC0+R2V0
RW51bUJ5VHlwZSgkdHlwZSkpOwogfQpAQCAtNDY5LDcgKzQ1MSw3IEBAIHN1YiBHZXRFbnVtQnlU
eXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3Qg
YSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0
eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICBteSAkbmFtZSA9ICR0eXBl
LT5uYW1lOwogCkBAIC01MDksNyArNDkxLDcgQEAgc3ViIElzRXh0ZXJuYWxFbnVtVHlwZQogewog
ICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzRW51bVR5
cGUoJHR5cGUpICYmIGRlZmluZWQoJGNhY2hlZEV4dGVybmFsRW51bWVyYXRpb25zLT57JHR5cGUt
Pm5hbWV9KTsKIH0KQEAgLTUxOCw3ICs1MDAsNyBAQCBzdWIgSGFzRW51bUltcGxlbWVudGF0aW9u
TmFtZU92ZXJyaWRlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNz
ZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0
KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4g
MSBpZiBleGlzdHMgJGVudW1UeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5u
YW1lfTsKICAgICByZXR1cm4gMDsKQEAgLTUyOCw3ICs1MTAsNyBAQCBzdWIgR2V0RW51bUltcGxl
bWVudGF0aW9uTmFtZU92ZXJyaWRlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwog
Ci0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7Cisg
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAg
ICByZXR1cm4gJGVudW1UeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5uYW1l
fTsKIH0KQEAgLTUzNyw3ICs1MTksNyBAQCBzdWIgR2V0RGljdGlvbmFyeUJ5VHlwZQogewogICAg
IG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgbXkgJG5hbWUgPSAkdHlwZS0+bmFtZTsKIApA
QCAtNTc2LDcgKzU1OCw3IEBAIHN1YiBJc0RpY3Rpb25hcnlUeXBlCiB7CiAgICAgbXkgKCRvYmpl
Y3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBl
KSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBu
ZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgPX4gL15bQS1aXS8gJiYgZGVm
aW5lZCgkb2JqZWN0LT5HZXREaWN0aW9uYXJ5QnlUeXBlKCR0eXBlKSk7CiB9CkBAIC01ODYsNyAr
NTY4LDcgQEAgc3ViIElzRXh0ZXJuYWxEaWN0aW9uYXJ5VHlwZQogewogICAgIG15ICgkb2JqZWN0
LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkg
bmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzRGljdGlvbmFyeVR5cGUoJHR5cGUp
ICYmIGRlZmluZWQoJGNhY2hlZEV4dGVybmFsRGljdGlvbmFyaWVzLT57JHR5cGUtPm5hbWV9KTsK
IH0KQEAgLTU5NSw3ICs1NzcsNyBAQCBzdWIgSGFzRGljdGlvbmFyeUltcGxlbWVudGF0aW9uTmFt
ZU92ZXJyCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJO
b3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3Qg
YSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBpZiBl
eGlzdHMgJGRpY3Rpb25hcnlUeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5u
YW1lfTsKICAgICByZXR1cm4gMDsKQEAgLTYwNSw3ICs1ODcsNyBAQCBzdWIgR2V0RGljdGlvbmFy
eUltcGxlbWVudGF0aW9uTmFtZU92ZXJyCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBf
OwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gJGRpY3Rpb25hcnlUeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0
eXBlLT5uYW1lfTsKIH0KQEAgLTYxNCw5ICs1OTYsOCBAQCBzdWIgSXNOb25Qb2ludGVyVHlwZQog
ewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCi0gICAgcmV0dXJuIDEgaWYgJG5vblBvaW50
ZXJUeXBlSGFzaHskdHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNQcmlt
aXRpdmVUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTYyNSw3ICs2MDYsNyBAQCBz
dWIgSXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0g
QF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBl
IjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsK
IAogICAgIHJldHVybiAxIGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0eXBlLT5u
YW1lfTsKICAgICByZXR1cm4gMDsKQEAgLTYzNSw3ICs2MTYsNyBAQCBzdWIgSXNTVkdUeXBlV2l0
aFdyaXRhYmxlUHJvcGVydGllc05lZWRpCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBf
OwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gMSBpZiAkc3ZnVHlwZVdpdGhXcml0YWJsZVByb3BlcnRpZXNOZWVkaW5nVGVh
ck9mZnskdHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDA7CkBAIC02NDUsNyArNjI2LDcgQEAgc3Vi
IElzVHlwZWRBcnJheVR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAg
ICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBh
c3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJl
dHVybiAxIGlmICR0eXBlZEFycmF5VHlwZXN7JHR5cGUtPm5hbWV9OwogICAgIHJldHVybiAwOwpA
QCAtNjU1LDcgKzYzNiw3IEBAIHN1YiBJc1JlZlB0clR5cGUKIHsKICAgICBteSAoJG9iamVjdCwg
JHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5l
ICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJ
RExUeXBlIjsKIAogICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlw
ZSk7CiAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSk7CkBA
IC02NzEsNyArNjUyLDcgQEAgc3ViIEdldFNWR1R5cGVOZWVkaW5nVGVhck9mZgogewogICAgIG15
ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigk
dHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRzdmdUeXBlTmVlZGluZ1RlYXJPZmZ7
JHR5cGUtPm5hbWV9IGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0eXBlLT5uYW1l
fTsKICAgICByZXR1cm4gdW5kZWY7CkBAIC02ODEsNyArNjYyLDcgQEAgc3ViIEdldFNWR1dyYXBw
ZWRUeXBlTmVlZGluZ1RlYXJPZmYKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAK
LSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAg
ICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAg
IG15ICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPSAkb2JqZWN0LT5HZXRTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJHR5cGUpOwogICAgIHJldHVybiAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmIGlmIG5vdCAk
c3ZnVHlwZU5lZWRpbmdUZWFyT2ZmOwpAQCAtNzExLDcgKzY5Miw3IEBAIHN1YiBJc1NWR0FuaW1h
dGVkVHlwZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgi
Tm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmpl
Y3QtPklzU1ZHQW5pbWF0ZWRUeXBlTmFtZSgkdHlwZS0+bmFtZSk7CiB9CkBAIC03MjAsNyArNzAx
LDcgQEAgc3ViIElzQ29uc3RydWN0b3JUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9
IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlw
ZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7
CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgPX4gL0NvbnN0cnVjdG9yJC87CiB9CkBAIC03Mjks
NyArNzEwLDcgQEAgc3ViIElzU2VxdWVuY2VUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBl
KSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9t
VHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlw
ZSI7CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgInNlcXVlbmNlIjsKIH0KQEAgLTczOCw3
ICs3MTksNyBAQCBzdWIgR2V0U2VxdWVuY2VJbm5lclR5cGUKIHsKICAgICBteSAoJG9iamVjdCwg
JHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5l
ICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJ
RExUeXBlIjsKIAogICAgIHJldHVybiBAeyR0eXBlLT5zdWJ0eXBlc31bMF07CiB9CkBAIC03NDcs
NyArNzI4LDcgQEAgc3ViIElzRnJvemVuQXJyYXlUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0
eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAi
ZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURM
VHlwZSI7CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgIkZyb3plbkFycmF5IjsKIH0KQEAg
LTc1Niw3ICs3MzcsNyBAQCBzdWIgR2V0RnJvemVuQXJyYXlJbm5lclR5cGUKIHsKICAgICBteSAo
JG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYo
JHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5
cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiBAeyR0eXBlLT5zdWJ0eXBlc31bMF07CiB9
CkBAIC03NjUsNyArNzQ2LDcgQEAgc3ViIElzU2VxdWVuY2VPckZyb3plbkFycmF5VHlwZQogewog
ICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzU2VxdWVu
Y2VUeXBlKCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0Zyb3plbkFycmF5VHlwZSgkdHlwZSk7CiB9CkBA
IC03NzQsNyArNzU1LDcgQEAgc3ViIEdldFNlcXVlbmNlT3JGcm96ZW5BcnJheUlubmVyVHlwZQog
ewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIEB7JHR5cGUtPnN1YnR5
cGVzfVswXTsKIH0KQEAgLTg1Myw3ICs4MzQsNyBAQCBzdWIgTGlua092ZXJsb2FkZWRGdW5jdGlv
bnMKIAogICAgIG15ICVuYW1lVG9GdW5jdGlvbnNNYXAgPSAoKTsKICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIG15ICRuYW1lID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9u
LT5uYW1lOwogICAgICAgICAkbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfSA9IFtdIGlmICFleGlz
dHMgJG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX07CiAgICAgICAgIHB1c2goQHskbmFtZVRvRnVu
Y3Rpb25zTWFweyRuYW1lfX0sICRmdW5jdGlvbik7CiAgICAgICAgICRmdW5jdGlvbi0+e292ZXJs
b2Fkc30gPSAkbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfTsKQEAgLTg3MiwxMSArODUzLDExIEBA
IHN1YiBBdHRyaWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyCiB7CiAgICAgbXkgKCRnZW5lcmF0
b3IsICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZTsKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9KSB7Ci0gICAgICAgICRhdHRyaWJ1dGVO
YW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRBcyJ9OworICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKKyAg
ICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSkg
eworICAgICAgICAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEFzIn07CiAgICAgfQotICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOworICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0dHJp
YnV0ZS0+dHlwZTsKIAogICAgICMgU1ZHIGFuaW1hdGVkIHR5cGVzIG5lZWQgdG8gdXNlIGEgc3Bl
Y2lhbCBhdHRyaWJ1dGUgbmFtZS4KICAgICAjIFRoZSByZXN0IG9mIHRoZSBzcGVjaWFsIGNhc2lu
ZyBmb3IgU1ZHIGFuaW1hdGVkIHR5cGVzIGlzIGhhbmRsZWQgaW4gdGhlIGxhbmd1YWdlLXNwZWNp
ZmljIGNvZGUgZ2VuZXJhdG9ycy4KQEAgLTg4OSw3ICs4NzAsNyBAQCBzdWIgQ29udGVudEF0dHJp
YnV0ZU5hbWUKIHsKICAgICBteSAoJGdlbmVyYXRvciwgJGltcGxJbmNsdWRlcywgJGludGVyZmFj
ZU5hbWUsICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICBteSAkY29udGVudEF0dHJpYnV0ZU5hbWUg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07
CisgICAgbXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlJlZmxlY3QifTsKICAgICByZXR1cm4gdW5kZWYgaWYgISRjb250ZW50QXR0cmli
dXRlTmFtZTsKIAogICAgICRjb250ZW50QXR0cmlidXRlTmFtZSA9IGxjICRnZW5lcmF0b3ItPkF0
dHJpYnV0ZU5hbWVGb3JHZXR0ZXJBbmRTZXR0ZXIoJGF0dHJpYnV0ZSkgaWYgJGNvbnRlbnRBdHRy
aWJ1dGVOYW1lIGVxICJWQUxVRV9JU19NSVNTSU5HIjsKQEAgLTkxMCwxMCArODkxLDEwIEBAIHN1
YiBHZXR0ZXJFeHByZXNzaW9uCiAgICAgICAgIHJldHVybiAoJGdlbmVyYXRvci0+V0tfbGNmaXJz
dCgkZ2VuZXJhdG9yLT5BdHRyaWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyKCRhdHRyaWJ1dGUp
KSk7CiAgICAgfQogCi0gICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGU7CisgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT50eXBlOwogCiAg
ICAgbXkgJGZ1bmN0aW9uTmFtZTsKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVVJMIn0pIHsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlVSTCJ9KSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJMQXR0
cmlidXRlIjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiIp
IHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uIjsKQEAgLTk0OCw3ICs5MjksNyBAQCBzdWIgU2V0dGVyRXhwcmVzc2lvbgogICAgICAg
ICByZXR1cm4gKCJzZXQiIC4gJGdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZ2VuZXJhdG9yLT5BdHRy
aWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyKCRhdHRyaWJ1dGUpKSk7CiAgICAgfQogCi0gICAg
bXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgbXkg
JGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT50eXBlOwogCiAgICAgbXkgJGZ1bmN0aW9uTmFt
ZTsKICAgICBpZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgImJvb2xlYW4iKSB7CkBAIC05NzAs
NyArOTUxLDcgQEAgc3ViIElzV3JhcHBlclR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUp
ID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21U
eXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBl
IjsKIAogICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc1JlZlB0clR5cGUoJHR5cGUpOwogICAg
IHJldHVybiAwIGlmICRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwpAQCAtMTAxNyw3
ICs5OTgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UKIHsKICAgICBteSAoJG9i
amVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5
cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUp
IG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc1dyYXBwZXJU
eXBlKCR0eXBlKTsKIApAQCAtMTA0Miw3ICsxMDIzLDcgQEAgc3ViIElzQ2FsbGJhY2tJbnRlcmZh
Y2UKIAogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEg
dHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRpc0NhbGxiYWNr
SW50ZXJmYWNleyR0eXBlLT5uYW1lfSBpZiBleGlzdHMgJGlzQ2FsbGJhY2tJbnRlcmZhY2V7JHR5
cGUtPm5hbWV9OwogICAgIG15ICRyZXN1bHQgPSAkb2JqZWN0LT5Db21wdXRlSXNDYWxsYmFja0lu
dGVyZmFjZSgkdHlwZSk7CkBAIC0xMDU3LDcgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzRnVuY3Rp
b25Pbmx5Q2FsbGJhY2tJbnRlcmZhCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwog
Ci0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7Cisg
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAg
ICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSk7CiAK
QEAgLTEwOTUsNyArMTA3Niw3IEBAIHN1YiBJc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNl
CiAKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5
cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUi
KSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiAkaXNGdW5jdGlvbk9u
bHlDYWxsYmFja0ludGVyZmFjZXskdHlwZS0+bmFtZX0gaWYgZXhpc3RzICRpc0Z1bmN0aW9uT25s
eUNhbGxiYWNrSW50ZXJmYWNleyR0eXBlLT5uYW1lfTsKICAgICBteSAkcmVzdWx0ID0gJG9iamVj
dC0+Q29tcHV0ZUlzRnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpOwpAQCAtMTIy
MCwxMiArMTIwMSwxMiBAQCBzdWIgSW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZQogCiBzdWIgU2hv
dWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZQogewotICAgIG15ICgkb2JqZWN0LCAkcGFyYW1ldGVy
LCAkaW50ZXJmYWNlKSA9IEBfOworICAgIG15ICgkb2JqZWN0LCAkYXJndW1lbnQpID0gQF87CiAK
LSAgICByZXR1cm4gMCBpZiAkcGFyYW1ldGVyLT5pc1ZhcmlhZGljOwotICAgIHJldHVybiAwIGlm
ICRwYXJhbWV0ZXItPnR5cGUtPmlzTnVsbGFibGU7Ci0gICAgcmV0dXJuIDAgaWYgISRvYmplY3Qt
PklzV3JhcHBlclR5cGUoJHBhcmFtZXRlci0+dHlwZSkgJiYgISRvYmplY3QtPklzVHlwZWRBcnJh
eVR5cGUoJHBhcmFtZXRlci0+dHlwZSk7Ci0gICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNTVkdU
eXBlTmVlZGluZ1RlYXJPZmYoJHBhcmFtZXRlci0+dHlwZSk7CisjICAgIHJldHVybiAwIGlmICRh
cmd1bWVudC0+aXNWYXJpYWRpYzsKKyAgICByZXR1cm4gMCBpZiAkYXJndW1lbnQtPnR5cGUtPmlz
TnVsbGFibGU7CisgICAgcmV0dXJuIDAgaWYgISRvYmplY3QtPklzV3JhcHBlclR5cGUoJGFyZ3Vt
ZW50LT50eXBlKSAmJiAhJG9iamVjdC0+SXNUeXBlZEFycmF5VHlwZSgkYXJndW1lbnQtPnR5cGUp
OworICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhcmd1
bWVudC0+dHlwZSk7CiAKICAgICByZXR1cm4gMTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAyMDgx
MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkod29ya2luZyBjb3B5KQpAQCAtMTczLDE5ICsxNzMsMTkgQEAgc3ViIEFkZFN0cmluZ2lmaWVy
T3BlcmF0aW9uSWZOZWVkZWQKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+aXNTdHJp
bmdpZmllcjsKIAotICAgICAgICBteSAkc3RyaW5naWZpZXIgPSBkb21GdW5jdGlvbi0+bmV3KCk7
Ci0gICAgICAgICRzdHJpbmdpZmllci0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwor
ICAgICAgICBteSAkc3RyaW5naWZpZXIgPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICAgICAk
c3RyaW5naWZpZXItPm5hbWUoInRvU3RyaW5nIik7CisKICAgICAgICAgbXkgJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCA9IHt9OwotICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57SW1wbGVt
ZW50ZWRBc30gPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgICRzdHJpbmdp
Zmllci0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlz
dCk7Ci0gICAgICAgICRzdHJpbmdpZmllci0+c2lnbmF0dXJlLT5uYW1lKCJ0b1N0cmluZyIpOwot
ICAgICAgICBkaWUgInN0cmluZ2lmaWVyIGNhbiBvbmx5IGJlIHVzZWQgb24gYXR0cmlidXRlcyBv
ZiBTdHJpbmcgdHlwZXMiIHVubGVzcyAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qt
PntJbXBsZW1lbnRlZEFzfSA9ICRhdHRyaWJ1dGUtPm5hbWU7CisgICAgICAgICRzdHJpbmdpZmll
ci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICBk
aWUgInN0cmluZ2lmaWVyIGNhbiBvbmx5IGJlIHVzZWQgb24gYXR0cmlidXRlcyBvZiBTdHJpbmcg
dHlwZXMiIHVubGVzcyAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRhdHRyaWJ1dGUtPnR5
cGUpOwogICAgICAgICAKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgdXNlIElETFBhcnNl
cidzIGNsb25lVHlwZS4KLSAgICAgICAgbXkgJHR5cGUgPSBkb21UeXBlLT5uZXcoKTsKLSAgICAg
ICAgJHR5cGUtPm5hbWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlLT5uYW1lKTsKKyAgICAg
ICAgbXkgJHR5cGUgPSBJRExUeXBlLT5uZXcoKTsKKyAgICAgICAgJHR5cGUtPm5hbWUoJGF0dHJp
YnV0ZS0+dHlwZS0+bmFtZSk7CiAKLSAgICAgICAgJHN0cmluZ2lmaWVyLT5zaWduYXR1cmUtPnR5
cGUoJHR5cGUpOworICAgICAgICAkc3RyaW5naWZpZXItPnR5cGUoJHR5cGUpOwogCiAgICAgICAg
IHB1c2goQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9LCAkc3RyaW5naWZpZXIpOwogICAgICAgICBs
YXN0OwpAQCAtMTk1LDcgKzE5NSw3IEBAIHN1YiBBZGRTdHJpbmdpZmllck9wZXJhdGlvbklmTmVl
ZGVkCiBzdWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lCiB7CiAgICAgbXkgJGF0dHJp
YnV0ZSA9IHNoaWZ0OwotICAgIG15ICRldmVudFR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZTsKKyAgICBteSAkZXZlbnRUeXBlID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGF0dHJpYnV0ZS0+bmFtZTsKIAogICAgICMgUmVt
b3ZlIHRoZSAib24iIHByZWZpeC4KICAgICAkZXZlbnRUeXBlID0gc3Vic3RyKCRldmVudFR5cGUs
IDIpOwpAQCAtMzA4LDcgKzMwOCw3IEBAIHN1YiBBZGRUb0ltcGxJbmNsdWRlcwogc3ViIElzUmVh
ZG9ubHkKIHsKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7Ci0gICAgcmV0dXJuICRhdHRyaWJ1
dGUtPmlzUmVhZE9ubHkgJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UmVwbGFjZWFibGV9ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1B1dEZvcndhcmRzfTsKKyAgICByZXR1cm4gJGF0dHJpYnV0ZS0+aXNSZWFkT25s
eSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVwbGFjZWFibGV9ICYmICEk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdXRGb3J3YXJkc307CiB9CiAKIHN1YiBB
ZGRDbGFzc0ZvcndhcmRJZk5lZWRlZApAQCAtMzgyLDcgKzM4Miw3IEBAIHN1YiBHZW5lcmF0ZUdl
dE93blByb3BlcnR5U2xvdEJvZHkKICAgICAgICAgIyB3aGVyZSB0aGUgaW5kZXggaXMgb3V0IG9m
IHJhbmdlLgogICAgICAgICAKICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHRoaXMgd29yayBmb3Ig
YWxsIHN0cmluZyB0eXBlcz8KLSAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnNp
Z25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAgICBpZiAoJGluZGV4
ZWRHZXR0ZXJGdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIikgewogICAgICAgICAg
ICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAob3B0aW9uYWxJbmRleCkg
e1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0
eVNsb3RJbXBsLCAiICAgIGlmIChvcHRpb25hbEluZGV4ICYmIG9wdGlvbmFsSW5kZXgudmFsdWUo
KSA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkge1xuIik7CkBAIC01MzcsMTggKzUz
NywxOCBAQCBzdWIgR2V0QXR0cmlidXRlR2V0dGVyTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSA9IEBfOwogCi0gICAgcmV0dXJuICRjb2RlR2VuZXJh
dG9yLT5XS19sY2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgaWYgJGF0dHJpYnV0
ZS0+aXNTdGF0aWM7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRjbGFz
c05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRy
aWJ1dGUtPm5hbWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgIHJldHVybiBHZXRKU0J1
aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgaWYgSXNKU0J1aWx0aW4o
JGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgcmV0dXJuICJqcyIgLiAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lKSAuICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT50eXBlKSA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CisgICAgcmV0dXJuICJq
cyIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGF0dHJpYnV0ZS0+bmFtZSkgLiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRh
dHRyaWJ1dGUtPnR5cGUpID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEF0dHJp
YnV0ZVNldHRlck5hbWUKIHsKICAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSkgPSBAXzsKIAotICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2Zp
cnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2Zp
cnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgaWYgJGF0dHJpYnV0ZS0+aXNTdGF0aWM7
CisgICAgcmV0dXJuICJzZXQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGNsYXNzTmFt
ZSkgLiAiQ29uc3RydWN0b3IiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0
ZS0+bmFtZSkgaWYgJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgcmV0dXJuICJzZXQiIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05h
bWUsICRhdHRyaWJ1dGUpKSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsK
LSAgICByZXR1cm4gInNldEpTIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVy
YXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gKCRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpID8g
IkNvbnN0cnVjdG9yIiA6ICIiKTsKKyAgICByZXR1cm4gInNldEpTIiAuICRpbnRlcmZhY2UtPnR5
cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKSAu
ICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkgPyAi
Q29uc3RydWN0b3IiIDogIiIpOwogfQogCiBzdWIgR2V0RnVuY3Rpb25OYW1lCkBAIC01NTcsNyAr
NTU3LDcgQEAgc3ViIEdldEZ1bmN0aW9uTmFtZQogCiAgICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1
bmN0aW9uTmFtZSgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZh
Y2UsICRmdW5jdGlvbik7CiAKLSAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7CisgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKICAg
ICAkZnVuY3Rpb25OYW1lID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAkZnVuY3Rpb25OYW1lIGVxICJb
U3ltYm9sLkl0ZXJhdG9yXSI7CiAKICAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMg
PyAiQ29uc3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNl
LCAkZnVuY3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKQEAgLTU3MiwxMCArNTcy
LDEwIEBAIHN1YiBHZXRTcGVjaWFsQWNjZXNzb3JGdW5jdGlvbkZvclR5cGUKICAgICBteSAkbnVt
YmVyT2ZQYXJhbWV0ZXJzID0gc2hpZnQ7CiAKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHsk
aW50ZXJmYWNlLT5mdW5jdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmFub255bW91c0Z1bmN0aW9uc30p
IHsKLSAgICAgICAgbXkgJHNwZWNpYWxzID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnNwZWNpYWxz
OworICAgICAgICBteSAkc3BlY2lhbHMgPSAkZnVuY3Rpb24tPnNwZWNpYWxzOwogICAgICAgICBt
eSAkc3BlY2lhbEV4aXN0cyA9IGdyZXAgeyAkXyBlcSAkc3BlY2lhbCB9IEAkc3BlY2lhbHM7Ci0g
ICAgICAgIG15ICRwYXJhbWV0ZXJzID0gJGZ1bmN0aW9uLT5wYXJhbWV0ZXJzOwotICAgICAgICBp
ZiAoJHNwZWNpYWxFeGlzdHMgYW5kIHNjYWxhcihAJHBhcmFtZXRlcnMpID09ICRudW1iZXJPZlBh
cmFtZXRlcnMgYW5kICRwYXJhbWV0ZXJzLT5bMF0tPnR5cGUtPm5hbWUgZXEgJGZpcnN0UGFyYW1l
dGVyVHlwZSkgeworICAgICAgICBteSAkYXJndW1lbnRzID0gJGZ1bmN0aW9uLT5hcmd1bWVudHM7
CisgICAgICAgIGlmICgkc3BlY2lhbEV4aXN0cyBhbmQgc2NhbGFyKEAkYXJndW1lbnRzKSA9PSAk
bnVtYmVyT2ZQYXJhbWV0ZXJzIGFuZCAkYXJndW1lbnRzLT5bMF0tPnR5cGUtPm5hbWUgZXEgJGZp
cnN0UGFyYW1ldGVyVHlwZSkgewogICAgICAgICAgICAgcmV0dXJuICRmdW5jdGlvbjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTYxNSwxOCArNjE1LDE4IEBAIHN1YiBBdHRyaWJ1dGVTaG91bGRCZU9u
SW5zdGFuY2UKICAgICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CiAKICAgICAjIEZJWE1FOiBUaGUg
YmluZGluZ3MgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgcHV0dGluZyBydW50aW1lLWVuYWJs
ZWQgYXR0cmlidXRlcyBvbiB0aGUgaW5zdGFuY2UgeWV0IChleGNlcHQgZm9yIGdsb2JhbCBvYmpl
Y3RzKS4KLSAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9ICYmICFJc0RPTUdsb2JhbE9iamVjdCgkaW50ZXJm
YWNlKTsKKyAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
bmFibGVkQXRSdW50aW1lfSAmJiAhSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSk7CiAKICAg
ICByZXR1cm4gMSBpZiBJbnRlcmZhY2VSZXF1aXJlc0F0dHJpYnV0ZXNPbkluc3RhbmNlKCRpbnRl
cmZhY2UpOwotICAgIHJldHVybiAxIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlw
ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgIHJldHVybiAxIGlmICRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKIAogICAgICMgW1Vu
Zm9yZ2VhYmxlXSBhdHRyaWJ1dGVzIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuCiAgICAgIyBo
dHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZQogICAgIHJldHVybiAx
IGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0pIHsKLSAgICAgICAg
cmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntE
b05vdENoZWNrU2VjdXJpdHl9OwotICAgICAgICByZXR1cm4gMCBpZiAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyfTsK
KyAgICAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9O
b3RDaGVja1NlY3VyaXR5fTsKKyAgICAgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXJ9OwogICAgICAgICByZXR1
cm4gMTsKICAgICB9CiAKQEAgLTY0Myw3ICs2NDMsNyBAQCBzdWIgT3BlcmF0aW9uU2hvdWxkQmVP
bkluc3RhbmNlCiAgICAgcmV0dXJuIDEgaWYgSXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkg
JiYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBuZSAiV29ya2VyR2xvYmFsU2NvcGUiOwogCiAgICAg
IyBGSVhNRTogVGhlIGJpbmRpbmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRpbmcg
cnVudGltZS1lbmFibGVkIG9wZXJhdGlvbnMgb24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0IGZv
ciBnbG9iYWwgb2JqZWN0cykuCi0gICAgcmV0dXJuIDAgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9OworICAgIHJldHVybiAwIGlm
ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX07CiAKICAg
ICAjIFtVbmZvcmdlYWJsZV0gb3BlcmF0aW9ucyBzaG91bGQgYmUgb24gdGhlIGluc3RhbmNlLiBo
dHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNVbmZvcmdlYWJsZQogICAgIHJldHVybiAx
IGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKQEAgLTY2MCwxMSArNjYw
LDExIEBAIHN1YiBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlCiAgICAgcHVzaChAc3BlY2lh
bHMsICJEb250RGVsZXRlIikgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRl
KTsKIAogICAgICMgQXMgcGVyIFdlYiBJREwgc3BlY2lmaWNhdGlvbiwgY29uc3RydWN0b3IgcHJv
cGVydGllcyBvbiB0aGUgRUNNQVNjcmlwdCBnbG9iYWwgb2JqZWN0IHNob3VsZCBub3QgYmUgZW51
bWVyYWJsZS4KLSAgICBteSAkaXNHbG9iYWxDb25zdHJ1Y3RvciA9ICRjb2RlR2VuZXJhdG9yLT5J
c0NvbnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwotICAgIHB1c2go
QHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfSB8fCAkaXNHbG9iYWxDb25zdHJ1Y3Rvcik7Cisg
ICAgbXkgJGlzR2xvYmFsQ29uc3RydWN0b3IgPSAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3Rv
clR5cGUoJGF0dHJpYnV0ZS0+dHlwZSk7CisgICAgcHVzaChAc3BlY2lhbHMsICJEb250RW51bSIp
IGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfSB8fCAk
aXNHbG9iYWxDb25zdHJ1Y3Rvcik7CiAgICAgcHVzaChAc3BlY2lhbHMsICJSZWFkT25seSIpIGlm
IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSk7CiAgICAgcHVzaChAc3BlY2lhbHMsICJDdXN0b21BY2Nl
c3NvciIpIHVubGVzcyAkaXNHbG9iYWxDb25zdHJ1Y3RvciBvciBJc0pTQnVpbHRpbigkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKLSAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEF0dHJpYnV0ZSIp
IGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9
OworICAgIHB1c2goQHNwZWNpYWxzLCAiRE9NSklUQXR0cmlidXRlIikgaWYgJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9OwogICAgIHB1c2goQHNwZWNpYWxzLCAiQWNj
ZXNzb3IgfCBCdWlsdGluIikgaWYgIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
OwogICAgIHJldHVybiAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDog
IjAiOwogfQpAQCAtODQwLDcgKzg0MCw3IEBAIHN1YiBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZQog
ewogICAgIG15ICgkdHlwZSwgJGludGVyZmFjZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEg
dHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5IYXNFbnVtSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGUoJHR5cGUpKSB7CiAgICAgICAgIHJl
dHVybiAkY29kZUdlbmVyYXRvci0+R2V0RW51bUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlKCR0
eXBlKTsKQEAgLTEwNDQsMzEgKzEwNDQsMjkgQEAgc3ViIEdldERpY3Rpb25hcnlDbGFzc05hbWUK
IAogc3ViIEdlbmVyYXRlRGVmYXVsdFZhbHVlCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRzaWdu
YXR1cmUpID0gQF87Ci0KLSAgICBteSAkZGVmYXVsdFZhbHVlID0gJHNpZ25hdHVyZS0+ZGVmYXVs
dDsKKyAgICBteSAoJGludGVyZmFjZSwgJHR5cGUsICRkZWZhdWx0VmFsdWUpID0gQF87CiAKLSAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHNpZ25hdHVyZS0+dHlwZSkpIHsKKyAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7CiAgICAgICAgICMgRklY
TUU6IFdvdWxkIGJlIG5pY2UgdG8gcmVwb3J0IGFuIGVycm9yIGlmIHRoZSB2YWx1ZSBkb2VzIG5v
dCBoYXZlIHF1b3RlIG1hcmtzIGFyb3VuZCBpdC4KICAgICAgICAgIyBGSVhNRTogV291bGQgYmUg
bmljZSB0byByZXBvcnQgYW4gZXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBvbmUgb2YgdGhlIGVu
dW1lcmF0aW9uIHZhbHVlcy4KLSAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldEVudW1lcmF0aW9u
Q2xhc3NOYW1lKCRzaWduYXR1cmUtPnR5cGUsICRpbnRlcmZhY2UpOworICAgICAgICBteSAkY2xh
c3NOYW1lID0gR2V0RW51bWVyYXRpb25DbGFzc05hbWUoJHR5cGUsICRpbnRlcmZhY2UpOwogICAg
ICAgICBteSAkZW51bWVyYXRpb25WYWx1ZU5hbWUgPSBHZXRFbnVtZXJhdGlvblZhbHVlTmFtZShz
dWJzdHIoJGRlZmF1bHRWYWx1ZSwgMSwgLTEpKTsKICAgICAgICAgcmV0dXJuICRjbGFzc05hbWUg
LiAiOjoiIC4gJGVudW1lcmF0aW9uVmFsdWVOYW1lOwogICAgIH0KICAgICBpZiAoJGRlZmF1bHRW
YWx1ZSBlcSAibnVsbCIpIHsKLSAgICAgICAgaWYgKCRzaWduYXR1cmUtPnR5cGUtPmlzVW5pb24p
IHsKLSAgICAgICAgICAgIHJldHVybiAiTnVsbG9wdCIgaWYgJHNpZ25hdHVyZS0+dHlwZS0+aXNO
dWxsYWJsZTsKKyAgICAgICAgaWYgKCR0eXBlLT5pc1VuaW9uKSB7CisgICAgICAgICAgICByZXR1
cm4gIk51bGxvcHQiIGlmICR0eXBlLT5pc051bGxhYmxlOwogCi0gICAgICAgICAgICBteSAkSURM
VHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHNpZ25hdHVyZS0+dHlwZSk7CisgICAgICAg
ICAgICBteSAkSURMVHlwZSA9IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwogICAgICAg
ICAgICAgcmV0dXJuICJjb252ZXJ0PCR7SURMVHlwZX0+KHN0YXRlLCBqc051bGwoKSk7IjsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gImpzTnVsbCgpIiBpZiAkc2lnbmF0dXJlLT50eXBlLT5u
YW1lIGVxICJhbnkiOwotICAgICAgICByZXR1cm4gIm51bGxwdHIiIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc1dyYXBwZXJUeXBlKCRzaWduYXR1cmUtPnR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1R5
cGVkQXJyYXlUeXBlKCRzaWduYXR1cmUtPnR5cGUpOwotICAgICAgICByZXR1cm4gIlN0cmluZygp
IiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCRzaWduYXR1cmUtPnR5cGUpOworICAg
ICAgICByZXR1cm4gImpzTnVsbCgpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsKKyAgICAgICAg
cmV0dXJuICJudWxscHRyIiBpZiAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSkg
fHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOworICAgICAgICByZXR1
cm4gIlN0cmluZygpIiBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKICAg
ICAgICAgcmV0dXJuICJOdWxsb3B0IjsKICAgICB9CiAgICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEg
IltdIikgewotICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0
dXJlKCRpbnRlcmZhY2UsICRzaWduYXR1cmUpOworICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdl
dE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwogICAgICAgICByZXR1cm4gIiRuYXRpdmVU
eXBlKCkiCiAgICAgfQogCkBAIC0xMTgzLDEwICsxMTgxLDEwIEBAIHN1YiBHZW5lcmF0ZURpY3Rp
b25hcnlJbXBsZW1lbnRhdGlvbkNvbnQKIAogICAgICAgICAgICAgIyBWYWx1ZSBpcyB1bmRlZmlu
ZWQuCiAgICAgICAgICAgICAjIDUuNC4gT3RoZXJ3aXNlLCBpZiB2YWx1ZSBpcyB1bmRlZmluZWQg
YnV0IHRoZSBkaWN0aW9uYXJ5IG1lbWJlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCB0aGVuOgotICAg
ICAgICAgICAgaWYgKCRtZW1iZXItPmlzT3B0aW9uYWwgJiYgZGVmaW5lZCAkbWVtYmVyLT5kZWZh
dWx0KSB7CisgICAgICAgICAgICBpZiAoISRtZW1iZXItPmlzUmVxdWlyZWQgJiYgZGVmaW5lZCAk
bWVtYmVyLT5kZWZhdWx0KSB7CiAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgIH0gZWxz
ZVxuIjsKLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJlc3VsdC4ka2V5ID0g
IiAuIEdlbmVyYXRlRGVmYXVsdFZhbHVlKCRpbnRlcmZhY2UsICRtZW1iZXIpIC4gIjtcbiI7Ci0g
ICAgICAgICAgICB9IGVsc2lmICghJG1lbWJlci0+aXNPcHRpb25hbCkgeworICAgICAgICAgICAg
ICAgICRyZXN1bHQgLj0gIiAgICAgICAgcmVzdWx0LiRrZXkgPSAiIC4gR2VuZXJhdGVEZWZhdWx0
VmFsdWUoJGludGVyZmFjZSwgJG1lbWJlci0+dHlwZSwgJG1lbWJlci0+ZGVmYXVsdCkgLiAiO1xu
IjsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRtZW1iZXItPmlzUmVxdWlyZWQpIHsKICAgICAgICAg
ICAgICAgICAjIDUuNS4gT3RoZXJ3aXNlLCBpZiB2YWx1ZSBpcyB1bmRlZmluZWQgYW5kIHRoZSBk
aWN0aW9uYXJ5IG1lbWJlciBpcyBhIHJlcXVpcmVkIGRpY3Rpb25hcnkgbWVtYmVyLCB0aGVuIHRo
cm93IGEgVHlwZUVycm9yLgogICAgICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICB9IGVsc2Ug
e1xuIjsKICAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHRocm93UmVxdWlyZWRN
ZW1iZXJUeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIFwiIi4gJG1lbWJlci0+bmFtZSAuIlwi
LCBcIiRuYW1lXCIsIFwiIi4gJHR5cGUtPm5hbWUgLiJcIik7XG4iOwpAQCAtMTUxNCwxOSArMTUx
MiwxOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJG51bUF0dHJpYnV0ZXMgPiAwKSB7
CiAgICAgICAgIGZvcmVhY2ggKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAg
ICAgIG15ICRhdHRyaWJ1dGUgPSAkXzsKLSAgICAgICAgICAgICRudW1DdXN0b21BdHRyaWJ1dGVz
KysgaWYgSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKTsKLSAgICAgICAgICAgICRudW1DdXN0b21BdHRyaWJ1dGVzKysgaWYgSGFzQ3VzdG9t
U2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKLSAgICAg
ICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
Y2hlZEF0dHJpYnV0ZX0pIHsKLSAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5z
aWduYXR1cmUpOworICAgICAgICAgICAgJG51bUN1c3RvbUF0dHJpYnV0ZXMrKyBpZiBIYXNDdXN0
b21HZXR0ZXIoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgICRu
dW1DdXN0b21BdHRyaWJ1dGVzKysgaWYgSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcyk7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRlfSkgeworICAgICAgICAgICAgICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRh
dHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtj
b25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIG11dGFibGUgSlNDOjpXcml0ZUJhcnJpZXI8
SlNDOjpVbmtub3duPiBtXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiO1xuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBtdXRhYmxlIEpTQzo6
V3JpdGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV8iIC4gJGF0dHJpYnV0ZS0+bmFtZSAuICI7XG4i
KTsKICAgICAgICAgICAgICAgICAkbnVtQ2FjaGVkQXR0cmlidXRlcysrOwogICAgICAgICAgICAg
ICAgICRuZWVkc1Zpc2l0Q2hpbGRyZW4gPSAxOwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICRoYXNET01KSVRBdHRyaWJ1dGVzID0gMSBpZiAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKKyAgICAgICAgICAgICRo
YXNET01KSVRBdHRyaWJ1dGVzID0gMSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRE9NSklUIn07CiAKLSAgICAgICAgICAgICRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0cmlidXRl
cyA9IDEgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3
YXJkRGVjbGFyZUluSGVhZGVyfTsKKyAgICAgICAgICAgICRoYXNGb3J3YXJkRGVjbGFyaW5nQXR0
cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERl
Y2xhcmVJbkhlYWRlcn07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1NDUsMzEgKzE1NDMsMzEg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbiAg
ICAvLyBDdXN0b20gYXR0cmlidXRlc1xuIik7CiAKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmli
dXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygk
YXR0cmlidXRlLT5zaWduYXR1cmUpOwotICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKKyAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRhdHRyaWJ1dGUpOworICAgICAgICAgICAgaWYgKEhhc0N1c3RvbUdldHRlcigk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlv
bmFsU3RyaW5nOwotICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0gJGNvZGVHZW5lcmF0
b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgICAg
ICAgICBteSAkbWV0aG9kTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1
dGUtPm5hbWUpOwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlND
OjpKU1ZhbHVlICIgLiAkbWV0aG9kTmFtZSAuICIoSlNDOjpFeGVjU3RhdGUmKSBjb25zdDtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChIYXNDdXN0
b21TZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpICYmICFJ
c1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7CisgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVy
KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcykgJiYgIUlzUmVhZG9ubHkoJGF0dHJpYnV0
ZSkpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tf
dWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIC4gIihKU0M6OkV4ZWNTdGF0ZSYs
IEpTQzo6SlNWYWx1ZSk7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHZvaWQgc2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUt
Pm5hbWUpIC4gIihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSk7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICBmb3JlYWNoIG15
ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICRudW1DdXN0
b21GdW5jdGlvbnMrKyBpZiBIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICRoYXNGb3J3YXJkRGVjbGFyaW5nRnVuY3Rpb25z
ID0gMSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2Fy
ZERlY2xhcmVJbkhlYWRlcn07CisgICAgICAgICRudW1DdXN0b21GdW5jdGlvbnMrKyBpZiBIYXND
dXN0b21NZXRob2QoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAkaGFz
Rm9yd2FyZERlY2xhcmluZ0Z1bmN0aW9ucyA9IDEgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKICAgICB9CiAKICAgICBpZiAoJG51bUN1
c3RvbUZ1bmN0aW9ucyA+IDApIHsKICAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4gICAgLy8gQ3VzdG9tIGZ1bmN0aW9uc1xu
Iik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9u
c30pIHsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKICAgICAgICAgICAgICAgICBp
ZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOwogICAgICAgICAg
ICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7CkBAIC0xNTc4LDExICsxNTc2LDExIEBA
IHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICRlbmRBcHBsZUNvcHlyaWdodCk7CiAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQg
PSAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV4dCB1bmxlc3MgSGFzQ3VzdG9tTWV0
aG9kKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKTsKICAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiAkZnVu
Y3Rpb24tPntvdmVybG9hZEluZGV4fSAhPSAxOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
U3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0
aW9uLT5zaWduYXR1cmUpOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKICAgICAg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVu
dGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJ
bXBsZW1lbnRlZEFzfSB8fCAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5h
bWUgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRj
b2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CiAgICAgICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICIgLiAoJGZ1bmN0aW9uLT5pc1N0YXRpYyA/ICJzdGF0
aWMgIiA6ICIiKSAuICJKU0M6OkpTVmFsdWUgIiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFt
ZSAuICIoSlNDOjpFeGVjU3RhdGUmKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CkBAIC0x
NjkxLDkgKzE2ODksOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlv
biAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5j
dGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsK
LSAgICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKKyAgICAgICAgICAgIG5leHQgdW5s
ZXNzICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRl
cn07CiAKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKICAgICAgICAgICAgICAgICBp
ZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOwogICAgICAgICAg
ICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7CkBAIC0xNzE4LDkgKzE3MTYsOSBAQCBz
dWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJGhhc0ZvcndhcmREZWNsYXJpbmdBdHRyaWJ1dGVz
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEF0dHJpYnV0ZXNcblxuIik7CiAg
ICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkg
ewotICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKKyAgICAgICAgICAgIG5leHQg
dW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5I
ZWFkZXJ9OwogCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVy
YXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwor
ICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVy
YXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJKU0M6OkVuY29kZWRKU1ZhbHVlICR7Z2V0dGVyfShKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwpAQCAtMTcz
NiwxMCArMTczNCwxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgJGhlYWRlckluY2x1
ZGVzeyI8ZG9taml0L0RPTUpJVEdldHRlclNldHRlci5oPiJ9ID0gMTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwiLy8gRE9NSklUIGVtaXR0ZXJzIGZvciBhdHRyaWJ1dGVzXG5cbiIpOwog
ICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30p
IHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9OworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9OwogCiAgICAgICAgICAgICBteSAk
aW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgICAgICAgICBteSAk
Y2xhc3NOYW1lID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpOworICAgICAgICAgICAgbXkgJGNsYXNzTmFtZSA9
ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+
bmFtZSk7CiAgICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGNsYXNzTmFtZSAuICJE
T01KSVQiOwogCiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpET01KSVQ6
OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yJGNsYXNzTmFtZSh2b2lkKTtcbiIp
OwpAQCAtMTgyOSwxOSArMTgyNywxOSBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxl
CiAgICAgICAgIG5leHQgaWYgQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2Us
ICRhdHRyaWJ1dGUpICE9ICRpc0luc3RhbmNlOwogCiAgICAgICAgICMgR2xvYmFsIG9iamVjdHMg
YWRkIFJ1bnRpbWVFbmFibGVkIGF0dHJpYnV0ZXMgYWZ0ZXIgY3JlYXRpb24gc28gZG8gbm90IGFk
ZCB0aGVtIHRvIHRoZSBzdGF0aWMgdGFibGUuCi0gICAgICAgIGlmIChJc0RPTUdsb2JhbE9iamVj
dCgkaW50ZXJmYWNlKSAmJiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmIChJc0RPTUdsb2JhbE9iamVjdCgk
aW50ZXJmYWNlKSAmJiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRS
dW50aW1lfSkgewogICAgICAgICAgICAgJHByb3BlcnR5Q291bnQgLT0gMTsKICAgICAgICAgICAg
IG5leHQ7CiAgICAgICAgIH0KIAotICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZTsKKyAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAg
ICBwdXNoKEAkaGFzaEtleXMsICRuYW1lKTsKIAogICAgICAgICBteSAkc3BlY2lhbCA9IEdldEpT
Q0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAg
IHB1c2goQCRoYXNoU3BlY2lhbHMsICRzcGVjaWFsKTsKIAotICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKLSAgICAgICAg
ICAgIHB1c2goQCRoYXNoVmFsdWUxLCAiZG9tSklUR2V0dGVyU2V0dGVyRm9yIiAuICRpbnRlcmZh
Y2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWUpKTsKKyAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJET01KSVQifSkgeworICAgICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTEsICJkb21K
SVRHZXR0ZXJTZXR0ZXJGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpKTsKICAgICAgICAgICAgIHB1c2goQCRo
YXNoVmFsdWUyLCAiMCIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbXkgJGdldHRl
ciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJp
YnV0ZSk7CkBAIC0xODU1LDEwICsxODUzLDEwIEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNo
VGFibGUKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIG15ICRjb25kaXRpb25h
bCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9OworICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgICAgICRjb25kaXRpb25hbHMtPnskbmFtZX0gPSAk
Y29uZGl0aW9uYWwgaWYgJGNvbmRpdGlvbmFsOwogCi0gICAgICAgIGlmICgkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1l
fSkgewogICAgICAgICAgICAgZGllICJXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgW0VuYWJs
ZWRBdFJ1bnRpbWVdIGF0dHJpYnV0ZXMgb24gdGhlIGluc3RhbmNlIChleGNlcHQgZm9yIGdsb2Jh
bCBvYmplY3RzKS4iIGlmICRpc0luc3RhbmNlOwogICAgICAgICAgICAgcHVzaChAJHJ1bnRpbWVF
bmFibGVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZSk7CiAgICAgICAgIH0KQEAgLTE4NjgsMTkgKzE4
NjYsMTkgQEAgc3ViIEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogICAgIHB1c2goQGZ1bmN0
aW9ucywgQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgaWYgSXNLZXlWYWx1ZUl0
ZXJhYmxlSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogICAgIHB1c2goQGZ1bmN0aW9ucywgQHskaW50
ZXJmYWNlLT5zZXJpYWxpemFibGUtPmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6
YWJsZTsKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICBu
ZXh0IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0
ZUlkZW50aWZpZXJ9IGFuZCBub3QgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKKyAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIG5vdCAkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKICAgICAgICAgbmV4dCBp
ZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYyk7CiAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogICAgICAgICBu
ZXh0IGlmIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24p
ICE9ICRpc0luc3RhbmNlOwotICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CisgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5u
YW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKICAgICAgICAgIyBHbG9iYWwgb2JqZWN0cyBh
ZGQgUnVudGltZUVuYWJsZWQgb3BlcmF0aW9ucyBhZnRlciBjcmVhdGlvbiBzbyBkbyBub3QgYWRk
IHRoZW0gdG8gdGhlIHN0YXRpYyB0YWJsZS4KLSAgICAgICAgaWYgKElzRE9NR2xvYmFsT2JqZWN0
KCRpbnRlcmZhY2UpICYmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntFbmFibGVkQXRSdW50aW1lfSkgeworICAgICAgICBpZiAoSXNET01HbG9iYWxPYmplY3QoJGlu
dGVyZmFjZSkgJiYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50
aW1lfSkgewogICAgICAgICAgICAgJHByb3BlcnR5Q291bnQgLT0gMTsKICAgICAgICAgICAgIG5l
eHQ7CiAgICAgICAgIH0KIAotICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lOworICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKICAgICAgICAgcHVz
aChAJGhhc2hLZXlzLCAkbmFtZSk7CiAKICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1
bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwpAQCAtMTg4OSw3
ICsxODg3LDcgQEAgc3ViIEdlbmVyYXRlUHJvcGVydGllc0hhc2hUYWJsZQogICAgICAgICBteSAk
ZnVuY3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24pOwogCiAgICAgICAg
ICMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgY2FuIGdldCByaWQgb2YgdGhlIHF1aXJrIGlu
dHJvZHVjZWQgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mzk2
Ny4KLSAgICAgICAgJGZ1bmN0aW9uTGVuZ3RoID0gMyBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRXZl
bnQiIGFuZCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiaW5pdEV2ZW50IjsKKyAgICAg
ICAgJGZ1bmN0aW9uTGVuZ3RoID0gMyBpZiAkaW50ZXJmYWNlTmFtZSBlcSAiRXZlbnQiIGFuZCAk
ZnVuY3Rpb24tPm5hbWUgZXEgImluaXRFdmVudCI7CiAKICAgICAgICAgcHVzaChAJGhhc2hWYWx1
ZTIsICRmdW5jdGlvbkxlbmd0aCk7CiAKQEAgLTE4OTgsNyArMTg5Niw3IEBAIHN1YiBHZW5lcmF0
ZVByb3BlcnRpZXNIYXNoVGFibGUKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gZ2V0Q29uZGl0
aW9uYWxGb3JGdW5jdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzKCRmdW5jdGlvbik7CiAgICAgICAg
ICRjb25kaXRpb25hbHMtPnskbmFtZX0gPSAkY29uZGl0aW9uYWwgaWYgJGNvbmRpdGlvbmFsOwog
Ci0gICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RW5hYmxlZEF0UnVudGltZX0pIHsKKyAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0pIHsKICAgICAgICAgICAgIGRpZSAiV2UgY3VycmVu
dGx5IGRvIG5vdCBzdXBwb3J0IFtFbmFibGVkQXRSdW50aW1lXSBvcGVyYXRpb25zIG9uIHRoZSBp
bnN0YW5jZSAoZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cykuIiBpZiAkaXNJbnN0YW5jZTsKICAg
ICAgICAgICAgIHB1c2goQCRydW50aW1lRW5hYmxlZEZ1bmN0aW9ucywgJGZ1bmN0aW9uKTsKICAg
ICAgICAgfQpAQCAtMTkzMCwxNSArMTkyOCwxNSBAQCBzdWIgQ29tcHV0ZUVmZmVjdGl2ZU92ZXJs
b2FkU2V0CiAKICAgICBteSAkbSA9IExlbmd0aE9mTG9uZ2VzdEZ1bmN0aW9uUGFyYW1ldGVyTGlz
dCgkb3ZlcmxvYWRzKTsKICAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAoQHskb3ZlcmxvYWRzfSkg
ewotICAgICAgICBteSAkbiA9IEB7JG92ZXJsb2FkLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgbXkg
JG4gPSBAeyRvdmVybG9hZC0+YXJndW1lbnRzfTsKICAgICAgICAgbXkgQHQ7CiAgICAgICAgIG15
IEBvOwogICAgICAgICBteSAkaXNWYXJpYWRpYyA9IDA7Ci0gICAgICAgIGZvcmVhY2ggbXkgJHBh
cmFtZXRlciAoQHskb3ZlcmxvYWQtPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgICAgICBwdXNoKEB0
LCAkcGFyYW1ldGVyLT50eXBlKTsKLSAgICAgICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc09wdGlv
bmFsKSB7CisgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvdmVybG9hZC0+YXJndW1l
bnRzfSkgeworICAgICAgICAgICAgcHVzaChAdCwgJGFyZ3VtZW50LT50eXBlKTsKKyAgICAgICAg
ICAgIGlmICgkYXJndW1lbnQtPmlzT3B0aW9uYWwpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBv
LCAib3B0aW9uYWwiKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRwYXJhbWV0ZXItPmlzVmFyaWFk
aWMpIHsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRhcmd1bWVudC0+aXNWYXJpYWRpYykgewogICAg
ICAgICAgICAgICAgIHB1c2goQG8sICJ2YXJpYWRpYyIpOwogICAgICAgICAgICAgICAgICRpc1Zh
cmlhZGljID0gMTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xOTU2LDggKzE5NTQsOCBAQCBz
dWIgQ29tcHV0ZUVmZmVjdGl2ZU92ZXJsb2FkU2V0CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICAgICAgZm9yIChteSAkaSA9ICRuIC0gMTsgJGkgPj0gMDsgJGktLSkgewotICAgICAgICAg
ICAgbXkgJHBhcmFtZXRlciA9IEB7JG92ZXJsb2FkLT5wYXJhbWV0ZXJzfVskaV07Ci0gICAgICAg
ICAgICBsYXN0IHVubGVzcyAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCB8fCAkcGFyYW1ldGVyLT5p
c1ZhcmlhZGljKTsKKyAgICAgICAgICAgIG15ICRhcmd1bWVudCA9IEB7JG92ZXJsb2FkLT5hcmd1
bWVudHN9WyRpXTsKKyAgICAgICAgICAgIGxhc3QgdW5sZXNzICgkYXJndW1lbnQtPmlzT3B0aW9u
YWwgfHwgJGFyZ3VtZW50LT5pc1ZhcmlhZGljKTsKICAgICAgICAgICAgIHBvcChAdCk7CiAgICAg
ICAgICAgICBwb3AoQG8pOwogICAgICAgICAgICAgJiRhZGRUdXBsZShbJG92ZXJsb2FkLCBbQHRd
LCBbQG9dXSk7CkBAIC0yMDM4LDcgKzIwMzYsNyBAQCBzdWIgR2V0RGlzdGluZ3Vpc2hpbmdBcmd1
bWVudEluZGV4CiAgICAgZm9yIChteSAkaW5kZXggPSAwOyAkaW5kZXggPCBzY2FsYXIoQCRmaXJz
dFR1cGxlVHlwZXMpOyAkaW5kZXgrKykgewogICAgICAgICByZXR1cm4gJGluZGV4IGlmIEFyZVR5
cGVzRGlzdGluZ3Vpc2hhYmxlRm9yT3ZlcmxvYWRSZXNvbHV0aW9uKEB7JGZpcnN0VHVwbGVUeXBl
c31bJGluZGV4XSwgQHskc2Vjb25kVHVwbGVUeXBlc31bJGluZGV4XSk7CiAgICAgfQotICAgIGRp
ZSAiVW5kaXN0aW5ndWlzaGFibGUgb3ZlcmxvYWRzIGZvciBvcGVyYXRpb24gIiAuICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5uYW1lIC4gIiB3aXRoIGxlbmd0aDogIiAuIHNjYWxhcihAJGZpcnN0VHVw
bGVUeXBlcyk7CisgICAgZGllICJVbmRpc3Rpbmd1aXNoYWJsZSBvdmVybG9hZHMgZm9yIG9wZXJh
dGlvbiAiIC4gJGZ1bmN0aW9uLT5uYW1lIC4gIiB3aXRoIGxlbmd0aDogIiAuIHNjYWxhcihAJGZp
cnN0VHVwbGVUeXBlcyk7CiB9CiAKIHN1YiBHZXRPdmVybG9hZFRoYXRNYXRjaGVzCkBAIC0yMDcz
LDExICsyMDcxLDExIEBAIHN1YiBnZXRDb25kaXRpb25hbEZvckZ1bmN0aW9uQ29uc2lkZXJpbmcK
IHsKICAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKIAotICAgIHJldHVybiAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9IHVubGVzcyAkZnVuY3Rp
b24tPntvdmVybG9hZHN9OworICAgIHJldHVybiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbmRpdGlvbmFsfSB1bmxlc3MgJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfTsKIAogICAgIG15
ICVjb25kaXRpb25zOwogICAgIGZvcmVhY2ggbXkgJG92ZXJsb2FkIChAeyRmdW5jdGlvbi0+e292
ZXJsb2Fkc319KSB7Ci0gICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRvdmVybG9hZC0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CisgICAgICAgIG15ICRjb25k
aXRpb25hbCA9ICRvdmVybG9hZC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9Owog
ICAgICAgICByZXR1cm4gdW5sZXNzICRjb25kaXRpb25hbDsKICAgICAgICAgJGNvbmRpdGlvbnN7
JGNvbmRpdGlvbmFsfSA9IDE7CiAgICAgfQpAQCAtMjA5OCwxMyArMjA5NiwxMyBAQCBzdWIgR2Vu
ZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25PckNvbnN0cnVjCiAgICAgICAgICRmdW5jdGlvbk5hbWUg
PSAiY29uc3RydWN0JHtjbGFzc05hbWV9IjsKICAgICB9IGVsc2UgewogICAgICAgICBteSAka2lu
ZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3IiIDogKE9wZXJhdGlvblNob3Vs
ZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90
b3R5cGUiKTsKLSAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJqcyR7aW50ZXJmYWNlTmFtZX0ke2tp
bmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWUpOworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImpzJHtpbnRlcmZhY2VOYW1l
fSR7a2luZH1GdW5jdGlvbiIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZnVuY3Rpb24t
Pm5hbWUpOwogICAgIH0KIAogICAgIG15ICRnZW5lcmF0ZU92ZXJsb2FkQ2FsbElmTmVjZXNzYXJ5
ID0gc3ViIHsKICAgICAgICAgbXkgKCRvdmVybG9hZCwgJGNvbmRpdGlvbikgPSBAXzsKICAgICAg
ICAgcmV0dXJuIHVubGVzcyAkb3ZlcmxvYWQ7Ci0gICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvdmVybG9hZC0+
c2lnbmF0dXJlKTsKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG92ZXJsb2FkKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICgkY29uZGl0
aW9uKVxuICAgICIpIGlmICRjb25kaXRpb247CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICByZXR1cm4gJHtmdW5jdGlvbk5hbWV9JG92ZXJsb2FkLT57b3ZlcmxvYWRJbmRleH0o
c3RhdGUpO1xuIik7CkBAIC0yMjkxLDggKzIyODksOCBAQCBzdWIgR2V0RnVuY3Rpb25MZW5ndGgK
ICAgICAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAKICAgICAgICAgbXkgJGxlbmd0aCA9IDA7
Ci0gICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7Ci0gICAgICAgICAgICBsYXN0IGlmICRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgfHwgJHBhcmFt
ZXRlci0+aXNWYXJpYWRpYzsKKyAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0
aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICBsYXN0IGlmICRhcmd1bWVudC0+aXNPcHRp
b25hbCB8fCAkYXJndW1lbnQtPmlzVmFyaWFkaWM7CiAgICAgICAgICAgICAkbGVuZ3RoKys7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuICRsZW5ndGg7CkBAIC0yMzExLDggKzIzMDksOCBAQCBz
dWIgTGVuZ3RoT2ZMb25nZXN0RnVuY3Rpb25QYXJhbWV0ZXJMaXN0CiAgICAgbXkgKCRvdmVybG9h
ZHMpID0gQF87CiAgICAgbXkgJHJlc3VsdCA9IDA7CiAgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQg
KEB7JG92ZXJsb2Fkc30pIHsKLSAgICAgICAgbXkgQHBhcmFtZXRlcnMgPSBAeyRvdmVybG9hZC0+
cGFyYW1ldGVyc307Ci0gICAgICAgICRyZXN1bHQgPSBAcGFyYW1ldGVycyBpZiAkcmVzdWx0IDwg
QHBhcmFtZXRlcnM7CisgICAgICAgIG15IEBhcmd1bWVudHMgPSBAeyRvdmVybG9hZC0+YXJndW1l
bnRzfTsKKyAgICAgICAgJHJlc3VsdCA9IEBhcmd1bWVudHMgaWYgJHJlc3VsdCA8IEBhcmd1bWVu
dHM7CiAgICAgfQogICAgIHJldHVybiAkcmVzdWx0OwogfQpAQCAtMjQ1OSwxNSArMjQ1NywxNyBA
QCBzdWIgVG9NZXRob2ROYW1lCiB9CiAKICMgUmV0dXJucyB0aGUgUnVudGltZUVuYWJsZWRGZWF0
dXJlcyBmdW5jdGlvbiBuYW1lIHRoYXQgaXMgaG9va2VkIHVwIHRvIGNoZWNrIGlmIGEgbWV0aG9k
L2F0dHJpYnV0ZSBpcyBlbmFibGVkLgorIyBOT1RFOiBQYXJhbWV0ZXIgcGFzc2VkIGluIG11c3Qg
aGF2ZSBib3RoIGFuICdleHRlbmRlZEF0dHJpYnV0ZXMnIHByb3BlcnR5LgorIyAgKGUuZy4gRE9N
SW50ZXJmYWNlLCBET01BdHRyaWJ1dGUsIERPTU9wZXJhdGlvbiwgRE9NSXRlcmFibGUsIGV0Yy4p
CiBzdWIgR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZQogewotICAgIG15ICRzaWduYXR1cmUg
PSBzaGlmdDsKKyAgICBteSAkY29udGV4dCA9IHNoaWZ0OwogCiAgICAgIyBJZiBhIHBhcmFtZXRl
ciBpcyBnaXZlbiAoZS5nLiAiRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZSIpIHJldHVybiB0
aGUgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS57RmVhdHVyZU5hbWV9
RW5hYmxlZCgpIG1ldGhvZC4KLSAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuIiAuIFRvTWV0aG9kTmFtZSgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgLiAiRW5hYmxlZCIgaWYgKCRzaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9ICYmICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9IG5lICJWQUxVRV9JU19NSVNTSU5HIik7
CisgICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIg
LiBUb01ldGhvZE5hbWUoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1
bnRpbWV9KSAuICJFbmFibGVkIiBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Vu
YWJsZWRBdFJ1bnRpbWV9ICYmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVk
QXRSdW50aW1lfSBuZSAiVkFMVUVfSVNfTUlTU0lORyIpOwogCiAgICAgIyBPdGhlcndpc2UgcmV0
dXJuIGEgZnVuY3Rpb24gbmFtZWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS57bWV0aG9kTmFtZX1FbmFibGVkKCkuCi0gICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBUb01ldGhvZE5hbWUoJHNpZ25hdHVyZS0+bmFt
ZSkgLiAiRW5hYmxlZCI7CisgICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLiIgLiBUb01ldGhvZE5hbWUoJGNvbnRleHQtPm5hbWUpIC4gIkVuYWJsZWQi
OwogfQogCiBzdWIgR2V0Q2FzdGluZ0hlbHBlckZvclRoaXNPYmplY3QKQEAgLTI0ODIsNyArMjQ4
Miw3IEBAIHN1YiBHZXRJbmRleGVkR2V0dGVyRXhwcmVzc2lvbgogICAgIG15ICRpbmRleGVkR2V0
dGVyRnVuY3Rpb24gPSBzaGlmdDsKICAgICAKICAgICAjIEZJWE1FOiBTaG91bGQgdGhpcyB3b3Jr
IGZvciBhbGwgc3RyaW5nIHR5cGVzPwotICAgIHJldHVybiAianNTdHJpbmdPclVuZGVmaW5lZChz
dGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSIgaWYgJGluZGV4ZWRHZXR0
ZXJGdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJET01TdHJpbmciOworICAgIHJl
dHVybiAianNTdHJpbmdPclVuZGVmaW5lZChzdGF0ZSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0
ZW0oaW5kZXgpKSIgaWYgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAiRE9N
U3RyaW5nIjsKICAgICByZXR1cm4gInRvSlMoc3RhdGUsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVj
dCgpLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpIjsKIH0KIApAQCAtMjQ5Myw3
ICsyNDkzLDcgQEAgc3ViIGFkZFVuc2NvcGFibGVQcm9wZXJ0aWVzCiAKICAgICBteSBAdW5zY29w
YWJsZXM7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb25PckF0dHJpYnV0ZSAoQHskaW50ZXJmYWNl
LT5mdW5jdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgIHB1c2go
QHVuc2NvcGFibGVzLCAkZnVuY3Rpb25PckF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSBpZiAk
ZnVuY3Rpb25PckF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntVbnNj
b3BhYmxlfTsKKyAgICAgICAgcHVzaChAdW5zY29wYWJsZXMsICRmdW5jdGlvbk9yQXR0cmlidXRl
LT5uYW1lKSBpZiAkZnVuY3Rpb25PckF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5z
Y29wYWJsZX07CiAgICAgfQogICAgIHJldHVybiBpZiBzY2FsYXIoQHVuc2NvcGFibGVzKSA9PSAw
OwogCkBAIC0yNTA3LDkgKzI1MDcsNyBAQCBzdWIgYWRkVW5zY29wYWJsZVByb3BlcnRpZXMKIAog
c3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIKIHsKLSAgICBteSAoJHNpZ25hdHVyZSkgPSBAXzsKLQot
ICAgIG15ICR0eXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKKyAgICBteSAoJHR5cGUpID0gQF87CiAK
ICAgICBteSAlVHlwZUZpbHRlcnMgPSAoCiAgICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIs
CkBAIC0yNTkyLDEwICsyNTkwLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7CiAgICAgICAgIGZvcmVh
Y2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5j
dGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsK
LSAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OworICAgICAgICAgICAgbmV4dCBpZiAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAg
ICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogCi0g
ICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0FwcGxlQ29weXJpZ2h0fSkgeworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkaW5B
cHBsZUNvcHlyaWdodCkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CiAgICAgICAgICAgICAgICAgICAg
ICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsKQEAgLTI2MjEsMTAgKzI2MTksMTAgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIvLyBBdHRyaWJ1
dGVzXG5cbiIpOwogCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNl
LT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OworICAgICAg
ICAgICAgbmV4dCBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVj
bGFyZUluSGVhZGVyfTsKICAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25h
dHVyZSk7CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVy
TmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2dldHRlcn0oSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKQEAg
LTI3MDEsMTggKzI2OTksMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAg
ICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAg
ICAgICAgICAgIG5leHQgdW5sZXNzICgkYXR0cmlidXRlLT5pc1N0YXRpYyk7Ci0gICAgICAgICAg
ICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15
ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKICAgICAgICAgICAgIHB1c2goQGhhc2hLZXlzLCAk
bmFtZSk7CiAKICAgICAgICAgICAgIG15IEBzcGVjaWFscyA9ICgpOwogICAgICAgICAgICAgcHVz
aChAc3BlY2lhbHMsICJEb250RGVsZXRlIikgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAk
YXR0cmlidXRlKTsKICAgICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiUmVhZE9ubHkiKSBpZiBJ
c1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJET01K
SVRBdHRyaWJ1dGUiKSBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJET01KSVQifTsKKyAgICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiRE9NSklUQXR0cmli
dXRlIikgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9OwogICAg
ICAgICAgICAgbXkgJHNwZWNpYWwgPSAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3Bl
Y2lhbHMpIDogIjAiOwogICAgICAgICAgICAgcHVzaChAaGFzaFNwZWNpYWxzLCAkc3BlY2lhbCk7
CiAKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJET01KSVQifSkgewotICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICJk
b21KSVRHZXR0ZXJTZXR0ZXJGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkpOworICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgewor
ICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTEsICJkb21KSVRHZXR0ZXJTZXR0ZXJGb3Ii
IC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRh
dHRyaWJ1dGUtPm5hbWUpKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiMCIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0
QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
QEAgLTI3MjYsNyArMjcyNCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWwg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFs
fTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKICAgICAgICAgICAgICRjb25kaXRpb25hbHN7JG5hbWV9
ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgJGhhc2hTaXpl
Kys7CkBAIC0yNzM1LDcgKzI3MzMsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAg
ICAgICAgICAgICBuZXh0IHVubGVzcyAoJGZ1bmN0aW9uLT5pc1N0YXRpYyk7CiAgICAgICAgICAg
ICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJs
b2FkSW5kZXh9ID4gMTsKLSAgICAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWU7CisgICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKICAgICAg
ICAgICAgIHB1c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9u
KTsKQEAgLTI3NDYsNyArMjc0NCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAg
ICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50
ZXJmYWNlLCAkZnVuY3Rpb24pKTsKIAotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKKyAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q29uZGl0aW9uYWx9OwogICAgICAgICAgICAgJGNvbmRpdGlvbmFsc3skbmFtZX0gPSAkY29u
ZGl0aW9uYWwgaWYgJGNvbmRpdGlvbmFsOwogCiAgICAgICAgICAgICAkaGFzaFNpemUrKzsKQEAg
LTI4MjEsMTIgKzI4MTksMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
bXkgQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcyA9IEBydW50aW1lRW5hYmxlZEZ1bmN0aW9uczsK
ICAgICAgICAgcHVzaChAcnVudGltZUVuYWJsZWRQcm9wZXJ0aWVzLCBAcnVudGltZUVuYWJsZWRB
dHRyaWJ1dGVzKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb25PckF0dHJpYnV0ZSAoQHJ1
bnRpbWVFbmFibGVkUHJvcGVydGllcykgewotICAgICAgICAgICAgbXkgJHNpZ25hdHVyZSA9ICRm
dW5jdGlvbk9yQXR0cmlidXRlLT5zaWduYXR1cmU7Ci0gICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkc2ln
bmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbk9yQXR0cmlidXRlKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIik7Ci0gICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0
aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkc2lnbmF0dXJlKTsKLSAgICAgICAg
ICAgIG15ICRuYW1lID0gJHNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRlbmFibGVf
ZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRmdW5jdGlvbk9yQXR0cmli
dXRlKTsKKyAgICAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPm5hbWU7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoISR7ZW5hYmxlX2Z1bmN0
aW9ufSgpKSB7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBJ
ZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikp
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgVk06OkRlbGV0
ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25v
cmVDb25maWd1cmFibGUpO1xuIik7CkBAIC0yODM3LDExICsyODM0LDExIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgbXkgJGZpcnN0UHJpdmF0ZUZ1bmN0aW9uID0gMTsK
ICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkg
ewotICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0pOworICAgICAgICAgICAgbmV4dCB1bmxl
c3MgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9KTsK
ICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVk1DbGllbnREYXRhJiBjbGll
bnREYXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7XG4i
KSBpZiAkZmlyc3RQcml2YXRlRnVuY3Rpb247CiAgICAgICAgICAgICAkZmlyc3RQcml2YXRlRnVu
Y3Rpb24gPSAwOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0
KHZtLCBjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
bmFtZSAuICJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCgpLCAwLCBTdHJpbmcoKSwgIiAuIEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NO
YW1lLCAkZnVuY3Rpb24pIC4gIiksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIGNsaWVudERhdGEuYnVp
bHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbi0+bmFtZSAuICJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgIiAuIEdldEZ1bmN0
aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pIC4gIiksIFJlYWRPbmx5
IHwgRG9udEVudW0pO1xuIik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoJGludGVyZmFjZS0+
aXRlcmFibGUpIHsKQEAgLTI5MTQsMTMgKzI5MTEsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgfQogICAgICAgICAjIFN1cHBvcnQgZm9yIFJ1bnRpbWVFbmFibGVkIGF0
dHJpYnV0ZXMgb24gZ2xvYmFsIG9iamVjdHMuCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3Mg
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50
aW1lfTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9OwogCiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIik7Ci0gICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0
cmlidXRlLT5zaWduYXR1cmUpOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlv
biA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsK
LSAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lOworICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVG
dW5jdGlvbk5hbWUoJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9
ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpIHtcbiIpOwogICAgICAgICAgICAgbXkgJGdldHRlciA9
IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0
ZSk7CiAgICAgICAgICAgICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSA/ICJu
dWxscHRyIiA6IEdldEF0dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGF0dHJpYnV0ZSk7CkBAIC0yOTMzLDExICsyOTMwLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgIyBTdXBwb3J0IFByaXZhdGVJZGVudGlmaWVyIGF0dHJpYnV0ZXMg
b24gZ2xvYmFsIG9iamVjdHMKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRl
cmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfTsKKyAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1By
aXZhdGVJZGVudGlmaWVyfTsKIAogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNv
cmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlKTsKLSAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7CisgICAgICAg
ICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICBt
eSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkYXR0cmlidXRlKTsKIAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtj
b25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI5NDcsMjEg
KzI5NDQsMjEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAjIFN1cHBv
cnQgZm9yIFJ1bnRpbWVFbmFibGVkIG9wZXJhdGlvbnMgb24gZ2xvYmFsIG9iamVjdHMuCiAgICAg
ICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAg
ICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX07CiAgICAgICAgICAg
ICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJs
b2FkSW5kZXh9ID4gMTsKIAogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIpOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0g
JGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWdu
YXR1cmUpOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVudGlt
ZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVuY3Rpb24tPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBt
eSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgICAg
ICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgkZnVu
Y3Rpb24pOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsK
ICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRhdGlvbkZ1bmN0aW9uID0gR2V0RnVuY3Rpb25OYW1l
KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBteSAkZnVu
Y3Rpb25MZW5ndGggPSBHZXRGdW5jdGlvbkxlbmd0aCgkZnVuY3Rpb24pOwogICAgICAgICAgICAg
bXkgJGpzQXR0cmlidXRlcyA9IENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1
bmN0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJs
ZV9mdW5jdGlvbn0oKSlcbiIpOwogCiAgICAgICAgICAgICBteSAkcHJvcGVydHlOYW1lID0gInZt
LnByb3BlcnR5TmFtZXMtPiRmdW5jdGlvbk5hbWUiOwotICAgICAgICAgICAgJHByb3BlcnR5TmFt
ZSA9ICJzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS4iIC4gJGZ1bmN0aW9uTmFtZSAuICJQcml2YXRlTmFtZSgpIiBpZiAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9OworICAg
ICAgICAgICAgJHByb3BlcnR5TmFtZSA9ICJzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0aW9uTmFtZSAuICJQcml2YXRl
TmFtZSgpIiBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlm
aWVyfTsKICAgICAgICAgICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24p
KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHB1dERpcmVj
dEJ1aWx0aW5GdW5jdGlvbih2bSwgdGhpcywgJHByb3BlcnR5TmFtZSwgJGltcGxlbWVudGF0aW9u
RnVuY3Rpb24odm0pLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKCRqc0F0dHJpYnV0ZXMpKTtcbiIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTMwMzIsNyArMzAyOSw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9u
KSB7CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHRoaXMgd29yayBmb3IgYWxsIHN0
cmluZyB0eXBlcz8KLSAgICAgICAgICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+
c2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJET01TdHJpbmciKSB7CisgICAgICAgICAgICAgICAg
aWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIpIHsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKExJS0VMWShp
bmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoTElLRUxZ
KGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSkge1xuIik7CkBAIC0zMTEw
LDIwICszMTA3LDIwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIGZvcmVh
Y2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAg
ICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAotICAgICAg
ICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgICAg
ICBteSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKKyAgICAgICAgICAgIG15
ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICR0eXBlID0gJGF0dHJp
YnV0ZS0+dHlwZTsKICAgICAgICAgICAgIG15ICRnZXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1
dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwotICAgICAg
ICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNm
aXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVu
dGVkQXN9IHx8ICRuYW1lKTsKLSAgICAgICAgICAgIG15ICRnZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbiA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2V0
dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb259OworICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkbmFtZSk7CisgICAgICAgICAgICBt
eSAkZ2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntHZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CiAKICAgICAgICAgICAg
ICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMSBpZiAkZ2V0dGVyTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb247CiAKLSAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0
cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSk7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRl
KTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7YXR0cmlidXRlQ29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7CiAKICAgICAg
ICAgICAgIGlmICghJGF0dHJpYnV0ZS0+aXNTdGF0aWMgfHwgJGNvZGVHZW5lcmF0b3ItPklzQ29u
c3RydWN0b3JUeXBlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgIG15ICR0ZW1wbGF0ZVBhcmFt
ZXRlcnMgPSAiJHtnZXRGdW5jdGlvbk5hbWV9R2V0dGVyIjsKLSAgICAgICAgICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc30p
IHsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
TGVuaWVudFRoaXN9KSB7CiAgICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMg
Lj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5IjsKICAgICAgICAgICAg
ICAgICB9IGVsc2lmIChJc1JldHVybmluZ1Byb21pc2UoJGF0dHJpYnV0ZSkpIHsKICAgICAgICAg
ICAgICAgICAgICAgJHRlbXBsYXRlUGFyYW1ldGVycyAuPSAiLCBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6UmVqZWN0UHJvbWlzZSI7CkBAIC0zMTU0LDE3ICszMTUxLDE3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0oc3RhdGUpO1xuIik7CiAKICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsK
LSAgICAgICAgICAgIGlmICgkZ2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gJiYgIUhhc0N1
c3RvbUdldHRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsK
KyAgICAgICAgICAgIGlmICgkZ2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gJiYgIUhhc0N1
c3RvbUdldHRlcigkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAjIEdsb2JhbCBjb25zdHJ1Y3RvcnMgY2FuIGJlIGRpc2FibGVkIGF0IHJ1
bnRpbWUuCiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBl
KCR0eXBlKSkgewotICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7CisgICAgICAgICAgICAgICAg
aWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7
CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJGcmFtZS5oIik7CiAgICAg
ICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7Ci0gICAgICAg
ICAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgLiAi
RW5hYmxlZCI7CisgICAgICAgICAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBUb01l
dGhvZE5hbWUoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGlu
Z30pIC4gIkVuYWJsZWQiOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCkpKVxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5mcmFtZSgpLT5z
ZXR0aW5ncygpO1xuIik7CkBAIC0zMTczLDExICszMTcwLDExIEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAkbmVlZHNWaXNpdENoaWxkcmVuID0gMSBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX07CisgICAgICAgICAgICAkbmVlZHNWaXNp
dENoaWxkcmVuID0gMSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRB
dHRyaWJ1dGV9OwogCiAgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2hlY2tTZWN1cml0eX0gJiYKLSAgICAgICAgICAgICAgICAhJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmCi0gICAg
ICAgICAgICAgICAgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0ZXJ9KSB7CisgICAgICAgICAgICAgICAgISRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX0gJiYKKyAgICAgICAg
ICAgICAgICAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3Vy
aXR5T25HZXR0ZXJ9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJE
T01XaW5kb3ciKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KCZzdGF0
ZSwgdGhpc09iamVjdC53cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikpXG4iKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewpAQCAtMzE4Niw3ICszMTgzLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
aWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9uZGV0ZXJt
aW5pc3RpY30pIHsKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntOb25kZXRlcm1pbmlzdGljfSkgewogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJNZW1vaXplZERPTVJlc3VsdC5oIiwgIldFQl9SRVBMQVkiKTsKICAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiPHJlcGxheS9JbnB1dEN1cnNvci5oPiIsICJXRUJfUkVQTEFZ
Iik7CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4iLCAiV0VCX1JFUExBWSIpOwpAQCAtMzIwMiw3ICszMTk5LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVzdWx0ID0gdGhpc09i
amVjdC53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8JG1lbW9pemVkVHlw
ZT4+KGJpbmRpbmdOYW1lLmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgJGV4Y2VwdGlv
bkNvZGUpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0
cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2UsICJtZW1vaXplZFJlc3VsdCIsICJ0aGlz
T2JqZWN0IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNl
cygkYXR0cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAidGhpc09iamVj
dCIpIC4gIjtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCBlYyk7XG4iKSBpZiAkZ2V0dGVy
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICB9XG4iKTsKQEAgLTMyMTIsNyArMzIwOSw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIE1lbW9pemVkRE9NUmVzdWx0QmFzZSogaW5wdXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxNZW1v
aXplZERPTVJlc3VsdEJhc2U+KCk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgaWYgKGlucHV0ICYmIGlucHV0LT5jb252ZXJ0VG88JG1lbW9pemVkVHlw
ZT4obWVtb2l6ZWRSZXN1bHQpKSB7XG4iKTsKICAgICAgICAgICAgICAgICAjIEZJWE1FOiB0aGUg
Z2VuZXJhdGVkIGNvZGUgc2hvdWxkIHJlcG9ydCBhbiBlcnJvciBpZiBhbiBpbnB1dCBjYW5ub3Qg
YmUgZmV0Y2hlZCBvciBjb252ZXJ0ZWQuCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2lu
Z1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAibWVtb2l6
ZWRSZXN1bHQiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9K
U1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsIDAsICRpbnRlcmZhY2UsICJtZW1vaXpl
ZFJlc3VsdCIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Nj
b3BlLCBpbnB1dC0+ZXhjZXB0aW9uQ29kZSgpKTtcbiIpIGlmICRnZXR0ZXJNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbjsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgfVxuIik7CkBAIC0zMjIwLDE3ICszMjE3LDE3IEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZc
biIpOwogICAgICAgICAgICAgfSAjIGF0dHJpYnV0ZSBOb25kZXRlcm1pbmlzdGljCiAKLSAgICAg
ICAgICAgIGlmIChIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMpKSB7CisgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICByZXR1cm4gdGhpc09iamVjdC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZShzdGF0
ZSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlLT5uYW1lIGVxICJFdmVudEhhbmRs
ZXIiKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRXZlbnROYW1lcy5oIn0gPSAx
OwotICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e1dpbmRvd0V2ZW50SGFuZGxlcn0gPyAid2luZG93RXZlbnRIYW5k
bGVyQXR0cmlidXRlIgotICAgICAgICAgICAgICAgICAgICA6ICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9jdW1lbnRFdmVudEhhbmRsZXJ9ID8gImRvY3VtZW50
RXZlbnRIYW5kbGVyQXR0cmlidXRlIgorICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhhbmRsZXJ9ID8gIndpbmRv
d0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICAgICAgOiAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb2N1bWVudEV2ZW50SGFuZGxlcn0gPyAiZG9jdW1lbnRF
dmVudEhhbmRsZXJBdHRyaWJ1dGUiCiAgICAgICAgICAgICAgICAgICAgIDogImV2ZW50SGFuZGxl
ckF0dHJpYnV0ZSI7CiAgICAgICAgICAgICAgICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxl
ckF0dHJpYnV0ZUV2ZW50TmFtZSgkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gJGdldHRlcih0aGlzT2JqZWN0LndyYXBwZWQoKSwgJGV2
ZW50TmFtZSk7XG4iKTsKLSAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpKSB7Ci0gICAgICAgICAg
ICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZS0+
bmFtZTsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9y
VHlwZSgkYXR0cmlidXRlLT50eXBlKSkgeworICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3Rv
clR5cGUgPSAkYXR0cmlidXRlLT50eXBlLT5uYW1lOwogICAgICAgICAgICAgICAgICRjb25zdHJ1
Y3RvclR5cGUgPX4gcy9Db25zdHJ1Y3RvciQvLzsKICAgICAgICAgICAgICAgICAjIFdoZW4gQ29u
c3RydWN0b3IgYXR0cmlidXRlIGlzIHVzZWQgYnkgRE9NV2luZG93LmlkbCwgaXQncyBjb3JyZWN0
IHRvIHBhc3MgdGhpc09iamVjdCBhcyB0aGUgZ2xvYmFsIG9iamVjdAogICAgICAgICAgICAgICAg
ICMgV2hlbiBKU0RPTVdyYXBwZXJzIGhhdmUgYSBiYWNrLXBvaW50ZXIgdG8gdGhlIGdsb2JhbE9i
amVjdCB3ZSBjYW4gcGFzcyB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKQpAQCAtMzIzOSwzMyAr
MzIzNiwzMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAg
ICAkY29uc3RydWN0b3JUeXBlID1+IHMvTmFtZWQkLy87CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIjo6
Z2V0JHtuYW1lZH1Db25zdHJ1Y3RvcihzdGF0ZS52bSgpLCAmdGhpc09iamVjdCk7XG4iKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlcygiSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICIuaCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0
cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOwogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9y
VHlwZSAuICI6OmdldENvbnN0cnVjdG9yKHN0YXRlLnZtKCksIHRoaXNPYmplY3QuZ2xvYmFsT2Jq
ZWN0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNpZiAoISRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2V0dGVyTWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb259KSB7CisgICAgICAgICAgICB9IGVsc2lmICghJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57R2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb259KSB7CiAgICAg
ICAgICAgICAgICAgbXkgJGNhY2hlSW5kZXggPSAwOwotICAgICAgICAgICAgICAgIGlmICgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX0p
IHsKKyAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FjaGVkQXR0cmlidXRlfSkgewogICAgICAgICAgICAgICAgICAgICAkY2FjaGVJbmRleCA9ICRj
dXJyZW50Q2FjaGVkQXR0cmlidXRlOwogICAgICAgICAgICAgICAgICAgICAkY3VycmVudENhY2hl
ZEF0dHJpYnV0ZSsrOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IHRoaXNPYmplY3QubV8iIC4gJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lIC4gIi5nZXQoKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IHRoaXNPYmplY3Qu
bV8iIC4gJGF0dHJpYnV0ZS0+bmFtZSAuICIuZ2V0KCkpXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiIpOwog
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBH
ZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCBcQGltcGxDb250ZW50LCAianNVbmRlZmluZWQo
KSIpOworICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBHZW5lcmF0ZUNhbGxXaXRo
VXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRo
fSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiKTsKIAogICAgICAgICAgICAgICAgIGlm
ICgkc3ZnTGlzdFByb3BlcnR5VHlwZSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdS
ZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwgInRoaXNPYmpl
Y3Qud3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBAY2Fs
bFdpdGhBcmdzKSAuICIpIiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2
ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAidGhp
c09iamVjdC53cmFwcGVkKCkuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIs
IEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOwogICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQ
cm9wZXJ0eVR5cGUmIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKS5wcm9wZXJ0eVJlZmVyZW5j
ZSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9w
ZXJ0eVR5cGUgZXEgImZsb2F0IikgeyAjIFNwZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWdu
YXR1cmUsIDAsICRpbnRlcmZhY2UsICJpbXBsIiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAk
aW50ZXJmYWNlLCAiaW1wbCIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5j
ZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAiaW1wbC4kaW1wbEdldHRl
ckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJ0aGlz
T2JqZWN0IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVy
ZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlv
bk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFyZ3MpIC4gIikiLCAidGhpc09iamVjdCIp
IC4gIjtcbiIpOwogCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBteSAoJGZ1bmN0aW9uTmFtZSwgQGFyZ3VtZW50cykg
PSAkY29kZUdlbmVyYXRvci0+R2V0dGVyRXhwcmVzc2lvbihcJWltcGxJbmNsdWRlcywgJGludGVy
ZmFjZU5hbWUsICRhdHRyaWJ1dGUpOwotICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVtZW50
ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVt
ZW50ZWRCeX07CisgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07CiAgICAgICAgICAgICAg
ICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgewogICAgICAgICAgICAgICAgICAgICAgICAgJGlt
cGxJbmNsdWRlc3siJHtpbXBsZW1lbnRlZEJ5fS5oIn0gPSAxOwogICAgICAgICAgICAgICAgICAg
ICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJXZWJDb3JlOjoke2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0
aW9uTmFtZX0iOwpAQCAtMzI3Nyw3ICszMjc0LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQo
QGFyZ3VtZW50cywgQGNhbGxXaXRoQXJncyk7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRqc1R5
cGUgPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAwLCAkaW50ZXJmYWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVu
dHMpIC4gIikiLCAidGhpc09iamVjdCIpOworICAgICAgICAgICAgICAgICAgICBteSAkanNUeXBl
ID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsIDAsICRpbnRlcmZh
Y2UsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJ0
aGlzT2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTtcbiIpIGlmICEkYXR0cmlidXRlLT5p
c1N0YXRpYzsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR0Fu
aW1hdGVkVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGF1dG8gb2JqID0gJGpzVHlwZTtcbiIpOwpAQCAtMzI4NywxOCArMzI4NCwx
OCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgdGhpc09iamVjdC5tXyIgLiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgLiAiLnNldChz
dGF0ZS52bSgpLCAmdGhpc09iamVjdCwgcmVzdWx0KTtcbiIpIGlmICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRlfTsKKyAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUt
Pm5hbWUgLiAiLnNldChzdGF0ZS52bSgpLCAmdGhpc09iamVjdCwgcmVzdWx0KTtcbiIpIGlmICRh
dHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX07CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIpOwogCiAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywg
R2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVk
KCkiLCAwKSk7CisgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNh
bGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxXaXRofSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCkiLCAwKSk7CiAKICAgICAgICAg
ICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3Bl
cnR5VHlwZSBpbXBsKCp0aGlzT2JqZWN0LndyYXBwZWQoKSk7XG4iKTsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZl
VG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVy
ZmFjZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKSIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAiaW1wbC4kaW1w
bEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgInRo
aXNPYmplY3QiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2Vz
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwgImltcGwuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJ0aGlzT2JqZWN0
IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0
cmlidXRlLCAwLCAkaW50ZXJmYWNlLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4g
am9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBzZXRET01FeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCBlYyk7XG4iKTsKQEAgLTMzMDgs
MTUgKzMzMDUsMTUgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCi0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8d3RmL05ldmVyRGVzdHJveWVkLmg+In0gPSAx
OwogICAgICAgICAgICAgICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+
bmFtZTsKLSAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+bmFtZTsKLSAgICAgICAgICAgICAgICBteSAkZ2VuZXJhdG9yTmFtZSA9ICRpbnRl
cmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lKTsKKyAgICAgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1
dGUtPm5hbWU7CisgICAgICAgICAgICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50ZXJmYWNl
TmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAg
ICAgICAgICAgICAgIG15ICRkb21KSVRDbGFzc05hbWUgPSAkZ2VuZXJhdG9yTmFtZSAuICJET01K
SVQiOwogICAgICAgICAgICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1l
KCRpbnRlcmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAg
ICBteSAkc2V0dGVyID0gSXNSZWFkb25seSgkYXR0cmlidXRlKSA/ICJudWxscHRyIiA6IEdldEF0
dHJpYnV0ZVNldHRlck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1dGUp
OwotICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigk
YXR0cmlidXRlLT5zaWduYXR1cmUpOworICAgICAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0g
R2V0UmVzdWx0VHlwZUZpbHRlcigkYXR0cmlidXRlLT50eXBlKTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiRkb21KSVRDbGFzc05hbWU6OiRkb21KSVRDbGFzc05hbWUoKVxu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgOiBKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKCRnZXR0ZXIsICRzZXR0ZXIsICR7Y2xhc3NOYW1lfTo6aW5mbygpLCAk
cmVzdWx0VHlwZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xu
Iik7CkBAIC0zNDI2LDIxICszNDIzLDIxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgIGlmICghSXNSZWFkb25seSgkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgbmV4dCBp
ZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKIAotICAgICAgICAgICAgbXkg
JG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgICAgICBteSAkdHlw
ZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKKyAgICAgICAgICAgIG15ICRuYW1lID0g
JGF0dHJpYnV0ZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICR0eXBlID0gJGF0dHJpYnV0ZS0+dHlw
ZTsKICAgICAgICAgICAgIG15ICRwdXRGdW5jdGlvbk5hbWUgPSBHZXRBdHRyaWJ1dGVTZXR0ZXJO
YW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkg
JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkbmFt
ZSk7Ci0gICAgICAgICAgICBteSAkc2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gPSAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlck1heVRocm93TGVn
YWN5RXhjZXB0aW9ufTsKKyAgICAgICAgICAgIG15ICRzZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbiA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlck1heVRocm93TGVn
YWN5RXhjZXB0aW9ufTsKIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRXhjZXB0aW9uQ29k
ZS5oIn0gPSAxIGlmICRzZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbjsKIAotICAgICAgICAg
ICAgbXkgJGF0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVy
YXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAg
IG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIjaWYgJHthdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRhdHRyaWJ1
dGVDb25kaXRpb25hbFN0cmluZzsKIAogICAgICAgICAgICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0
YXRpYykgewogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXJGdW5jdGlvbiA9ICIke3B1dEZ1bmN0
aW9uTmFtZX1GdW5jdGlvbiI7CiAgICAgICAgICAgICAgICAgbXkgJHRlbXBsYXRlUGFyYW1ldGVy
cyA9ICRzZXR0ZXJGdW5jdGlvbjsKLSAgICAgICAgICAgICAgICAkdGVtcGxhdGVQYXJhbWV0ZXJz
IC49ICIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSIgaWYgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CisgICAgICAg
ICAgICAgICAgJHRlbXBsYXRlUGFyYW1ldGVycyAuPSAiLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6UmV0dXJuRWFybHkiIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlbmll
bnRUaGlzfTsKIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlu
bGluZSBib29sICR7c2V0dGVyRnVuY3Rpb259KEV4ZWNTdGF0ZSYsICR7Y2xhc3NOYW1lfSYsIEpT
VmFsdWUsIFRocm93U2NvcGUmKTtcblxuIik7CiAKQEAgLTM0NjIsMTQgKzM0NTksMTQgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7XG4iKTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q0VSZWFjdGlvbnN9KSB7CisgICAgICAgICAgICBpZiAoJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q0VSZWFjdGlvbnN9KSB7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUylcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrO1xuIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpOwogICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgifSA9IDE7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uU2V0dGVyfSkgeworICAgICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9
ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9
ICYmICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlP
blNldHRlcn0pIHsKICAgICAgICAgICAgICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdp
bmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3coJnN0YXRlLCB0
aGlzT2JqZWN0LndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSlcbiIpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CkBAIC0zNDc4LDcgKzM0NzUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKEhhc0N1c3Rv
bVNldHRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcykpIHsKKyAg
ICAgICAgICAgIGlmIChIYXNDdXN0b21TZXR0ZXIoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmpl
Y3Quc2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUoc3RhdGUsIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAg
ICAgICAgICB9IGVsc2lmICgkdHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5kbGVyIikgewpAQCAtMzQ5
MCw4ICszNDg3LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC53cmFwcGVkKCkuc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcigkZXZlbnROYW1lLCBjcmVhdGVKU0Vycm9ySGFuZGxlcigmc3Rh
dGUsIHZhbHVlLCAmdGhpc09iamVjdCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNFdmVudExpc3RlbmVyLmgifSA9
IDE7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1dpbmRvd0V2ZW50SGFuZGxlcn0gPyAic2V0V2luZG93
RXZlbnRIYW5kbGVyQXR0cmlidXRlIgotICAgICAgICAgICAgICAgICAgICAgICAgOiAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvY3VtZW50RXZlbnRIYW5kbGVy
fSA/ICJzZXREb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICAg
ICAgbXkgJHNldHRlciA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1dpbmRvd0V2
ZW50SGFuZGxlcn0gPyAic2V0V2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlIgorICAgICAgICAg
ICAgICAgICAgICAgICAgOiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb2N1bWVu
dEV2ZW50SGFuZGxlcn0gPyAic2V0RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUiCiAgICAg
ICAgICAgICAgICAgICAgICAgICA6ICJzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUiOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc2V0dGVyKHN0YXRlLCB0aGlz
T2JqZWN0LCB0aGlzT2JqZWN0LndyYXBwZWQoKSwgJGV2ZW50TmFtZSwgdmFsdWUpO1xuIik7CiAg
ICAgICAgICAgICAgICAgfQpAQCAtMzUwMywxMSArMzUwMCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICMgV2UgZG8gbm90IGdlbmVyYXRlIHRoZSBoZWFk
ZXIgZmlsZSBmb3IgTmFtZWRDb25zdHJ1Y3RvciBvZiBjbGFzcyBYWFhYLAogICAgICAgICAgICAg
ICAgICMgc2luY2Ugd2UgZ2VuZXJhdGUgdGhlIE5hbWVkQ29uc3RydWN0b3IgZGVjbGFyYXRpb24g
aW50byB0aGUgaGVhZGVyIGZpbGUgb2YgY2xhc3MgWFhYWC4KICAgICAgICAgICAgICAgICBpZiAo
JGNvbnN0cnVjdG9yVHlwZSBuZSAiYW55IiBhbmQgJGNvbnN0cnVjdG9yVHlwZSAhfiAvTmFtZWQk
LykgewotICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlMiIC4gJGNvbnN0
cnVjdG9yVHlwZSAuICIuaCIsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAvLyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25z
dHJ1Y3Rvci5cbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiB0aGlzT2JqZWN0LnB1dERpcmVjdChzdGF0ZS52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZzdGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcGxhY2VhYmxl
fSkgeworICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UmVwbGFjZWFibGV9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gcHJvcGVydHkuXG4iKTsKICAgICAgICAgICAgICAg
ICBpZiAoQXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBy
ZXBsYWNlU3RhdGljUHJvcGVydHlTbG90KHN0YXRlLnZtKCksICZ0aGlzT2JqZWN0LCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgXCIkbmFtZVwiKSwgdmFsdWUpO1xuIik7CkBAIC0zNTE2
LDEyICszNTEzLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1
dGUtPmlzU3RhdGljKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwdXRGb3J3YXJkcyA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHV0Rm9yd2FyZHN9Owor
ICAgICAgICAgICAgICAgICAgICBteSAkcHV0Rm9yd2FyZHMgPSAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntQdXRGb3J3YXJkc307CiAgICAgICAgICAgICAgICAgICAgIGlmICgkcHV0
Rm9yd2FyZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rp
b25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkbmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkaW1wbEdldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJh
dG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVu
dGVkQXN9IHx8ICRuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRmb3J3YXJkZWRB
dHRyaWJ1dGUgPSAkY29kZUdlbmVyYXRvci0+R2V0QXR0cmlidXRlRnJvbUludGVyZmFjZSgkaW50
ZXJmYWNlLCAkdHlwZS0+bmFtZSwgJHB1dEZvcndhcmRzKTsKIAotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRmb3J3YXJkZWRBdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q0VSZWFjdGlvbnN9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZvcndh
cmRlZEF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q0VSZWFjdGlvbnN9KSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgRU5BQkxFKENV
U1RPTV9FTEVNRU5UUylcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRS
ZWFjdGlvblN0YWNrO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjZW5kaWZcbiIpOwpAQCAtMzUzOSw3ICszNTM2LDcgQEAgc3ViIEdlbmVyYXRl
SW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBhdXRvJiBpbXBsID0gZm9yd2FyZGVkSW1wbC5nZXQoKTtcbiIpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZSA9
ICRmb3J3YXJkZWRBdHRyaWJ1dGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkdHlwZSA9ICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICR0eXBl
ID0gJGF0dHJpYnV0ZS0+dHlwZTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0zNTQ3
LDEyICszNTQ0LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpIGlm
ICRzZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbjsKIAotICAgICAgICAgICAgICAgIG15ICRz
aG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgJGludGVyZmFjZSk7CisgICAgICAgICAgICAgICAgbXkgJHNob3Vs
ZFBhc3NCeVJlZmVyZW5jZSA9IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJGF0dHJpYnV0
ZSwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5
VGhyb3dFeGNlcHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSwgInZhbHVlIiwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDb25kaXRpb25hbH0sICImc3RhdGUiLCAic3RhdGUiLCAidGhpc09iamVjdCIpOwor
ICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBK
U1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSwgInZhbHVlIiwgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9LCAiJnN0YXRlIiwgInN0YXRlIiwg
InRoaXNPYmplY3QiKTsKICAgICAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlSZWZlcmVu
Y2UgJiYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVy
YXRvci0+SXNUeXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgICRp
bXBsSW5jbHVkZXN7IjxydW50aW1lL0Vycm9yLmg+In0gPSAxOwotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUo
JGludGVyZmFjZSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKSAuICIgbmF0aXZlVmFsdWUgPSBudWxs
cHRyO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICIg
LiBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnR5cGUpIC4gIiBuYXRpdmVW
YWx1ZSA9IG51bGxwdHI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCF2YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIG5hdGl2ZVZhbHVlID0gJG5h
dGl2ZVZhbHVlO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTtcbiIpIGlmICRt
YXlUaHJvd0V4Y2VwdGlvbjsKQEAgLTM1OTMsNyArMzU5MCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAi
cG9kSW1wbC5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShuYXRpdmVWYWx1ZSI7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIiwgZWMiIGlmICRzZXR0ZXJNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0
cmluZyAuPSAiKSI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAi
cHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBp
ZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlck1heVRo
cm93RXhjZXB0aW9ufTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9
ICJwcm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZyki
IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlck1heVRocm93RXhjZXB0
aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRm
dW5jdGlvblN0cmluZztcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgdGhyb3dTY29wZSwgZWMpO1xuIikg
aWYgJHNldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC0zNjE2LDkgKzM2MTMsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJn
dW1lbnRzLCAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID8gIipuYXRpdmVWYWx1ZSIgOiAiV1RGTW92
ZShuYXRpdmVWYWx1ZSkiKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07CisgICAgICAgICAgICAgICAgICAgIG15ICRpbXBs
ZW1lbnRlZEJ5ID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRC
eX07CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0uaCIsICRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVk
Qnl9LmgiLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOwog
ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEk
YXR0cmlidXRlLT5pc1N0YXRpYzsKICAgICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5h
bWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9IjsKICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKQEAgLTM2Mjcs
MTMgKzM2MjQsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAg
ICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiaW1wbC4ke2Z1bmN0aW9uTmFtZX0iOwogICAgICAg
ICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRz
LCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdpdGh9LCBcQGltcGxDb250ZW50LCAiZmFs
c2UiKSk7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVD
YWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImZhbHNlIikpOworICAgICAgICAg
ICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVy
ZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdpdGh9LCBc
QGltcGxDb250ZW50LCAiZmFsc2UiKSk7CisgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFy
Z3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJmYWxzZSIpKTsKIAog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICRzZXR0ZXJNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbjsKIAogICAgICAgICAgICAgICAgICAgICBteSAkZnVuY3Rpb25T
dHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4gam9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsK
LSAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlv
bihzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYgJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn07Cisg
ICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24o
c3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1NldHRlck1heVRocm93RXhjZXB0aW9ufTsKIAogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkZnVuY3Rpb25TdHJpbmc7XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgdGhyb3dTY29wZSwgZWMpO1xuIikgaWYgJHNldHRlck1heVRocm93TGVnYWN5RXhj
ZXB0aW9uOwpAQCAtMzY4Myw3ICszNjgwLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgICAgICBuZXh0IGlm
IElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7Ci0gICAgICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkg
eworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVD
b3B5cmlnaHR9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmln
aHRGb3JTb3VyY2VGaWxlcyk7CiAgICAgICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0
ID0gMTsKQEAgLTM2OTMsMTggKzM2OTAsMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIG15ICRpc0N1c3RvbSA9IEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIG15ICRpc0N1c3RvbSA9
IEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAgICAg
ICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5j
dGlvbi0+e292ZXJsb2Fkc319ID4gMTsKIAotICAgICAgICAgICAgbXkgJG1heVRocm93TGVnYWN5
RXhjZXB0aW9uID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e01h
eVRocm93TGVnYWN5RXhjZXB0aW9ufTsKKyAgICAgICAgICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbiA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdhY3lF
eGNlcHRpb259OwogCiAgICAgICAgICAgICBuZXh0IGlmICRpc0N1c3RvbSAmJiAkaXNPdmVybG9h
ZGVkICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKIAotICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKSB1bmxl
c3MgJGlzQ3VzdG9tIG9yIElzUmV0dXJuaW5nUHJvbWlzZSgkZnVuY3Rpb24pOworICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRmdW5jdGlvbi0+dHlwZSkgdW5sZXNzICRp
c0N1c3RvbSBvciBJc1JldHVybmluZ1Byb21pc2UoJGZ1bmN0aW9uKTsKIAogICAgICAgICAgICAg
bXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkZnVuY3Rpb24pOwogCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OworICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25k
aXRpb25hbH07CiAgICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CiAgICAgICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7CkBA
IC0zNzE4LDcgKzM3MTUsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICRmdW5jdGlvblJldHVybiA9ICJzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIjsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVu
dGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5uYW1lKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRm
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGNvZGVHZW5l
cmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsKIAogICAgICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkpTRE9NUHJvbWlzZS5oIikgaWYgSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5j
dGlvbik7CiAKQEAgLTM3NTAsNyArMzc0Nyw3IEBAIEVORAogCiAgICAgICAgICAgICAkaW1wbElu
Y2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKIAotICAgICAgICAgICAgaWYgKCRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDRVJlYWN0aW9uc30pIHsKKyAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25z
fSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShDVVNU
T01fRUxFTUVOVFMpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKQEAg
LTM3NzQsMTAgKzM3NzEsMTAgQEAgRU5ECiAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlSW1w
bGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJGZ1bmN0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAg
IiwgJHN2Z1Byb3BlcnR5VHlwZSwgJGludGVyZmFjZSk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFtZSA9ICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRtZXRob2ROYW1lID0g
JGZ1bmN0aW9uLT5uYW1lOwogICAgICAgICAgICAgICAgIGlmIChJc1JldHVybmluZ1Byb21pc2Uo
JGZ1bmN0aW9uKSAmJiAhJGlzQ3VzdG9tKSB7CiAgICAgICAgICAgICAgICAgICAgIG15ICR0ZW1w
bGF0ZVBhcmFtZXRlcnMgPSAiJHtmdW5jdGlvbk5hbWV9Q2FsbGVyIjsKLSAgICAgICAgICAgICAg
ICAgICAgJHRlbXBsYXRlUGFyYW1ldGVycyAuPSAiLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6
QXNzZXJ0IiBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1By
aXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7CisgICAgICAgICAgICAgICAgICAgICR0ZW1w
bGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCIgaWYg
KCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBu
b3QgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPCRjbGFzc05hbWU+OjpjYWxsUHJvbWlzZU9wZXJhdGlvbjwke3RlbXBsYXRlUGFyYW1l
dGVyc30+KHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpLCBcIiR7bWV0aG9kTmFtZX1cIik7XG4iKTsK
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiIpOwpAQCAtMzc4NSw3ICszNzgyLDcg
QEAgRU5ECiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbXkg
JGNsYXNzUGFyYW1ldGVyVHlwZSA9ICRjbGFzc05hbWUgZXEgIkpTRXZlbnRUYXJnZXQiID8gIkpT
RXZlbnRUYXJnZXRXcmFwcGVyKiIgOiAiJHtjbGFzc05hbWV9KiI7CiAgICAgICAgICAgICAgICAg
ICAgIG15ICR0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAiJHtmdW5jdGlvbk5hbWV9Q2FsbGVyIjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIG5vdCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0pIHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZp
ZXJ9IGFuZCBub3QgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlm
aWVyfSkgewogICAgICAgICAgICAgICAgICAgICAgICAgJHRlbXBsYXRlUGFyYW1ldGVycyAuPSAi
LCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0IjsKICAgICAgICAgICAgICAgICAgICAg
fSBlbHNpZiAoSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbikpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICMgRklYTUU6IFdlIG5lZWQgdGhpcyBzcGVjaWZpYyBoYW5kbGluZyBmb3IgY3Vz
dG9tIHByb21pc2UtcmV0dXJuaW5nIGZ1bmN0aW9ucy4KQEAgLTM4MDMsNyArMzgwMCw3IEBAIEVO
RAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKIAotICAgICAgICAgICAgICAgIGlmICgkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSBhbmQgISRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNr
U2VjdXJpdHl9IGFuZCAhJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNr
U2VjdXJpdHl9KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9ET01XaW5kb3co
c3RhdGUsIGNhc3RlZFRoaXMtPndyYXBwZWQoKSwgVGhyb3dTZWN1cml0eUVycm9yKSlcbiIpOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzg3MCw4ICszODY3LDggQEAgRU5ECiAg
ICAgICAgIGlmICgkbnVtQ2FjaGVkQXR0cmlidXRlcyA+IDApIHsKICAgICAgICAgICAgIGZvcmVh
Y2ggKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgICAgICAgICBteSAkYXR0
cmlidXRlID0gJF87Ci0gICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRlfSkgewotICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+
bV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lIC4gIik7XG4iKTsKKyAgICAgICAgICAg
ICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRl
fSkgeworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV8iIC4gJGF0dHJpYnV0ZS0+bmFtZSAuICIpO1xuIik7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zODkzLDcgKzM4
OTAsNyBAQCBFTkQKIAogICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uKSB7CiAgICAgICAg
ICMgRklYTUU6IFNob3VsZCB0aGlzIHdvcmsgZm9yIGFsbCBzdHJpbmcgdHlwZXMuCi0gICAgICAg
ICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxIGlmICRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnNp
Z25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICAgICAgJGltcGxJbmNsdWRl
c3siVVJMLmgifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAi
RE9NU3RyaW5nIjsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lID1+IC9eSFRNTFx3KkNvbGxl
Y3Rpb24kLyBvciAkaW50ZXJmYWNlTmFtZSBlcSAiUmFkaW9Ob2RlTGlzdCIpIHsKICAgICAgICAg
ICAgICRpbXBsSW5jbHVkZXN7IkpTTm9kZS5oIn0gPSAxOwogICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siTm9kZS5oIn0gPSAxOwpAQCAtNDA4NiwyMSArNDA4MywyMSBAQCBzdWIgR2VuZXJhdGVT
ZXJpYWxpemVyRnVuY3Rpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiAKICAgICBt
eSBAc2VyaWFsaXplZEF0dHJpYnV0ZXMgPSAoKTsKLSAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGVf
bmFtZSAoQHskaW50ZXJmYWNlLT5zZXJpYWxpemFibGUtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAg
IG15ICRmb3VuZF9hdHRyaWJ1dGUgPSAwOworICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZU5hbWUg
KEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5hdHRyaWJ1dGVzfSkgeworICAgICAgICBteSAk
Zm91bmRBdHRyaWJ1dGUgPSAwOwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGlu
dGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlX25hbWUg
ZXEgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSB7CisgICAgICAgICAgICBpZiAoJGF0dHJp
YnV0ZU5hbWUgZXEgJGF0dHJpYnV0ZS0+bmFtZSkgewogICAgICAgICAgICAgICAgIHB1c2ggQHNl
cmlhbGl6ZWRBdHRyaWJ1dGVzLCAkYXR0cmlidXRlOwotICAgICAgICAgICAgICAgICRmb3VuZF9h
dHRyaWJ1dGUgPSAxOworICAgICAgICAgICAgICAgICRmb3VuZEF0dHJpYnV0ZSA9IDE7CiAgICAg
ICAgICAgICAgICAgbGFzdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgZGllICJGYWlsZWQgdG8gZmluZCBcInNlcmlhbGl6ZXJcIiBhdHRyaWJ1dGUgXCIkYXR0
cmlidXRlX25hbWVcIiBpbiAkaW50ZXJmYWNlTmFtZSIgaWYgISRmb3VuZF9hdHRyaWJ1dGU7Cisg
ICAgICAgIGRpZSAiRmFpbGVkIHRvIGZpbmQgXCJzZXJpYWxpemVyXCIgYXR0cmlidXRlIFwiJGF0
dHJpYnV0ZU5hbWVcIiBpbiAkaW50ZXJmYWNlTmFtZSIgaWYgISRmb3VuZEF0dHJpYnV0ZTsKICAg
ICB9CiAKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEBzZXJpYWxpemVkQXR0cmlidXRlcykg
ewotICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAg
ICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogCiAgICAgICAgIG15ICRnZXRGdW5jdGlv
bk5hbWUgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRh
dHRyaWJ1dGUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvICR7bmFtZX1W
YWx1ZSA9ICR7Z2V0RnVuY3Rpb25OYW1lfUdldHRlcigqc3RhdGUsICp0aGlzT2JqZWN0LCB0aHJv
d1Njb3BlKTtcbiIpOwpAQCAtNDE3OCw3ICs0MTc1LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbFdpdGgK
ICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiKmRvY3VtZW50Iik7CiAgICAgfQogICAgIGlm
ICgkZnVuY3Rpb24gYW5kICRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5z
KCRjYWxsV2l0aCwgIlNjcmlwdEFyZ3VtZW50cyIpKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFyZ3Vt
ZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cygkc3RhdGVQb2ludGVyLCAiIC4g
QHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9IC4gIikpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBSZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRBcmd1bWVudHM+IHNjcmlwdEFy
Z3VtZW50cyhJbnNwZWN0b3I6OmNyZWF0ZVNjcmlwdEFyZ3VtZW50cygkc3RhdGVQb2ludGVyLCAi
IC4gQHskZnVuY3Rpb24tPmFyZ3VtZW50c30gLiAiKSk7XG4iKTsKICAgICAgICAgJGltcGxJbmNs
dWRlc3siPGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaD4ifSA9IDE7CiAgICAgICAgICRpbXBs
SW5jbHVkZXN7IjxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPiJ9ID0gMTsKICAg
ICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiV1RGTW92ZShzY3JpcHRBcmd1bWVudHMpIik7CkBA
IC00MTk2LDE3ICs0MTkzLDE2IEBAIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKICAg
ICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKLSAg
ICBteSAkbnVtTWFuZGF0b3J5UGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAg
IGZvcmVhY2ggbXkgJHBhcmFtIChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkpIHsK
LSAgICAgICAgaWYgKCRwYXJhbS0+aXNPcHRpb25hbCBvciAkcGFyYW0tPmlzVmFyaWFkaWMpIHsK
LSAgICAgICAgICAgICRudW1NYW5kYXRvcnlQYXJhbXMtLTsKKyAgICBteSAkbnVtTWFuZGF0b3J5
QXJndW1lbnRzID0gQHskZnVuY3Rpb24tPmFyZ3VtZW50c307CisgICAgZm9yZWFjaCBteSAkYXJn
dW1lbnQgKHJldmVyc2UoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pKSB7CisgICAgICAgIGlmICgk
YXJndW1lbnQtPmlzT3B0aW9uYWwgb3IgJGFyZ3VtZW50LT5pc1ZhcmlhZGljKSB7CisgICAgICAg
ICAgICAkbnVtTWFuZGF0b3J5QXJndW1lbnRzLS07CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBsYXN0OwogICAgICAgICB9CiAgICAgfQotICAgIGlmICgkbnVtTWFuZGF0b3J5UGFyYW1z
ID49IDEpCi0gICAgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElL
RUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAkbnVtTWFuZGF0b3J5UGFyYW1zKSlcbiIpOwor
ICAgIGlmICgkbnVtTWFuZGF0b3J5QXJndW1lbnRzID49IDEpIHsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgJG51
bU1hbmRhdG9yeUFyZ3VtZW50cykpXG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpO1xuIik7CiAgICAgfQogfQpAQCAtNDI1OSw5ICs0
MjU1LDkgQEAgc3ViIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsCiB7CiAgICAg
bXkgKCRmdW5jdGlvbikgPSBAXzsKIAotICAgIHJldHVybiAwIHVubGVzcyAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgIHJl
dHVybiAwIHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhj
ZXB0aW9ufTsKIAotICAgIHJldHVybiAxIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlICYm
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKKyAgICByZXR1cm4g
MSBpZiAkZnVuY3Rpb24tPnR5cGUgJiYgJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsK
ICAgICByZXR1cm4gMSBpZiBJc1JldHVybmluZ1Byb21pc2UoJGZ1bmN0aW9uKTsKIAogICAgIHJl
dHVybiAwOwpAQCAtNDI3NSwxMSArNDI3MSwxMSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICBteSAkdmlzaWJsZUludGVyZmFjZU5hbWUgPSAkY29kZUdlbmVyYXRvci0+R2V0Vmlz
aWJsZUludGVyZmFjZU5hbWUoJGludGVyZmFjZSk7CiAgICAgbXkgQGFyZ3VtZW50czsKICAgICBt
eSAkZnVuY3Rpb25OYW1lOwotICAgIG15ICRpbXBsZW1lbnRlZEJ5ID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OwotICAgIG15ICRudW1Q
YXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OworICAgIG15ICRpbXBsZW1lbnRl
ZEJ5ID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKKyAg
ICBteSAkbnVtQXJndW1lbnRzID0gQHskZnVuY3Rpb24tPmFyZ3VtZW50c307CiAKICAgICBpZiAo
JGltcGxlbWVudGVkQnkpIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7aW1wbGVtZW50
ZWRCeX0uaCIsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25k
aXRpb25hbH0pOworICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1lbnRlZEJ5fS5o
IiwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pOwogICAgICAg
ICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgaWYgISRmdW5jdGlvbi0+aXNTdGF0aWM7CiAg
ICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5j
dGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOwogICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0
aWMpIHsKQEAgLTQyOTEsMTAgKzQyODcsMTAgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAgICAgfQogCiAgICAgbXkgJHF1b3RlZEZ1bmN0aW9uTmFtZTsKLSAgICBpZiAoISRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3Rvcn0pIHsKLSAgICAg
ICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBpZiAoISRmdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3J9KSB7CisgICAgICAgIG15ICRu
YW1lID0gJGZ1bmN0aW9uLT5uYW1lOwogICAgICAgICAkcXVvdGVkRnVuY3Rpb25OYW1lID0gIlwi
JG5hbWVcIiI7Ci0gICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5n
UG9pbnRlcnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxX
aXRofSwgXEAkb3V0cHV0QXJyYXksICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiLCAk
ZnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNp
bmdQb2ludGVycygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgXEAk
b3V0cHV0QXJyYXksICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiLCAkZnVuY3Rpb24p
KTsKICAgICB9IGVsc2UgewogICAgICAgICAkcXVvdGVkRnVuY3Rpb25OYW1lID0gIm51bGxwdHIi
OwogICAgIH0KQEAgLTQzMDMsMzggKzQyOTksMzggQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9IDE7CiAKICAgICBteSAk
YXJndW1lbnRJbmRleCA9IDA7Ci0gICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlv
bi0+cGFyYW1ldGVyc30pIHsKLSAgICAgICAgbXkgJHR5cGUgPSAkcGFyYW1ldGVyLT50eXBlOwor
ICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAg
ICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKIAotICAgICAgICBkaWUgIk9wdGlvbmFs
IHBhcmFtZXRlcnMgb2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0
ZWQiIGlmICRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgJiYgISR0eXBlLT5pc051bGxhYmxlICYmICRj
b2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKTsKLSAgICAgICAgZGllICJPcHRpb25h
bCBwYXJhbWV0ZXJzIHByZWNlZGluZyB2YXJpYWRpYyBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9y
dGVkIiBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCAmJiAgQHskZnVuY3Rpb24tPnBhcmFtZXRl
cnN9WyRudW1QYXJhbWV0ZXJzIC0gMV0tPmlzVmFyaWFkaWMpOworICAgICAgICBkaWUgIk9wdGlv
bmFsIGFyZ3VtZW50cyBvZiBub24tbnVsbGFibGUgd3JhcHBlciB0eXBlcyBhcmUgbm90IHN1cHBv
cnRlZCIgaWYgJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICEkdHlwZS0+aXNOdWxsYWJsZSAmJiAk
Y29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7CisgICAgICAgIGRpZSAiT3B0aW9u
YWwgYXJndW1lbnRzIHByZWNlZGluZyB2YXJpYWRpYyBhcmd1bWVudHMgYXJlIG5vdCBzdXBwb3J0
ZWQiIGlmICgkYXJndW1lbnQtPmlzT3B0aW9uYWwgJiYgIEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9
WyRudW1Bcmd1bWVudHMgLSAxXS0+aXNWYXJpYWRpYyk7CiAKLSAgICAgICAgaWYgKCRwYXJhbWV0
ZXItPmlzT3B0aW9uYWwgJiYgIWRlZmluZWQoJHBhcmFtZXRlci0+ZGVmYXVsdCkpIHsKLSAgICAg
ICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgcGFyYW1ldGVycyBh
cmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgb2YgYW4gZW1wdHkg
ZGljdGlvbmFyeSwgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCi0gICAgICAgICAgICAkcGFy
YW1ldGVyLT5kZWZhdWx0KCJbXSIpIGlmICR0eXBlLT5uYW1lIGVxICJEaWN0aW9uYXJ5IiBvciAk
Y29kZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSk7CisgICAgICAgIGlmICgkYXJn
dW1lbnQtPmlzT3B0aW9uYWwgJiYgIWRlZmluZWQoJGFyZ3VtZW50LT5kZWZhdWx0KSkgeworICAg
ICAgICAgICAgIyBBcyBwZXIgV2ViIElETCwgb3B0aW9uYWwgZGljdGlvbmFyeSBhcmd1bWVudHMg
YXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIG9mIGFuIGVtcHR5
IGRpY3Rpb25hcnksIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgorICAgICAgICAgICAgJGFy
Z3VtZW50LT5kZWZhdWx0KCJbXSIpIGlmICR0eXBlLT5uYW1lIGVxICJEaWN0aW9uYXJ5IiBvciAk
Y29kZUdlbmVyYXRvci0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSk7CiAKLSAgICAgICAgICAgICMg
V2UgdXNlIHVuZGVmaW5lZCBhcyBkZWZhdWx0IHZhbHVlIGZvciBvcHRpb25hbCBwYXJhbWV0ZXJz
IG9mIHR5cGUgJ2FueScgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2UuCi0gICAgICAgICAgICAk
cGFyYW1ldGVyLT5kZWZhdWx0KCJ1bmRlZmluZWQiKSBpZiAkdHlwZS0+bmFtZSBlcSAiYW55IjsK
KyAgICAgICAgICAgICMgV2UgdXNlIHVuZGVmaW5lZCBhcyBkZWZhdWx0IHZhbHVlIGZvciBvcHRp
b25hbCBhcmd1bWVudHMgb2YgdHlwZSAnYW55JyB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZS4K
KyAgICAgICAgICAgICRhcmd1bWVudC0+ZGVmYXVsdCgidW5kZWZpbmVkIikgaWYgJHR5cGUtPm5h
bWUgZXEgImFueSI7CiAKLSAgICAgICAgICAgICMgV2UgdXNlIHRoZSBudWxsIHN0cmluZyBhcyBk
ZWZhdWx0IHZhbHVlIGZvciBwYXJhbWV0ZXJzIG9mIHR5cGUgRE9NU3RyaW5nIHVubGVzcyBzcGVj
aWZpZWQgb3RoZXJ3aXNlLgotICAgICAgICAgICAgJHBhcmFtZXRlci0+ZGVmYXVsdCgibnVsbCIp
IGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworICAgICAgICAgICAgIyBX
ZSB1c2UgdGhlIG51bGwgc3RyaW5nIGFzIGRlZmF1bHQgdmFsdWUgZm9yIGFyZ3VtZW50cyBvZiB0
eXBlIERPTVN0cmluZyB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZS4KKyAgICAgICAgICAgICRh
cmd1bWVudC0+ZGVmYXVsdCgibnVsbCIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUo
JHR5cGUpOwogCi0gICAgICAgICAgICAjIEFzIHBlciBXZWIgSURMLCBwYXNzaW5nIHVuZGVmaW5l
ZCBmb3IgYSBudWxsYWJsZSBwYXJhbWV0ZXIgaXMgdHJlYXRlZCBhcyBudWxsLiBUaGVyZWZvcmUs
IHVzZSBudWxsIGFzCi0gICAgICAgICAgICAjIGRlZmF1bHQgdmFsdWUgZm9yIG51bGxhYmxlIHBh
cmFtZXRlcnMgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQuCi0gICAgICAgICAgICAkcGFyYW1l
dGVyLT5kZWZhdWx0KCJudWxsIikgaWYgJHR5cGUtPmlzTnVsbGFibGU7CisgICAgICAgICAgICAj
IEFzIHBlciBXZWIgSURMLCBwYXNzaW5nIHVuZGVmaW5lZCBmb3IgYSBudWxsYWJsZSBhcmd1bWVu
dCBpcyB0cmVhdGVkIGFzIG51bGwuIFRoZXJlZm9yZSwgdXNlIG51bGwgYXMKKyAgICAgICAgICAg
ICMgZGVmYXVsdCB2YWx1ZSBmb3IgbnVsbGFibGUgYXJndW1lbnRzIHVubGVzcyBvdGhlcndpc2Ug
c3BlY2lmaWVkLgorICAgICAgICAgICAgJGFyZ3VtZW50LT5kZWZhdWx0KCJudWxsIikgaWYgJHR5
cGUtPmlzTnVsbGFibGU7CiAKLSAgICAgICAgICAgICMgRm9yIGNhbGxiYWNrIHBhcmFtZXRlcnMs
IHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MgdHJlYXQgdW5kZWZpbmVkIGFzIG51bGwsIHNvIHVzZSBu
dWxsIGFzIGltcGxpY2l0IGRlZmF1bHQgdmFsdWUuCi0gICAgICAgICAgICAkcGFyYW1ldGVyLT5k
ZWZhdWx0KCJudWxsIikgaWYgJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5
cGUpOworICAgICAgICAgICAgIyBGb3IgY2FsbGJhY2sgYXJndW1lbnRzLCB0aGUgZ2VuZXJhdGVk
IGJpbmRpbmdzIHRyZWF0IHVuZGVmaW5lZCBhcyBudWxsLCBzbyB1c2UgbnVsbCBhcyBpbXBsaWNp
dCBkZWZhdWx0IHZhbHVlLgorICAgICAgICAgICAgJGFyZ3VtZW50LT5kZWZhdWx0KCJudWxsIikg
aWYgJGNvZGVHZW5lcmF0b3ItPklzQ2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpOwogICAgICAgICB9
CiAKLSAgICAgICAgbXkgJG5hbWUgPSAkcGFyYW1ldGVyLT5uYW1lOworICAgICAgICBteSAkbmFt
ZSA9ICRhcmd1bWVudC0+bmFtZTsKICAgICAgICAgbXkgJHZhbHVlID0gJG5hbWU7CiAKICAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKSkgewogICAg
ICAgICAgICAgbXkgJGNhbGxiYWNrQ2xhc3NOYW1lID0gR2V0Q2FsbGJhY2tDbGFzc05hbWUoJHR5
cGUtPm5hbWUpOwogICAgICAgICAgICAgbXkgJHR5cGVOYW1lID0gJHR5cGUtPm5hbWU7CiAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyIkY2FsbGJhY2tDbGFzc05hbWUuaCJ9ID0gMTsKLSAgICAg
ICAgICAgIGlmICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsKSB7CisgICAgICAgICAgICBpZiAoJGFy
Z3VtZW50LT5pc09wdGlvbmFsKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFJlZlB0cjwkdHlwZU5hbWU+ICRuYW1lO1xuIik7CiAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KCRhcmd1bWVudEluZGV4
KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPklzRnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpKSB7CkBAIC00
MzUxLDcgKzQzNDcsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBkaWUgIkNhbGxiYWNrSW50ZXJm
YWNlIGRvZXMgbm90IHN1cHBvcnQgVmFyaWFkaWMgcGFyYW1ldGVyIiBpZiAkcGFyYW1ldGVyLT5p
c1ZhcmlhZGljOworICAgICAgICAgICAgICAgIGRpZSAiQ2FsbGJhY2tJbnRlcmZhY2UgZG9lcyBu
b3Qgc3VwcG9ydCBWYXJpYWRpYyBhcmd1bWVudHMiIGlmICRhcmd1bWVudC0+aXNWYXJpYWRpYzsK
ICAgICAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzRnVuY3Rpb25Pbmx5Q2FsbGJh
Y2tJbnRlcmZhY2UoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkYXJndW1l
bnRJbmRleCkuaXNGdW5jdGlvbigpKSlcbiIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBA
IC00MzY2LDkgKzQzNjIsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgk
bmFtZSkiOwotICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5pc1ZhcmlhZGljKSB7CisgICAg
ICAgIH0gZWxzaWYgKCRhcmd1bWVudC0+aXNWYXJpYWRpYykgewogICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siSlNET01Db252ZXJ0LmgifSA9IDE7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNs
dWRlc0ZvcklETFR5cGUoJHR5cGUsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDb25kaXRpb25hbH0pOworICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJ
RExUeXBlKCR0eXBlLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFs
fSk7CiAgICAgICAgIAogICAgICAgICAgICAgbXkgJG1ldGFUeXBlID0gR2V0SURMVHlwZSgkaW50
ZXJmYWNlLCAkdHlwZSk7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0
byAkbmFtZSA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50czwkbWV0YVR5cGU+KCpzdGF0ZSwgJGFy
Z3VtZW50SW5kZXgpO1xuIik7CkBAIC00Mzg2LDEwICs0MzgyLDEwIEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICAgICAgbXkgJGRlZmluZU9wdGlvbmFsVmFsdWUgPSAiYXV0
byBvcHRpb25hbFZhbHVlIjsKICAgICAgICAgICAgIG15ICRpbmRlbnQgPSAiIjsKIAotICAgICAg
ICAgICAgZGllICJWYXJpYWRpYyBwYXJhbWV0ZXIgaXMgYWxyZWFkeSBoYW5kbGVkIGhlcmUiIGlm
ICRwYXJhbWV0ZXItPmlzVmFyaWFkaWM7Ci0gICAgICAgICAgICBteSAkYXJndW1lbnRMb29rdXBN
ZXRob2QgPSAkcGFyYW1ldGVyLT5pc09wdGlvbmFsID8gImFyZ3VtZW50IiA6ICJ1bmNoZWNrZWRB
cmd1bWVudCI7CisgICAgICAgICAgICBkaWUgIlZhcmlhZGljIGFyZ3VtZW50IGlzIGFscmVhZHkg
aGFuZGxlZCBoZXJlIiBpZiAkYXJndW1lbnQtPmlzVmFyaWFkaWM7CisgICAgICAgICAgICBteSAk
YXJndW1lbnRMb29rdXBNZXRob2QgPSAkYXJndW1lbnQtPmlzT3B0aW9uYWwgPyAiYXJndW1lbnQi
IDogInVuY2hlY2tlZEFyZ3VtZW50IjsKIAotICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmlz
T3B0aW9uYWwgJiYgIWRlZmluZWQoJHBhcmFtZXRlci0+ZGVmYXVsdCkpIHsKKyAgICAgICAgICAg
IGlmICgkYXJndW1lbnQtPmlzT3B0aW9uYWwgJiYgIWRlZmluZWQoJGFyZ3VtZW50LT5kZWZhdWx0
KSkgewogICAgICAgICAgICAgICAgICRuYXRpdmVUeXBlID0gIk9wdGlvbmFsPCRjbGFzc05hbWU+
IjsKICAgICAgICAgICAgICAgICAkb3B0aW9uYWxWYWx1ZSA9ICRuYW1lOwogICAgICAgICAgICAg
ICAgICRkZWZpbmVPcHRpb25hbFZhbHVlID0gJG5hbWU7CkBAIC00Mzk4LDEyICs0Mzk0LDEyIEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGF1dG8gJHtuYW1lfVZhbHVlID0gc3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhv
ZCgkYXJndW1lbnRJbmRleCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAkbmF0aXZlVHlwZSAkbmFtZTtcbiIpOwogCi0gICAgICAgICAgICBpZiAoJHBhcmFtZXRl
ci0+aXNPcHRpb25hbCkgewotICAgICAgICAgICAgICAgIGlmICghZGVmaW5lZCAkcGFyYW1ldGVy
LT5kZWZhdWx0KSB7CisgICAgICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFkZWZpbmVkICRhcmd1bWVudC0+ZGVmYXVsdCkgewogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke25hbWV9VmFsdWUu
aXNVbmRlZmluZWQoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICgke25hbWV9VmFsdWUuaXNV
bmRlZmluZWQoKSlcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgICRuYW1lID0gIiAuIEdlbmVyYXRlRGVmYXVsdFZhbHVlKCRpbnRlcmZhY2UsICRw
YXJhbWV0ZXIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgICRuYW1lID0gIiAuIEdlbmVyYXRlRGVmYXVsdFZhbHVlKCRpbnRlcmZhY2Us
ICRhcmd1bWVudC0+dHlwZSwgJGFyZ3VtZW50LT5kZWZhdWx0KSAuICI7XG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGVsc2Uge1xuIik7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICRpbmRlbnQgPSAiICAgICI7CkBAIC00NDIwLDE4
ICs0NDE2LDE4IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgbXkgJG91dGVyOwogICAgICAgICAgICAgbXkgJGlubmVyOwotICAgICAg
ICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJm
YWNlLCAkcGFyYW1ldGVyKTsKKyAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZl
VHlwZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUpOwogICAgICAgICAgICAgbXkgJGlzVGVh
ck9mZiA9ICRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSkgJiYg
JGludGVyZmFjZU5hbWUgIX4gL0xpc3QkLzsKLSAgICAgICAgICAgIG15ICRzaG91bGRQYXNzQnlS
ZWZlcmVuY2UgPSAkaXNUZWFyT2ZmIHx8IFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJHBh
cmFtZXRlciwgJGludGVyZmFjZSk7CisgICAgICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJl
bmNlID0gJGlzVGVhck9mZiB8fCBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRhcmd1bWVu
dCwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAgIGRpZSAiVmFyaWFkaWMgcGFyYW1ldGVyIGlz
IGFscmVhZHkgaGFuZGxlZCBoZXJlIiBpZiAkcGFyYW1ldGVyLT5pc1ZhcmlhZGljOwotICAgICAg
ICAgICAgbXkgJGFyZ3VtZW50TG9va3VwTWV0aG9kID0gJHBhcmFtZXRlci0+aXNPcHRpb25hbCA/
ICJhcmd1bWVudCIgOiAidW5jaGVja2VkQXJndW1lbnQiOworICAgICAgICAgICAgZGllICJWYXJp
YWRpYyBhcmd1bWVudCBpcyBhbHJlYWR5IGhhbmRsZWQgaGVyZSIgaWYgJGFyZ3VtZW50LT5pc1Zh
cmlhZGljOworICAgICAgICAgICAgbXkgJGFyZ3VtZW50TG9va3VwTWV0aG9kID0gJGFyZ3VtZW50
LT5pc09wdGlvbmFsID8gImFyZ3VtZW50IiA6ICJ1bmNoZWNrZWRBcmd1bWVudCI7CiAKICAgICAg
ICAgICAgIGlmICghJHNob3VsZFBhc3NCeVJlZmVyZW5jZSAmJiAoJGNvZGVHZW5lcmF0b3ItPklz
V3JhcHBlclR5cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0
eXBlKSkpIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5o
PiJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkY2hlY2tlZEFyZ3VtZW50ID0gInN0YXRlLT4k
YXJndW1lbnRMb29rdXBNZXRob2QoJGFyZ3VtZW50SW5kZXgpIjsKICAgICAgICAgICAgICAgICBt
eSAkdW5jaGVja2VkQXJndW1lbnQgPSAic3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVu
dEluZGV4KSI7Ci0gICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVWYWx1ZSwgJG1heVRocm93RXhj
ZXB0aW9uKSA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyLCAkdW5jaGVj
a2VkQXJndW1lbnQsICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
b25kaXRpb25hbH0pOworICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRtYXlUaHJv
d0V4Y2VwdGlvbikgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAkdW5j
aGVja2VkQXJndW1lbnQsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9KTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5
cGUgJG5hbWUgPSBudWxscHRyO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGlmICghJGNoZWNrZWRBcmd1bWVudC5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7XG4i
KTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRuYW1lID0g
JG5hdGl2ZVZhbHVlO1xuIik7CkBAIC00NDQxLDEyICs0NDM3LDEyIEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9
XG4iKTsKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiV1RGTW92ZSgkbmFtZSkiOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25h
bCAmJiBkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQpICYmICFXaWxsQ29udmVydFVuZGVmaW5l
ZFRvRGVmYXVsdFBhcmFtZXRlclZhbHVlKCR0eXBlLCAkcGFyYW1ldGVyLT5kZWZhdWx0KSkgewot
ICAgICAgICAgICAgICAgICAgICBteSAkZGVmYXVsdFZhbHVlID0gJHBhcmFtZXRlci0+ZGVmYXVs
dDsKKyAgICAgICAgICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmIGRlZmluZWQo
JGFyZ3VtZW50LT5kZWZhdWx0KSAmJiAhV2lsbENvbnZlcnRVbmRlZmluZWRUb0RlZmF1bHRQYXJh
bWV0ZXJWYWx1ZSgkdHlwZSwgJGFyZ3VtZW50LT5kZWZhdWx0KSkgeworICAgICAgICAgICAgICAg
ICAgICBteSAkZGVmYXVsdFZhbHVlID0gJGFyZ3VtZW50LT5kZWZhdWx0OwogCiAgICAgICAgICAg
ICAgICAgICAgICMgU3RyaW5nLXJlbGF0ZWQgb3B0aW1pemF0aW9ucy4KICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBteSAkdXNlQXRvbWljU3RyaW5nID0gJHBhcmFtZXRlci0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXRvbWljU3RyaW5nfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG15
ICR1c2VBdG9taWNTdHJpbmcgPSAkYXJndW1lbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21p
Y1N0cmluZ307CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlZmF1bHRWYWx1ZSBlcSAi
bnVsbCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVmYXVsdFZhbHVlID0gJHVz
ZUF0b21pY1N0cmluZyA/ICJudWxsQXRvbSIgOiAiU3RyaW5nKCkiOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNpZiAoJGRlZmF1bHRWYWx1ZSBlcSAiXCJcIiIpIHsKQEAgLTQ0NTUsMTMg
KzQ0NTEsMTMgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9ICR1c2VBdG9taWNTdHJpbmcgPyAiQXRvbWljU3Ry
aW5nKCRkZWZhdWx0VmFsdWUsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIiA6
ICJBU0NJSUxpdGVyYWwoJGRlZmF1bHRWYWx1ZSkiOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
JGRlZmF1bHRWYWx1ZSA9IEdlbmVyYXRlRGVmYXVsdFZhbHVlKCRpbnRlcmZhY2UsICRwYXJhbWV0
ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgJGRlZmF1bHRWYWx1ZSA9IEdlbmVyYXRlRGVm
YXVsdFZhbHVlKCRpbnRlcmZhY2UsICRhcmd1bWVudC0+dHlwZSwgJGFyZ3VtZW50LT5kZWZhdWx0
KTsKICAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICRvdXRlciA9
ICJzdGF0ZS0+JGFyZ3VtZW50TG9va3VwTWV0aG9kKCRhcmd1bWVudEluZGV4KS5pc1VuZGVmaW5l
ZCgpID8gJGRlZmF1bHRWYWx1ZSA6ICI7CiAgICAgICAgICAgICAgICAgICAgICRpbm5lciA9ICJz
dGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpIjsKLSAgICAgICAgICAgICAg
ICB9IGVsc2lmICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXIt
PmRlZmF1bHQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICMgVXNlIFdURjo6T3B0aW9uYWw8Pigp
IGZvciBvcHRpb25hbCBwYXJhbWV0ZXJzIHRoYXQgYXJlIG1pc3Npbmcgb3IgdW5kZWZpbmVkIGFu
ZCB0aGF0IGRvIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBpbiB0aGUgSURMLgorICAgICAgICAg
ICAgICAgIH0gZWxzaWYgKCRhcmd1bWVudC0+aXNPcHRpb25hbCAmJiAhZGVmaW5lZCgkYXJndW1l
bnQtPmRlZmF1bHQpKSB7CisgICAgICAgICAgICAgICAgICAgICMgVXNlIFdURjo6T3B0aW9uYWw8
PigpIGZvciBvcHRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmUgbWlzc2luZyBvciB1bmRlZmluZWQg
YW5kIHRoYXQgZG8gbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlIGluIHRoZSBJREwuCiAgICAgICAg
ICAgICAgICAgICAgICRvdXRlciA9ICJzdGF0ZS0+JGFyZ3VtZW50TG9va3VwTWV0aG9kKCRhcmd1
bWVudEluZGV4KS5pc1VuZGVmaW5lZCgpID8gT3B0aW9uYWw8JG5hdGl2ZVR5cGU+KCkgOiAiOwog
ICAgICAgICAgICAgICAgICAgICAkaW5uZXIgPSAic3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRh
cmd1bWVudEluZGV4KSI7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ0NjksNyArNDQ2
NSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICAgICAk
aW5uZXIgPSAic3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJbmRleCkiOwog
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFsdWUsICRt
YXlUaHJvd0V4Y2VwdGlvbikgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJHBhcmFtZXRl
ciwgJGlubmVyLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
ZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dF
eGNlcHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVudCwgJGlubmVy
LCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSAke291dGVyfSR7
bmF0aXZlVmFsdWV9O1xuIik7CiAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUoJG5h
bWUpIjsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRtYXlUaHJv
d0V4Y2VwdGlvbjsKQEAgLTQ0OTMsNyArNDQ4OSw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjawogICAgIH0KIAogICAgIHB1c2goQGFyZ3VtZW50cywgIldURk1vdmUocHJvbWlzZSkiKSBp
ZiBJc1JldHVybmluZ1Byb21pc2UoJGZ1bmN0aW9uKTsKLSAgICBwdXNoKEBhcmd1bWVudHMsICJl
YyIpIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJv
d0xlZ2FjeUV4Y2VwdGlvbn07CisgICAgcHVzaChAYXJndW1lbnRzLCAiZWMiKSBpZiAkZnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93TGVnYWN5RXhjZXB0aW9ufTsKIAogICAg
IG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1
bWVudHMpIC4gIikiOwogICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24o
KnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJv
cGFnYXRlRXhjZXB0aW9uQ2FsbCgkZnVuY3Rpb24pOwpAQCAtNDU5MiwxMCArNDU4OCwxMCBAQCBz
dWIgR2VuZXJhdGVDYWxsYmFja0hlYWRlcgogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
XG4gICAgLy8gRnVuY3Rpb25zXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7
JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbXkgQGFyZ3VtZW50cyA9ICgp
OwotICAgICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW1ldGVyIChAeyRmdW5jdGlvbi0+cGFyYW1l
dGVyc30pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdldE5hdGl2ZVR5cGVG
b3JDYWxsYmFja3MoJGludGVyZmFjZSwgJHBhcmFtZXRlci0+dHlwZSkgLiAiICIgLiAkcGFyYW1l
dGVyLT5uYW1lKTsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlv
bi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2V0TmF0
aXZlVHlwZUZvckNhbGxiYWNrcygkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUpIC4gIiAiIC4g
JGFyZ3VtZW50LT5uYW1lKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgdmlydHVhbCAiIC4gR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcygkaW50
ZXJmYWNlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSkgLiAiICIgLiAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB2aXJ0dWFsICIgLiBHZXROYXRp
dmVUeXBlRm9yQ2FsbGJhY2tzKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+dHlwZSkgLiAiICIgLiAk
ZnVuY3Rpb24tPm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNDcyNCwxNCArNDcyMCwxNCBAQCBzdWIgR2VuZXJhdGVD
YWxsYmFja0ltcGxlbWVudGF0aW9uCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4vLyBGdW5jdGlvbnNcbiIpOwogICAgICAgICBmb3Jl
YWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICAg
ICBteSBAcGFyYW1zID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwotICAgICAgICAgICAgaWYg
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b219IHx8IEdl
dE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIG5lICJi
b29sIikgeworICAgICAgICAgICAgbXkgQHBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9
OworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9t
fSB8fCBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+dHlwZSkgbmUgImJvb2wi
KSB7CiAgICAgICAgICAgICAgICAgbmV4dDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlKTsK
LSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFt
ZTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iIC4gR2V0TmF0aXZlVHlwZUZv
ckNhbGxiYWNrcygkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZSkgLiAiICR7
Y2xhc3NOYW1lfTo6JHtmdW5jdGlvbk5hbWV9KCIpOworICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXNGb3JJRExUeXBlKCRmdW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gJGZ1bmN0aW9uLT5uYW1lOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiIgLiBHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tzKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+
dHlwZSkgLiAiICR7Y2xhc3NOYW1lfTo6JHtmdW5jdGlvbk5hbWV9KCIpOwogCiAgICAgICAgICAg
ICBteSBAYXJncyA9ICgpOwogICAgICAgICAgICAgbXkgQGFyZ3NDaGVjayA9ICgpOwpAQCAtNDgw
MywxMCArNDc5OSwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgp
CiB7CiAgICAgbXkgKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAkaW5kZW50LCAkc3ZnUHJv
cGVydHlUeXBlLCAkaW50ZXJmYWNlKSA9IEBfOwogCi0gICAgbXkgJG5vbmRldGVybWluaXN0aWMg
PSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9uZGV0ZXJtaW5p
c3RpY307Ci0gICAgbXkgJG1heVRocm93TGVnYWN5RXhjZXB0aW9uID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93TGVnYWN5RXhjZXB0aW9ufTsKKyAg
ICBteSAkbm9uZGV0ZXJtaW5pc3RpYyA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Tm9uZGV0ZXJtaW5pc3RpY307CisgICAgbXkgJG1heVRocm93TGVnYWN5RXhjZXB0aW9uID0gJGZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CiAK
LSAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8IElz
UmV0dXJuaW5nUHJvbWlzZSgkZnVuY3Rpb24pKSB7CisgICAgaWYgKCRmdW5jdGlvbi0+dHlwZS0+
bmFtZSBlcSAidm9pZCIgfHwgSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbikpIHsKICAgICAg
ICAgaWYgKCRub25kZXRlcm1pbmlzdGljKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiPHJlcGxheS9JbnB1dEN1cnNvci5oPiIsICJXRUJfUkVQTEFZIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUoV0VCX1JFUExBWSlcbiIpOwpAQCAtNDg0MSw5
ICs0ODM3LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxyZXBsYXkvSW5wdXRDdXJzb3IuaD4iLCAiV0VC
X1JFUExBWSIpOwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4iLCAiV0VCX1JFUExBWSIpOwogCi0gICAgICAgICAgICBteSAkbmF0aXZlVHlwZSA9
IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+c2lnbmF0
dXJlKTsKLSAgICAgICAgICAgIG15ICRtZW1vaXplZFR5cGUgPSBHZXROYXRpdmVUeXBlRm9yTWVt
b2l6YXRpb24oJGludGVyZmFjZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpOwotICAgICAg
ICAgICAgbXkgJGJpbmRpbmdOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICIuIiAuICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBH
ZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAgICBt
eSAkbWVtb2l6ZWRUeXBlID0gR2V0TmF0aXZlVHlwZUZvck1lbW9pemF0aW9uKCRpbnRlcmZhY2Us
ICRmdW5jdGlvbi0+dHlwZSk7CisgICAgICAgICAgICBteSAkYmluZGluZ05hbWUgPSAkaW50ZXJm
YWNlLT50eXBlLT5uYW1lIC4gIi4iIC4gJGZ1bmN0aW9uLT5uYW1lOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiSlNWYWx1ZSByZXN1bHQ7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShXRUJfUkVQTEFZKVxuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJJbnB1dEN1cnNvciYgY3Vyc29y
ID0gc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW5wdXRDdXJzb3IoKTtcbiIpOwpAQCAt
NDg1MiwyOCArNDg0OCwyOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2Fs
bCgpCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgJG5hdGl2
ZVR5cGUgbWVtb2l6ZWRSZXN1bHQgPSAkZnVuY3Rpb25TdHJpbmc7XG4iKTsKICAgICAgICAgICAg
IG15ICRleGNlcHRpb25Db2RlID0gJG1heVRocm93TGVnYWN5RXhjZXB0aW9uID8gImVjIiA6ICIw
IjsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBjdXJzb3Iu
YXBwZW5kSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHQ8JG1lbW9pemVkVHlwZT4+KGJpbmRpbmdOYW1l
LmdldCgpLnN0cmluZygpLCBtZW1vaXplZFJlc3VsdCwgJGV4Y2VwdGlvbkNvZGUpO1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgcmVzdWx0ID0gIiAu
IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRp
bnRlcmZhY2UsICJtZW1vaXplZFJlc3VsdCIsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKKyAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICByZXN1bHQgPSAiIC4gTmF0
aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICJtZW1v
aXplZFJlc3VsdCIsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkaW5kZW50IC4gIn0gZWxzZSBpZiAoY3Vyc29yLmlzUmVwbGF5aW5nKCkpIHtc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIE1lbW9p
emVkRE9NUmVzdWx0QmFzZSogaW5wdXQgPSBjdXJzb3IuZmV0Y2hJbnB1dDxNZW1vaXplZERPTVJl
c3VsdEJhc2U+KCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50
IC4gIiAgICAkbWVtb2l6ZWRUeXBlIG1lbW9pemVkUmVzdWx0O1xuIik7CiAgICAgICAgICAgICAj
IEZJWE1FOiB0aGUgZ2VuZXJhdGVkIGNvZGUgc2hvdWxkIHJlcG9ydCBhbiBlcnJvciBpZiBhbiBp
bnB1dCBjYW5ub3QgYmUgZmV0Y2hlZCBvciBjb252ZXJ0ZWQuCiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgJGluZGVudCAuICIgICAgaWYgKGlucHV0ICYmIGlucHV0LT5jb252ZXJ0VG88
JG1lbW9pemVkVHlwZT4obWVtb2l6ZWRSZXN1bHQpKSB7XG4iKTsKLSAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICAgICAgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbnRlcmZhY2UsICJt
ZW1vaXplZFJlc3VsdCIsICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICAgICAgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1
bHQiLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJGluZGVudCAuICIgICAgICAgIGVjID0gaW5wdXQtPmV4Y2VwdGlvbkNvZGUoKTtcbiIpIGlm
ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbjsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAkaW5kZW50IC4gIiAgICB9IGVsc2VcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRpbmRlbnQgLiAiICAgICAgICByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQ
b2ludGVycygkZnVuY3Rpb24tPnNpZ25hdHVyZSwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3Ry
aW5nLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJGluZGVudCAuICIgICAgICAgIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1Bv
aW50ZXJzKCRmdW5jdGlvbiwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhpc09i
amVjdCkgLiAiO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAu
ICJ9IGVsc2VcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
ICAgIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLCAxLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAu
ICI7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICBy
ZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRp
bnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZWxzZVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgJGluZGVudCAuICJyZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQ
b2ludGVycygkZnVuY3Rpb24tPnNpZ25hdHVyZSwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3Ry
aW5nLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJGluZGVudCAuICJyZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygk
ZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4g
IjtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
SlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rp
b24tPnNpZ25hdHVyZSwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhpc09iamVj
dCkgLiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJK
U1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlv
biwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkdGhpc09iamVjdCkgLiAiO1xuIik7
CiAgICAgICAgIH0KIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAuICRpbmRlbnQg
LiAic2V0RE9NRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCBlYyk7XG4iKSBpZiAkbWF5VGhy
b3dMZWdhY3lFeGNlcHRpb247CiAKLSAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRl
ZEF0dHJpYnV0ZUNvbnRhaW5zKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDYWxsV2l0aH0sICJTY3JpcHRTdGF0ZSIpKSB7CisgICAgICAgIGlmICgkY29kZUdlbmVy
YXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NhbGxXaXRofSwgIlNjcmlwdFN0YXRlIikpIHsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkaW5kZW50IC4gIlJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5j
b2RlZEpTVmFsdWUoKSk7XG4iKTsKICAgICAgICAgfQogCkBAIC00OTM4LDcgKzQ5MzQsNyBAQCBj
b25zdCBKU0M6OkNsYXNzSW5mbyAke2l0ZXJhdG9yUHJvdG90eXBlCiBFTkQKIAogICAgIGZvcmVh
Y2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9KSB7Ci0g
ICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAg
ICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKICAgICAgICAgbXkgJGZ1
bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVu
Y3Rpb24pOwogCiAgICAgICAgIGlmICgkcHJvcGVydHlOYW1lIGVxICJmb3JFYWNoIikgewpAQCAt
NDk5MywxMyArNDk4OSw2IEBAIHN1YiBhZGRJdGVyYWJsZVByb3BlcnRpZXMoKQogICAgIH0KIH0K
IAotc3ViIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlCi17Ci0gICAgbXkgKCRpbnRlcmZhY2Us
ICRzaWduYXR1cmUpID0gQF87Ci0KLSAgICByZXR1cm4gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNl
LCAkc2lnbmF0dXJlLT50eXBlKTsKLX0KLQogbXkgJW5hdGl2ZVR5cGUgPSAoCiAgICAgIkRPTVN0
cmluZyIgPT4gIlN0cmluZyIsCiAgICAgIlVTVlN0cmluZyIgPT4gIlN0cmluZyIsCkBAIC01MTM1
LDcgKzUxMjQsNyBAQCBzdWIgR2V0TmF0aXZlVHlwZQogewogICAgIG15ICgkaW50ZXJmYWNlLCAk
dHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
ImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklE
TFR5cGUiOwogCiAgICAgbXkgJHR5cGVOYW1lID0gJHR5cGUtPm5hbWU7CiAKQEAgLTUxNTcsNyAr
NTE0Niw3IEBAIHN1YiBTaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlCiAgICAgbXkgKCRwYXJh
bWV0ZXIsICRpbnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2
ZVR5cGUoJGludGVyZmFjZSwgJHBhcmFtZXRlci0+dHlwZSk7Ci0gICAgcmV0dXJuICRjb2RlR2Vu
ZXJhdG9yLT5TaG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIsICRpbnRlcmZh
Y2UpICYmIChzdWJzdHIoJG5hdGl2ZVR5cGUsIC0xKSBlcSAnKicgfHwgJG5hdGl2ZVR5cGUgPX4g
L15SZWZQdHIvKTsKKyAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPlNob3VsZFBhc3NXcmFwcGVy
QnlSZWZlcmVuY2UoJHBhcmFtZXRlcikgJiYgKHN1YnN0cigkbmF0aXZlVHlwZSwgLTEpIGVxICcq
JyB8fCAkbmF0aXZlVHlwZSA9fiAvXlJlZlB0ci8pOwogfQogCiBzdWIgR2V0TmF0aXZlVmVjdG9y
SW5uZXJUeXBlCkBAIC01MjM0LDI2ICs1MjIzLDI2IEBAIHN1YiBJc05hdGl2ZVR5cGUKIAogc3Vi
IEdldEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogewotICAgIG15ICRzaWduYXR1cmUg
PSBzaGlmdDsKKyAgICBteSAkY29udGV4dCA9IHNoaWZ0OwogCi0gICAgcmV0dXJuICJJbnRlZ2Vy
Q29udmVyc2lvbkNvbmZpZ3VyYXRpb246OkVuZm9yY2VSYW5nZSIgaWYgJHNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RW5mb3JjZVJhbmdlfTsKLSAgICByZXR1cm4gIkludGVnZXJDb252
ZXJzaW9uQ29uZmlndXJhdGlvbjo6Q2xhbXAiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NsYW1wfTsKKyAgICByZXR1cm4gIkludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlv
bjo6RW5mb3JjZVJhbmdlIiBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5mb3Jj
ZVJhbmdlfTsKKyAgICByZXR1cm4gIkludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlvbjo6Q2xh
bXAiIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07CiAgICAgcmV0dXJu
ICJJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCI7CiB9CiAKIHN1YiBHZXRT
dHJpbmdDb252ZXJzaW9uQ29uZmlndXJhdGlvbgogewotICAgIG15ICRzaWduYXR1cmUgPSBzaGlm
dDsKKyAgICBteSAkY29udGV4dCA9IHNoaWZ0OwogCi0gICAgcmV0dXJuICJTdHJpbmdDb252ZXJz
aW9uQ29uZmlndXJhdGlvbjo6VHJlYXROdWxsQXNFbXB0eVN0cmluZyIgaWYgJHNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxsQXN9ICYmICRzaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1RyZWF0TnVsbEFzfSBlcSAiRW1wdHlTdHJpbmciOworICAgIHJldHVybiAi
U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OlRyZWF0TnVsbEFzRW1wdHlTdHJpbmciIGlm
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gJiYgJGNvbnRleHQt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFzfSBlcSAiRW1wdHlTdHJpbmciOwogICAg
IHJldHVybiAiU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246Ok5vcm1hbCI7CiB9CiAKIHN1
YiBKU1ZhbHVlVG9OYXRpdmVJc0hhbmRsZWRCeURPTUNvbnZlcnQKIHsKLSAgICBteSAoJHR5cGUs
ICRzaWduYXR1cmUpID0gQF87CisgICAgbXkgKCR0eXBlLCAkY29udGV4dCkgPSBAXzsKIAotICAg
IHJldHVybiAwIGlmICR0eXBlLT5uYW1lIGVxICJET01TdHJpbmciICYmICgkc2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nfSB8fCAkc2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBdG9taWNTdHJpbmd9KTsKKyAgICByZXR1cm4g
MCBpZiAkdHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIiAmJiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmd9IHx8ICRjb250ZXh0LT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntBdG9taWNTdHJpbmd9KTsKIAogICAgIHJldHVybiAxIGlmICR0eXBl
LT5pc1VuaW9uOwogICAgIHJldHVybiAxIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwpAQCAtNTI2
OCwyMCArNTI1NywyOSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01Db252ZXJ0
CiAgICAgcmV0dXJuIDA7CiB9CiAKK3N1YiBJc1ZhbGlkQ29udGV4dEZvckpTVmFsdWVUb05hdGl2
ZQoreworICAgIG15ICRjb250ZXh0ID0gc2hpZnQ7CisgICAgCisgICAgcmV0dXJuIHJlZigkY29u
dGV4dCkgZXEgIklETEF0dHJpYnV0ZSIgfHwgcmVmKCRjb250ZXh0KSBlcSAiSURMT3BlcmF0aW9u
IiB8fCByZWYoJGNvbnRleHQpIGVxICJJRExBcmd1bWVudCI7Cit9CisKICMgUmV0dXJucyAoY29u
dmVydFN0cmluZywgbWF5VGhyb3dFeGNlcHRpb24pLgogCiBzdWIgSlNWYWx1ZVRvTmF0aXZlCiB7
Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRzaWduYXR1cmUsICR2YWx1ZSwgJGNvbmRpdGlvbmFsLCAk
c3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2JqZWN0UmVmZXJlbmNlKSA9IEBf
OworICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJHZhbHVlLCAkY29uZGl0aW9uYWwsICRz
dGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHRoaXNPYmplY3RSZWZlcmVuY2UpID0gQF87
CisKKyAgICBhc3NlcnQoIkludmFsaWQgY29udGV4dCB0eXBlIikgaWYgIUlzVmFsaWRDb250ZXh0
Rm9ySlNWYWx1ZVRvTmF0aXZlKCRjb250ZXh0KTsKIAotICAgIG15ICR0eXBlID0gJHNpZ25hdHVy
ZS0+dHlwZTsKKyAgICBteSAkdHlwZSA9ICRjb250ZXh0LT50eXBlOwogCiAgICAgIyBGSVhNRTog
UmVtb3ZlIHRoZXNlIDMgdmFyaWFibGVzIHdoZW4gYWxsIEpTVmFsdWVUb05hdGl2ZSB1c2UgcmVm
ZXJlbmNlcy4KICAgICAkc3RhdGVQb2ludGVyID0gInN0YXRlIiB1bmxlc3MgJHN0YXRlUG9pbnRl
cjsKICAgICAkc3RhdGVSZWZlcmVuY2UgPSAiKnN0YXRlIiB1bmxlc3MgJHN0YXRlUmVmZXJlbmNl
OwogICAgICR0aGlzT2JqZWN0UmVmZXJlbmNlID0gIipjYXN0ZWRUaGlzIiB1bmxlc3MgJHRoaXNP
YmplY3RSZWZlcmVuY2U7CiAKLSAgICBpZiAoSlNWYWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01D
b252ZXJ0KCR0eXBlLCAkc2lnbmF0dXJlKSkgeworICAgIGlmIChKU1ZhbHVlVG9OYXRpdmVJc0hh
bmRsZWRCeURPTUNvbnZlcnQoJHR5cGUsICRjb250ZXh0KSkgewogICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlNET01Db252ZXJ0LmgiKTsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJ
RExUeXBlKCR0eXBlLCAkY29uZGl0aW9uYWwpOwogCkBAIC01MjkwLDE1ICs1Mjg4LDE1IEBAIHN1
YiBKU1ZhbHVlVG9OYXRpdmUKICAgICAgICAgbXkgQGNvbnZlcnNpb25Bcmd1bWVudHMgPSAoKTsK
ICAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIiRzdGF0ZVJlZmVyZW5jZSIpOwog
ICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCAiJHZhbHVlIik7Ci0gICAgICAgIHB1
c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsIEdldEludGVnZXJDb252ZXJzaW9uQ29uZmlndXJhdGlv
bigkc2lnbmF0dXJlKSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzSW50ZWdlclR5cGUoJHR5cGUpOwot
ICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCBHZXRTdHJpbmdDb252ZXJzaW9uQ29u
ZmlndXJhdGlvbigkc2lnbmF0dXJlKSkgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgk
dHlwZSk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsIEdldEludGVnZXJDb252
ZXJzaW9uQ29uZmlndXJhdGlvbigkY29udGV4dCkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0ludGVn
ZXJUeXBlKCR0eXBlKTsKKyAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgR2V0U3Ry
aW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdlbmVyYXRvci0+
SXNTdHJpbmdUeXBlKCR0eXBlKTsKIAogICAgICAgICByZXR1cm4gKCJjb252ZXJ0PCRJRExUeXBl
PigiIC4gam9pbigiLCAiLCBAY29udmVyc2lvbkFyZ3VtZW50cykgLiAiKSIsIDEpOwogICAgIH0K
IAogICAgIGlmICgkdHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgICByZXR1cm4g
KCJBdG9taWNTdHJpbmcoJHZhbHVlLnRvU3RyaW5nKCRzdGF0ZVBvaW50ZXIpLT50b0V4aXN0aW5n
QXRvbWljU3RyaW5nKCRzdGF0ZVBvaW50ZXIpKSIsIDEpIGlmICRzaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1JlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmd9OwotICAgICAgICByZXR1
cm4gKCIkdmFsdWUudG9TdHJpbmcoJHN0YXRlUG9pbnRlciktPnRvQXRvbWljU3RyaW5nKCRzdGF0
ZVBvaW50ZXIpIiwgMSkgaWYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXRvbWlj
U3RyaW5nfTsKKyAgICAgICAgcmV0dXJuICgiQXRvbWljU3RyaW5nKCR2YWx1ZS50b1N0cmluZygk
c3RhdGVQb2ludGVyKS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZygkc3RhdGVQb2ludGVyKSkiLCAx
KSBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0b21p
Y1N0cmluZ307CisgICAgICAgIHJldHVybiAoIiR2YWx1ZS50b1N0cmluZygkc3RhdGVQb2ludGVy
KS0+dG9BdG9taWNTdHJpbmcoJHN0YXRlUG9pbnRlcikiLCAxKSBpZiAkY29udGV4dC0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXRvbWljU3RyaW5nfTsKICAgICAgICAgYXNzZXJ0KCJVbmhhbmRsZWQg
c3RyaW5nIGNvbnZlcnNpb24uIik7CiAgICAgfQogCkBAIC01MzY5LDQ0ICs1MzY3LDUzIEBAIHN1
YiBOYXRpdmVUb0pTVmFsdWVET01Db252ZXJ0TmVlZHNHbG9iYWwKIAogc3ViIE5hdGl2ZVRvSlNW
YWx1ZVVzaW5nUmVmZXJlbmNlcwogewotICAgIG15ICgkc2lnbmF0dXJlLCAkaW5GdW5jdGlvbkNh
bGwsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHRoaXNWYWx1ZSkgPSBAXzsKKyAgICBteSAoJGNvbnRl
eHQsICRpbkZ1bmN0aW9uQ2FsbCwgJGludGVyZmFjZSwgJHZhbHVlLCAkdGhpc1ZhbHVlKSA9IEBf
OwogICAgIG15ICRzdGF0ZVBvaW50ZXIgPSAiJnN0YXRlIjsKICAgICBteSAkc3RhdGVSZWZlcmVu
Y2UgPSAic3RhdGUiOwogICAgIG15ICR3cmFwcGVkID0gIiR0aGlzVmFsdWUud3JhcHBlZCgpIjsK
ICAgICBteSAkZ2xvYmFsT2JqZWN0ID0gJHRoaXNWYWx1ZSA/ICIkdGhpc1ZhbHVlLmdsb2JhbE9i
amVjdCgpIiA6ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpIjsKIAotICAgIHJldHVybiBOYXRpdmVUb0pTVmFsdWUoJHNpZ25hdHVyZSwgJGlu
RnVuY3Rpb25DYWxsLCAkaW50ZXJmYWNlLCAkdmFsdWUsICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJl
ZmVyZW5jZSwgJHdyYXBwZWQsICRnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBOYXRpdmVUb0pT
VmFsdWUoJGNvbnRleHQsICRpbkZ1bmN0aW9uQ2FsbCwgJGludGVyZmFjZSwgJHZhbHVlLCAkc3Rh
dGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR3cmFwcGVkLCAkZ2xvYmFsT2JqZWN0KTsKIH0K
IAogIyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJz
IGFuZCBjb21iaW5lIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcyBhbmQgTmF0aXZlVG9K
U1ZhbHVlCiBzdWIgTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycwogewotICAgIG15ICgkc2ln
bmF0dXJlLCAkaW5GdW5jdGlvbkNhbGwsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHRoaXNWYWx1ZSkg
PSBAXzsKKyAgICBteSAoJGNvbnRleHQsICRpbkZ1bmN0aW9uQ2FsbCwgJGludGVyZmFjZSwgJHZh
bHVlLCAkdGhpc1ZhbHVlKSA9IEBfOwogICAgIG15ICRzdGF0ZVBvaW50ZXIgPSAic3RhdGUiOwog
ICAgIG15ICRzdGF0ZVJlZmVyZW5jZSA9ICIqc3RhdGUiOwogICAgIG15ICR3cmFwcGVkID0gIiR0
aGlzVmFsdWUtPndyYXBwZWQoKSI7CiAgICAgbXkgJGdsb2JhbE9iamVjdCA9ICR0aGlzVmFsdWUg
PyAiJHRoaXNWYWx1ZS0+Z2xvYmFsT2JqZWN0KCkiIDogImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpIjsKIAotICAgIHJldHVybiBOYXRpdmVU
b0pTVmFsdWUoJHNpZ25hdHVyZSwgJGluRnVuY3Rpb25DYWxsLCAkaW50ZXJmYWNlLCAkdmFsdWUs
ICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJHdyYXBwZWQsICRnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBOYXRpdmVUb0pTVmFsdWUoJGNvbnRleHQsICRpbkZ1bmN0aW9uQ2FsbCwg
JGludGVyZmFjZSwgJHZhbHVlLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR3cmFw
cGVkLCAkZ2xvYmFsT2JqZWN0KTsKK30KKworc3ViIElzVmFsaWRDb250ZXh0Rm9yTmF0aXZlVG9K
U1ZhbHVlCit7CisgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKKyAgICAKKyAgICByZXR1cm4gcmVm
KCRjb250ZXh0KSBlcSAiSURMQXR0cmlidXRlIiB8fCByZWYoJGNvbnRleHQpIGVxICJJRExPcGVy
YXRpb24iIHx8IHJlZigkY29udGV4dCkgZXEgIklETEFyZ3VtZW50IjsKIH0KIAogc3ViIE5hdGl2
ZVRvSlNWYWx1ZQogewotICAgIG15ICgkc2lnbmF0dXJlLCAkaW5GdW5jdGlvbkNhbGwsICRpbnRl
cmZhY2UsICR2YWx1ZSwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkd3JhcHBlZCwg
JGdsb2JhbE9iamVjdCkgPSBAXzsKKyAgICBteSAoJGNvbnRleHQsICRpbkZ1bmN0aW9uQ2FsbCwg
JGludGVyZmFjZSwgJHZhbHVlLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR3cmFw
cGVkLCAkZ2xvYmFsT2JqZWN0KSA9IEBfOworCisgICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQg
dHlwZSIpIGlmICFJc1ZhbGlkQ29udGV4dEZvck5hdGl2ZVRvSlNWYWx1ZSgkY29udGV4dCk7CiAK
LSAgICBteSAkY29uZGl0aW9uYWwgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
b25kaXRpb25hbH07Ci0gICAgbXkgJHR5cGUgPSAkc2lnbmF0dXJlLT50eXBlOwotICAgIG15ICRt
YXlUaHJvd0V4Y2VwdGlvbiA9ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0dldHRl
ck1heVRocm93RXhjZXB0aW9ufSB8fCAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntN
YXlUaHJvd0V4Y2VwdGlvbn07CisgICAgbXkgJGNvbmRpdGlvbmFsID0gJGNvbnRleHQtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKKyAgICBteSAkdHlwZSA9ICRjb250ZXh0LT50
eXBlOworICAgIG15ICRtYXlUaHJvd0V4Y2VwdGlvbiA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJGNvbnRleHQtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKIAogICAgICMgV2UgY291bGQgaW5zdGVhZCBv
dmVybG9hZCBhIGZ1bmN0aW9uIHRvIHdvcmsgd2l0aCBvcHRpb25hbCBhcyB3ZWxsIGFzIG5vbi1v
cHRpb25hbCBudW1iZXJzLCBidXQgdGhpcwogICAgICMgaXMgc2xpZ2h0bHkgYmV0dGVyIGJlY2F1
c2UgaXQgZ3VhcmFudGVlcyB3ZSB3aWxsIGZhaWwgdG8gY29tcGlsZSBpZiB0aGUgSURMIGZpbGUg
ZG9lc24ndCBtYXRjaCB0aGUgQysrLgotICAgIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntSZWZsZWN0fSBhbmQgKCR0eXBlLT5uYW1lIGVxICJ1bnNpZ25lZCBsb25nIiBvciAk
dHlwZS0+bmFtZSBlcSAidW5zaWduZWQgc2hvcnQiKSkgeworICAgIGlmICgkY29udGV4dC0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57UmVmbGVjdH0gYW5kICgkdHlwZS0+bmFtZSBlcSAidW5zaWduZWQg
bG9uZyIgb3IgJHR5cGUtPm5hbWUgZXEgInVuc2lnbmVkIHNob3J0IikpIHsKICAgICAgICAgJHZh
bHVlID1+IHMvZ2V0VW5zaWduZWRJbnRlZ3JhbEF0dHJpYnV0ZS9nZXRJbnRlZ3JhbEF0dHJpYnV0
ZS9nOwogICAgICAgICAkdmFsdWUgPSAic3RkOjptYXgoMCwgJHZhbHVlKSI7CiAgICAgfQogCiAg
ICAgaWYgKCR0eXBlLT5uYW1lIGVxICJhbnkiKSB7Ci0gICAgICAgIG15ICRyZXR1cm5UeXBlID0g
JHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50YXRpb25SZXR1cm5UeXBl
fTsKKyAgICAgICAgbXkgJHJldHVyblR5cGUgPSAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57SW1wbGVtZW50YXRpb25SZXR1cm5UeXBlfTsKICAgICAgICAgaWYgKGRlZmluZWQgJHJldHVy
blR5cGUgYW5kICgkcmV0dXJuVHlwZSBlcSAiSURCS2V5UGF0aCIgb3IgJHJldHVyblR5cGUgZXEg
IklEQktleSIpKSB7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSURCQmluZGluZ1V0
aWxpdGllcy5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIHJldHVybiAidG9KUygkc3Rh
dGVSZWZlcmVuY2UsICokZ2xvYmFsT2JqZWN0LCAkdmFsdWUpIjsKQEAgLTU0NDUsNyArNTQ1Miw3
IEBAIHN1YiBOYXRpdmVUb0pTVmFsdWUKICAgICAgICAgJHZhbHVlID0gInN0YXRpY19jYXN0PCIg
LiBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKSAuICI+KCR2YWx1ZSkiOwogICAgIH0g
ZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlwZSkgYW5k
IG5vdCAkaW50ZXJmYWNlLT50eXBlLT5uYW1lID1+IC9MaXN0JC8pIHsKICAgICAgICAgbXkgJHRl
YXJPZmZUeXBlID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkdHlw
ZSk7Ci0gICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlV2l0aFdyaXRhYmxlUHJv
cGVydGllc05lZWRpbmdUZWFyT2ZmKCR0eXBlKSBhbmQgISRpbkZ1bmN0aW9uQ2FsbCBhbmQgbm90
IGRlZmluZWQgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1tdXRhYmxlfSkgewor
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlwZVdpdGhXcml0YWJsZVByb3BlcnRp
ZXNOZWVkaW5nVGVhck9mZigkdHlwZSkgYW5kICEkaW5GdW5jdGlvbkNhbGwgYW5kIG5vdCBkZWZp
bmVkICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbW11dGFibGV9KSB7CiAgICAgICAg
ICAgICBteSAkZ2V0dGVyID0gJHZhbHVlOwogICAgICAgICAgICAgJGdldHRlciA9fiBzL2ltcGxc
Li8vOwogICAgICAgICAgICAgJGdldHRlciA9fiBzL2ltcGwtPi8vOwpAQCAtNTQ3MCwxMCArNTQ3
NywxMCBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAkdmFs
dWUgPSAiQmluZGluZ1NlY3VyaXR5OjpjaGVja1NlY3VyaXR5Rm9yTm9kZSgkc3RhdGVSZWZlcmVu
Y2UsICR2YWx1ZSkiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2Vj
dXJpdHlGb3JOb2RlfTsKKyAgICAkdmFsdWUgPSAiQmluZGluZ1NlY3VyaXR5OjpjaGVja1NlY3Vy
aXR5Rm9yTm9kZSgkc3RhdGVSZWZlcmVuY2UsICR2YWx1ZSkiIGlmICRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5Rm9yTm9kZX07CiAKICAgICBteSAkZnVuY3Rpb25O
YW1lID0gInRvSlMiOwotICAgICRmdW5jdGlvbk5hbWUgPSAidG9KU05ld2x5Q3JlYXRlZCIgaWYg
JHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmV3T2JqZWN0fTsKKyAgICAkZnVuY3Rp
b25OYW1lID0gInRvSlNOZXdseUNyZWF0ZWQiIGlmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntOZXdPYmplY3R9OwogCiAgICAgbXkgJGFyZ3VtZW50cyA9ICIkc3RhdGVQb2ludGVyLCAk
Z2xvYmFsT2JqZWN0LCAkdmFsdWUiOwogICAgICRhcmd1bWVudHMgPSAiJHN0YXRlUmVmZXJlbmNl
LCAqJGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgJHZhbHVlIiBpZiAkbWF5VGhyb3dFeGNlcHRp
b247CkBAIC01ODg3LDcgKzU4OTQsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRp
b24KIAogICAgICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKCRvdXRwdXRBcnJh
eSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlKTsKIAotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn0g
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JNYXlUaHJvd0xl
Z2FjeUV4Y2VwdGlvbn0pIHsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93TGVnYWN5RXhjZXB0aW9ufSB8fCAkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3Rvck1heVRocm93TGVnYWN5RXhjZXB0aW9ufSkgewogICAg
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
XG4iKTsKICAgICAgICAgICAgIH0KQEAgLTU5MTgsMTIgKzU5MjUsMTIgQEAgc3ViIEdlbmVyYXRl
Q29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xp
c3QsICIqY2FzdGVkVGhpcy0+ZG9jdW1lbnQoKSIpIGlmICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1
Y3RvcjsKIAogICAgICAgICAgICAgbXkgJGluZGV4ID0gMDsKLSAgICAgICAgICAgIGZvcmVhY2gg
bXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7CisgICAgICAgICAgICBm
b3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKICAgICAgICAg
ICAgICAgICBsYXN0IGlmICRpbmRleCBlcSAkcGFyYW1JbmRleDsKLSAgICAgICAgICAgICAgICBp
ZiAoU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFyYW1ldGVyLCAkaW50ZXJmYWNlKSkg
ewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICIqIiAuICRw
YXJhbWV0ZXItPm5hbWUpOworICAgICAgICAgICAgICAgIGlmIChTaG91bGRQYXNzV3JhcHBlckJ5
UmVmZXJlbmNlKCRhcmd1bWVudCwgJGludGVyZmFjZSkpIHsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiKiIgLiAkYXJndW1lbnQtPm5hbWUpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9y
QXJnTGlzdCwgIldURk1vdmUoIiAuICRwYXJhbWV0ZXItPm5hbWUgLiAiKSIpOworICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICJXVEZNb3ZlKCIgLiAkYXJndW1l
bnQtPm5hbWUgLiAiKSIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAkaW5k
ZXgrKzsKICAgICAgICAgICAgIH0KQEAgLTYwODEsNyArNjA4OCw3IEBAIHN1YiBOZWVkc0NvbnN0
cnVjdG9yUHJvcGVydHkKIHN1YiBJc1JldHVybmluZ1Byb21pc2UKIHsKICAgICBteSAkZnVuY3Rp
b24gPSBzaGlmdDsKLSAgICByZXR1cm4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUgJiYgJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgIlByb21pc2UiOworICAgIHJldHVybiAk
ZnVuY3Rpb24tPnR5cGUgJiYgJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJQcm9taXNlIjsKIH0K
IAogc3ViIElzQ29uc3RydWN0YWJsZQpAQCAtNjEwMyw3ICs2MTEwLDcgQEAgc3ViIElzVW5mb3Jn
ZWFibGUKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAgICAgbXkgJHByb3BlcnR5ID0g
c2hpZnQ7Ci0gICAgcmV0dXJuICRwcm9wZXJ0eS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntVbmZvcmdlYWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5m
b3JnZWFibGV9OworICAgIHJldHVybiAkcHJvcGVydHktPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Vu
Zm9yZ2VhYmxlfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntVbmZvcmdlYWJs
ZX07CiB9CiAKIHN1YiBDb21wdXRlRnVuY3Rpb25TcGVjaWFsCkBAIC02MTEzLDcgKzYxMjAsNyBA
QCBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogCiAgICAgbXkgQHNwZWNpYWxzID0gKCk7CiAg
ICAgcHVzaChAc3BlY2lhbHMsICgiRG9udERlbGV0ZSIsICJSZWFkT25seSIpKSBpZiBJc1VuZm9y
Z2VhYmxlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7Ci0gICAgcHVzaChAc3BlY2lhbHMsICJEb250
RW51bSIpIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb3RF
bnVtZXJhYmxlfTsKKyAgICBwdXNoKEBzcGVjaWFscywgIkRvbnRFbnVtIikgaWYgJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfTsKICAgICBpZiAoSXNKU0J1aWx0
aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKSkgewogICAgICAgICBwdXNoKEBzcGVjaWFscywgIkpT
Qzo6QnVpbHRpbiIpOwogICAgIH0KQEAgLTYxMjcsMTEgKzYxMzQsMTEgQEAgc3ViIElzSlNCdWls
dGluCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRvYmplY3QpID0gQF87CiAKLSAgICByZXR1cm4g
MCBpZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbX07Ci0g
ICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
dXN0b21HZXR0ZXJ9OwotICAgIHJldHVybiAwIGlmICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tU2V0dGVyfTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b219OworICAgIHJldHVybiAwIGlmICRvYmplY3QtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldHRlcn07CisgICAgcmV0dXJuIDAgaWYgJG9iamVj
dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tU2V0dGVyfTsKIAotICAgIHJldHVybiAxIGlm
ICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNCdWlsdGlufTsKKyAg
ICByZXR1cm4gMSBpZiAkb2JqZWN0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0J1aWx0aW59Owog
ICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0pTQnVpbHRp
bn07CiAKICAgICByZXR1cm4gMDsKQEAgLTYxNTAsOSArNjE1Nyw5IEBAIHN1YiBJc0pTQnVpbHRp
bkNvbnN0cnVjdG9yCiBzdWIgR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lCiB7CiAgICAgbXkgKCRj
bGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsKLSAgICBteSAkc2NvcGVOYW1lID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgIG15
ICRzY29wZU5hbWUgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVk
Qnl9OwogICAgICRzY29wZU5hbWUgPSBzdWJzdHIgJGNsYXNzTmFtZSwgMiB1bmxlc3MgJHNjb3Bl
TmFtZTsKLSAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkc2Nv
cGVOYW1lLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgcmV0dXJuIEdldEpTQnVp
bHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcoJHNjb3BlTmFtZSwgJGZ1bmN0aW9uLT5uYW1lKTsK
IH0KIAogc3ViIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcKQEAgLTYxNjQsNyAr
NjE3MSw3IEBAIHN1YiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nCiBzdWIgR2V0
SlNCdWlsdGluU2NvcGVOYW1lCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRvYmplY3QpID0gQF87
Ci0gICAgcmV0dXJuICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1w
bGVtZW50ZWRCeX0gfHwgJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKKyAgICByZXR1cm4gJG9iamVj
dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX0gfHwgJGludGVyZmFjZS0+dHlw
ZS0+bmFtZTsKIH0KIAogc3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVzSWZOZWVkZWQoKQpAQCAtNjE3
NywxMSArNjE4NCwxMSBAQCBzdWIgQWRkSlNCdWlsdGluSW5jbHVkZXNJZk5lZWRlZCgpCiAgICAg
fQogCiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkg
ewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRKU0J1aWx0aW5TY29wZU5hbWUoJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKSAuICJCdWlsdGlucy5oIiwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFj
ZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0SlNCdWlsdGluU2Nv
cGVOYW1lKCRpbnRlcmZhY2UsICRmdW5jdGlvbikgLiAiQnVpbHRpbnMuaCIsICRmdW5jdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KSBpZiBJc0pTQnVpbHRpbigkaW50ZXJm
YWNlLCAkZnVuY3Rpb24pOwogICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHsk
aW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcyhHZXRK
U0J1aWx0aW5TY29wZU5hbWUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgLiAiQnVpbHRpbnMuaCIs
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9
KSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmlidXRlKTsKKyAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoR2V0SlNCdWlsdGluU2NvcGVOYW1lKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
IC4gIkJ1aWx0aW5zLmgiLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRp
b25hbH0pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIH0KIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0J
KHJldmlzaW9uIDIwODEyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
UGFyc2VyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3NiArMzcsODEgQEAgdXNlIGNvbnN0YW50
IE90aGVyVG9rZW4gPT4gNDsKIHVzZSBjb25zdGFudCBFbXB0eVRva2VuID0+IDU7CiAKICMgVXNl
ZCB0byByZXByZXNlbnQgYSBwYXJzZWQgSURMIGRvY3VtZW50Ci1zdHJ1Y3QoIGlkbERvY3VtZW50
ID0+IHsKLSAgICBpbnRlcmZhY2VzID0+ICdAJywgIyBMaXN0IG9mICdkb21JbnRlcmZhY2UnCi0g
ICAgZW51bWVyYXRpb25zID0+ICdAJywgIyBMaXN0IG9mICdkb21FbnVtJwotICAgIGRpY3Rpb25h
cmllcyA9PiAnQCcsICMgTGlzdCBvZiAnZG9tRGljdGlvbmFyeScKK3N0cnVjdCggSURMRG9jdW1l
bnQgPT4geworICAgIGludGVyZmFjZXMgPT4gJ0AnLCAjIExpc3Qgb2YgJ0lETEludGVyZmFjZScK
KyAgICBlbnVtZXJhdGlvbnMgPT4gJ0AnLCAjIExpc3Qgb2YgJ0lETEVudW0nCisgICAgZGljdGlv
bmFyaWVzID0+ICdAJywgIyBMaXN0IG9mICdJRExEaWN0aW9uYXJ5JwogICAgIGZpbGVOYW1lID0+
ICckJywKIH0pOwogCi1zdHJ1Y3QoIGRvbVR5cGUgPT4geworIyBodHRwczovL2hleWNhbS5naXRo
dWIuaW8vd2ViaWRsLyNpZGwtdHlwZXMKK3N0cnVjdCggSURMVHlwZSA9PiB7CiAgICAgbmFtZSA9
PiAgICAgICAgICckJywgIyBUeXBlIGlkZW50aWZpZXIKICAgICBpc051bGxhYmxlID0+ICAgJyQn
LCAjIElzIHRoZSB0eXBlIE51bGxhYmxlIChUPykKICAgICBpc1VuaW9uID0+ICAgICAgJyQnLCAj
IElzIHRoZSB0eXBlIGEgdW5pb24gKFQgb3IgVSkKICAgICBzdWJ0eXBlcyA9PiAgICAgJ0AnLCAj
IEFycmF5IG9mIHN1YnR5cGVzLCBvbmx5IHZhbGlkIGlmIGlzVW5pb24gb3Igc2VxdWVuY2UKIH0p
OwogCi0jIFVzZWQgdG8gcmVwcmVzZW50IGEgbWFwIG9mICd2YXJpYWJsZSBuYW1lJyA8LT4gJ3Zh
cmlhYmxlIHR5cGUnCi1zdHJ1Y3QoIGRvbVNpZ25hdHVyZSA9PiB7Ci0gICAgZGlyZWN0aW9uID0+
ICckJywgICAjIFZhcmlhYmxlIGRpcmVjdGlvbiAoaW4gb3Igb3V0KQotICAgIG5hbWUgPT4gJyQn
LCAgICAgICAgIyBWYXJpYWJsZSBuYW1lCi0gICAgdHlwZSA9PiAnZG9tVHlwZScsICAjIFZhcmlh
YmxlIHR5cGUKLSAgICBzcGVjaWFscyA9PiAnQCcsICAgICMgU3BlY2lhbHMKLSAgICBleHRlbmRl
ZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4dGVuZGVkIGF0dHJpYnV0ZXMKLSAgICBpc1ZhcmlhZGlj
ID0+ICckJywgICMgSXMgdmFyaWFibGUgdmFyaWFkaWMgKGxvbmcuLi4gbnVtYmVycykKLSAgICBp
c09wdGlvbmFsID0+ICckJywgICMgSXMgdmFyaWFibGUgb3B0aW9uYWwgKG9wdGlvbmFsIFQpCi0g
ICAgZGVmYXVsdCA9PiAnJCcsICAgICAjIERlZmF1bHQgdmFsdWUgZm9yIHBhcmFtZXRlcnMKLX0p
OwotCiAjIFVzZWQgdG8gcmVwcmVzZW50ICdpbnRlcmZhY2UnIGJsb2Nrcwotc3RydWN0KCBkb21J
bnRlcmZhY2UgPT4gewotICAgIHR5cGUgPT4gJ2RvbVR5cGUnLCAjIENsYXNzIHR5cGUKLSAgICBw
YXJlbnRUeXBlID0+ICdkb21UeXBlJywgIyBQYXJlbnQgY2xhc3MgdHlwZQotICAgIGNvbnN0YW50
cyA9PiAnQCcsICAgICMgTGlzdCBvZiAnZG9tQ29uc3RhbnQnCi0gICAgZnVuY3Rpb25zID0+ICdA
JywgICAgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKLSAgICBhbm9ueW1vdXNGdW5jdGlvbnMgPT4g
J0AnLCAjIExpc3Qgb2YgJ2RvbUZ1bmN0aW9uJwotICAgIGF0dHJpYnV0ZXMgPT4gJ0AnLCAgICAj
IExpc3Qgb2YgJ2RvbUF0dHJpYnV0ZScgICAgCi0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICck
JywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCi0gICAgY29uc3RydWN0b3JzID0+ICdAJywgIyBDb25z
dHJ1Y3RvcnMsIGxpc3Qgb2YgJ2RvbUZ1bmN0aW9uJwotICAgIGN1c3RvbUNvbnN0cnVjdG9ycyA9
PiAnQCcsICMgQ3VzdG9tIGNvbnN0cnVjdG9ycywgbGlzdCBvZiAnZG9tRnVuY3Rpb24nCitzdHJ1
Y3QoIElETEludGVyZmFjZSA9PiB7CisgICAgdHlwZSA9PiAnSURMVHlwZScsCisgICAgcGFyZW50
VHlwZSA9PiAnSURMVHlwZScsCisgICAgY29uc3RhbnRzID0+ICdAJywgICAgIyBMaXN0IG9mICdJ
RExDb25zdGFudCcKKyAgICBmdW5jdGlvbnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ0lETE9wZXJh
dGlvbicKKyAgICBhbm9ueW1vdXNGdW5jdGlvbnMgPT4gJ0AnLCAjIExpc3Qgb2YgJ0lETE9wZXJh
dGlvbicKKyAgICBhdHRyaWJ1dGVzID0+ICdAJywgICAgIyBMaXN0IG9mICdJRExBdHRyaWJ1dGUn
ICAgIAorICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29uc3RydWN0b3JzLCBsaXN0IG9mICdJ
RExPcGVyYXRpb24nCisgICAgY3VzdG9tQ29uc3RydWN0b3JzID0+ICdAJywgIyBDdXN0b20gY29u
c3RydWN0b3JzLCBsaXN0IG9mICdJRExPcGVyYXRpb24nCiAgICAgaXNFeGNlcHRpb24gPT4gJyQn
LCAjIFVzZWQgZm9yIGV4Y2VwdGlvbiBpbnRlcmZhY2VzCiAgICAgaXNDYWxsYmFjayA9PiAnJCcs
ICMgVXNlZCBmb3IgY2FsbGJhY2sgaW50ZXJmYWNlcwogICAgIGlzUGFydGlhbCA9PiAnJCcsICMg
VXNlZCBmb3IgcGFydGlhbCBpbnRlcmZhY2VzCiAgICAgaXRlcmFibGUgPT4gJyQnLCAjIFVzZWQg
Zm9yIGl0ZXJhYmxlIGludGVyZmFjZXMKICAgICBzZXJpYWxpemFibGUgPT4gJyQnLCAjIFVzZWQg
Zm9yIHNlcmlhbGl6YWJsZSBpbnRlcmZhY2VzCisgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICck
JywKIH0pOwogCi0jIFVzZWQgdG8gcmVwcmVzZW50IGRvbUludGVyZmFjZSBjb250ZW50cyAobmFt
ZSBvZiBtZXRob2QsIHNpZ25hdHVyZSkKLXN0cnVjdCggZG9tRnVuY3Rpb24gPT4geworIyBVc2Vk
IHRvIHJlcHJlc2VudCBhbiBhcmd1bWVudCB0byBhIElETE9wZXJhdGlvbi4KK3N0cnVjdCggSURM
QXJndW1lbnQgPT4geworICAgIG5hbWUgPT4gJyQnLAorICAgIHR5cGUgPT4gJ0lETFR5cGUnLAor
ICAgIGlzVmFyaWFkaWMgPT4gJyQnLAorICAgIGlzT3B0aW9uYWwgPT4gJyQnLAorICAgIGRlZmF1
bHQgPT4gJyQnLAorICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsCit9KTsKKworIyBodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtb3BlcmF0aW9ucworc3RydWN0KCBJRExP
cGVyYXRpb24gPT4geworICAgIG5hbWUgPT4gJyQnLAorICAgIHR5cGUgPT4gJ0lETFR5cGUnLCAj
IFJldHVybiB0eXBlCisgICAgYXJndW1lbnRzID0+ICdAJywgIyBMaXN0IG9mICdJRExBcmd1bWVu
dCcKICAgICBpc1N0YXRpYyA9PiAnJCcsCi0gICAgc2lnbmF0dXJlID0+ICdkb21TaWduYXR1cmUn
LCAjIFJldHVybiB0eXBlL09iamVjdCBuYW1lL2V4dGVuZGVkIGF0dHJpYnV0ZXMKLSAgICBwYXJh
bWV0ZXJzID0+ICdAJywgIyBMaXN0IG9mICdkb21TaWduYXR1cmUnCisgICAgc3BlY2lhbHMgPT4g
J0AnLAorICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsCiB9KTsKIAotIyBVc2VkIHRvIHJl
cHJlc2VudCBkb21JbnRlcmZhY2UgY29udGVudHMgKG5hbWUgb2YgYXR0cmlidXRlLCBzaWduYXR1
cmUpCi1zdHJ1Y3QoIGRvbUF0dHJpYnV0ZSA9PiB7CisKKyMgaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jaWRsLWF0dHJpYnV0ZXMKK3N0cnVjdCggSURMQXR0cmlidXRlID0+IHsKKyAg
ICBuYW1lID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywKICAgICBpc1N0YXRpYyA9PiAn
JCcsCiAgICAgaXNTdHJpbmdpZmllciA9PiAnJCcsCiAgICAgaXNSZWFkT25seSA9PiAnJCcsCi0g
ICAgc2lnbmF0dXJlID0+ICdkb21TaWduYXR1cmUnLCAjIEF0dHJpYnV0ZSBzaWduYXR1cmUKKyAg
ICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAogfSk7CiAKLSMgVXNlZCB0byByZXByZXNlbnQg
SXRlcmFibGUgaW50ZXJmYWNlcwotc3RydWN0KCBkb21JdGVyYWJsZSA9PiB7Ci0gICAgaXNLZXlW
YWx1ZSA9PiAnJCcsIyBJcyBtYXAgaXRlcmFibGUgb3Igc2V0IGl0ZXJhYmxlCi0gICAga2V5VHlw
ZSA9PiAnZG9tVHlwZScsICMgS2V5IHR5cGUgZm9yIG1hcCBpdGVyYWJsZXMKLSAgICB2YWx1ZVR5
cGUgPT4gJ2RvbVR5cGUnLCAjIFZhbHVlIHR5cGUgZm9yIG1hcCBvciBzZXQgaXRlcmFibGVzCisj
IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1pdGVyYWJsZQorc3RydWN0KCBJ
RExJdGVyYWJsZSA9PiB7CisgICAgaXNLZXlWYWx1ZSA9PiAnJCcsCisgICAga2V5VHlwZSA9PiAn
SURMVHlwZScsCisgICAgdmFsdWVUeXBlID0+ICdJRExUeXBlJywKICAgICBmdW5jdGlvbnMgPT4g
J0AnLCAjIEl0ZXJhYmxlIGZ1bmN0aW9ucyAoZW50cmllcywga2V5cywgdmFsdWVzLCBbU3ltYm9s
Lkl0ZXJhdG9yXSwgZm9yRWFjaCkKLSAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAjIEV4
dGVuZGVkIGF0dHJpYnV0ZXMKKyAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAogfSk7CiAK
LSMgVXNlZCB0byByZXByZXNlbnQgc2VyaWFsaXphYmxlIGludGVyZmFjZQotc3RydWN0KCBkb21T
ZXJpYWxpemFibGUgPT4geworIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwt
c2VyaWFsaXplcnMKK3N0cnVjdCggSURMU2VyaWFsaXphYmxlID0+IHsKICAgICBhdHRyaWJ1dGVz
ID0+ICdAJywgIyBMaXN0IG9mIGF0dHJpYnV0ZXMgdG8gc2VyaWFsaXplCiAgICAgaGFzQXR0cmli
dXRlID0+ICckJywgIyBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfQogICAgIGhhc0luaGVyaXQg
PT4gJyQnLCAjIHNlcmlhbGl6ZXIgPSB7IGluaGVyaXQgfQpAQCAtMTE0LDM5ICsxMTksNTAgQEAg
c3RydWN0KCBkb21TZXJpYWxpemFibGUgPT4gewogICAgIGZ1bmN0aW9ucyA9PiAnQCcsICMgdG9K
U09OIGZ1bmN0aW9uCiB9KTsKIAotIyBVc2VkIHRvIHJlcHJlc2VudCBzdHJpbmcgY29uc3RhbnRz
Ci1zdHJ1Y3QoIGRvbUNvbnN0YW50ID0+IHsKLSAgICBuYW1lID0+ICckJywgIyBET00gQ29uc3Rh
bnQgaWRlbnRpZmllcgotICAgIHR5cGUgPT4gJ2RvbVR5cGUnLCAjIFR5cGUgbmFtZSBvZiBkYXRh
Ci0gICAgdmFsdWUgPT4gJyQnLCAjIENvbnN0YW50IHZhbHVlCi0gICAgZXh0ZW5kZWRBdHRyaWJ1
dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCisjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1
Yi5pby93ZWJpZGwvI2lkbC1jb25zdGFudHMKK3N0cnVjdCggSURMQ29uc3RhbnQgPT4geworICAg
IG5hbWUgPT4gJyQnLAorICAgIHR5cGUgPT4gJ0lETFR5cGUnLAorICAgIHZhbHVlID0+ICckJywK
KyAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAorfSk7CisKKyMgaHR0cHM6Ly9oZXljYW0u
Z2l0aHViLmlvL3dlYmlkbC8jaWRsLWVudW1zCitzdHJ1Y3QoIElETEVudW0gPT4geworICAgIG5h
bWUgPT4gJyQnLAorICAgIHR5cGUgPT4gJ0lETFR5cGUnLAorICAgIHZhbHVlcyA9PiAnQCcsCisg
ICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywKIH0pOwogCi0jIFVzZWQgdG8gcmVwcmVzZW50
ICdlbnVtJyBkZWZpbml0aW9ucwotc3RydWN0KCBkb21FbnVtID0+IHsKLSAgICBuYW1lID0+ICck
JywgIyBFbnVtZXJhdGlvbiBpZGVudGlmaWVyCi0gICAgdHlwZSA9PiAnZG9tVHlwZScsICMgRW51
bWVyYXRpb24gdHlwZQotICAgIHZhbHVlcyA9PiAnQCcsICMgRW51bWVyYXRpb24gdmFsdWVzIChs
aXN0IG9mIHVuaXF1ZSBzdHJpbmdzKQorCitzdHJ1Y3QoIElETERpY3Rpb25hcnlNZW1iZXIgPT4g
eworICAgIG5hbWUgPT4gJyQnLAorICAgIHR5cGUgPT4gJ0lETFR5cGUnLAorICAgIGlzUmVxdWly
ZWQgPT4gJyQnLAorICAgIGRlZmF1bHQgPT4gJyQnLAogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9
PiAnJCcsCiB9KTsKIAotc3RydWN0KCBkb21EaWN0aW9uYXJ5ID0+IHsKLSAgICB0eXBlID0+ICdk
b21UeXBlJywgIyBEaWN0aW9uYXJ5IHR5cGUKLSAgICBwYXJlbnRUeXBlID0+ICdkb21UeXBlJywg
ICMgUGFyZW50IHR5cGUgaWRlbnRpZmllcgotICAgIG1lbWJlcnMgPT4gJ0AnLCAjIExpc3Qgb2Yg
J2RvbVNpZ25hdHVyZScKKworIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwt
ZGljdGlvbmFyaWVzCitzdHJ1Y3QoIElETERpY3Rpb25hcnkgPT4geworICAgIHR5cGUgPT4gJ0lE
TFR5cGUnLAorICAgIHBhcmVudFR5cGUgPT4gJ0lETFR5cGUnLAorICAgIG1lbWJlcnMgPT4gJ0An
LCAjIExpc3Qgb2YgJ0lETERpY3Rpb25hcnlNZW1iZXInCiAgICAgZXh0ZW5kZWRBdHRyaWJ1dGVz
ID0+ICckJywKIH0pOwogCisjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1l
bnVtcworc3RydWN0KCBJRExUeXBlZGVmID0+IHsKKyAgICB0eXBlID0+ICdJRExUeXBlJywKK30p
OworCiBzdHJ1Y3QoIFRva2VuID0+IHsKICAgICB0eXBlID0+ICckJywgIyB0eXBlIG9mIHRva2Vu
CiAgICAgdmFsdWUgPT4gJyQnICMgdmFsdWUgb2YgdG9rZW4KIH0pOwogCi1zdHJ1Y3QoIFR5cGVk
ZWYgPT4gewotICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmli
dXRlcwotICAgIHR5cGUgPT4gJ2RvbVR5cGUnLCAjIFR5cGUgb2YgZGF0YQotfSk7Ci0KICMgTWFw
cyAndHlwZWRlZiBuYW1lJyAtPiBUeXBlZGVmCiBteSAldHlwZWRlZnMgPSAoKTsKIApAQCAtMjUx
LDE0ICsyNjcsMTQgQEAgc3ViIFBhcnNlCiAgICAgfTsKICAgICBhc3NlcnQgJEAgLiAiIGluICRm
aWxlTmFtZSIgaWYgJEA7CiAKLSAgICBteSAkZG9jdW1lbnQgPSBpZGxEb2N1bWVudC0+bmV3KCk7
CisgICAgbXkgJGRvY3VtZW50ID0gSURMRG9jdW1lbnQtPm5ldygpOwogICAgICRkb2N1bWVudC0+
ZmlsZU5hbWUoJGZpbGVOYW1lKTsKICAgICBmb3JlYWNoIG15ICRkZWZpbml0aW9uIChAZGVmaW5p
dGlvbnMpIHsKLSAgICAgICAgaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgImRvbUludGVyZmFjZSIp
IHsKKyAgICAgICAgaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgIklETEludGVyZmFjZSIpIHsKICAg
ICAgICAgICAgIHB1c2goQHskZG9jdW1lbnQtPmludGVyZmFjZXN9LCAkZGVmaW5pdGlvbik7Ci0g
ICAgICAgIH0gZWxzaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgImRvbUVudW0iKSB7CisgICAgICAg
IH0gZWxzaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgIklETEVudW0iKSB7CiAgICAgICAgICAgICBw
dXNoKEB7JGRvY3VtZW50LT5lbnVtZXJhdGlvbnN9LCAkZGVmaW5pdGlvbik7Ci0gICAgICAgIH0g
ZWxzaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgImRvbURpY3Rpb25hcnkiKSB7CisgICAgICAgIH0g
ZWxzaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgIklETERpY3Rpb25hcnkiKSB7CiAgICAgICAgICAg
ICBwdXNoKEB7JGRvY3VtZW50LT5kaWN0aW9uYXJpZXN9LCAkZGVmaW5pdGlvbik7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBkaWUgIlVucmVjb2duaXplZCBJREwgZGVmaW5pdGlvbiBr
aW5kOiBcIiIgLiByZWYoJGRlZmluaXRpb24pIC4gIlwiIjsKQEAgLTM2Miw3ICszNzgsNyBAQCBz
dWIgbWFrZVNpbXBsZVR5cGUKIHsKICAgICBteSAkdHlwZU5hbWUgPSBzaGlmdDsKIAotICAgIG15
ICR0eXBlID0gZG9tVHlwZS0+bmV3KCk7CisgICAgbXkgJHR5cGUgPSBJRExUeXBlLT5uZXcoKTsK
ICAgICAkdHlwZS0+bmFtZSgkdHlwZU5hbWUpOwogICAgIAogICAgIHJldHVybiAkdHlwZTsKQEAg
LTM3Myw3ICszODksNyBAQCBzdWIgY2xvbmVUeXBlCiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAg
ICBteSAkdHlwZSA9IHNoaWZ0OwogCi0gICAgbXkgJGNsb25lZFR5cGUgPSBkb21UeXBlLT5uZXco
KTsKKyAgICBteSAkY2xvbmVkVHlwZSA9IElETFR5cGUtPm5ldygpOwogICAgICRjbG9uZWRUeXBl
LT5uYW1lKCR0eXBlLT5uYW1lKTsKICAgICAkY2xvbmVkVHlwZS0+aXNOdWxsYWJsZSgkdHlwZS0+
aXNOdWxsYWJsZSk7CiAgICAgJGNsb25lZFR5cGUtPmlzVW5pb24oJHR5cGUtPmlzVW5pb24pOwpA
QCAtNDQxLDg0ICs0NTcsNjEgQEAgc3ViIGFwcGx5VHlwZWRlZnMKICAgICBpZiAoISV0eXBlZGVm
cykgewogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIAorICAgICMgRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBhcHBseWluZyB0eXBlZGVmcyB0byBJRExJdGVyYWJsZS4KICAgICBmb3JlYWNoIG15
ICRkZWZpbml0aW9uIChAJGRlZmluaXRpb25zKSB7Ci0gICAgICAgIGlmIChyZWYoJGRlZmluaXRp
b24pIGVxICJkb21JbnRlcmZhY2UiKSB7CisgICAgICAgIGlmIChyZWYoJGRlZmluaXRpb24pIGVx
ICJJRExJbnRlcmZhY2UiKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHsk
ZGVmaW5pdGlvbi0+Y29uc3RhbnRzfSkgewotICAgICAgICAgICAgICAgIGlmIChleGlzdHMgJHR5
cGVkZWZzeyRjb25zdGFudC0+dHlwZS0+bmFtZX0pIHsKLSAgICAgICAgICAgICAgICAgICAgbXkg
JHR5cGVkZWYgPSAkdHlwZWRlZnN7JGNvbnN0YW50LT50eXBlLT5uYW1lfTsKLSAgICAgICAgICAg
ICAgICAgICAgJHNlbGYtPmFzc2VydE5vRXh0ZW5kZWRBdHRyaWJ1dGVzSW5UeXBlZGVmKCRjb25z
dGFudC0+dHlwZS0+bmFtZSwgX19MSU5FX18pOwotCi0gICAgICAgICAgICAgICAgICAgIG15ICRj
bG9uZWRUeXBlID0gJHNlbGYtPmNsb25lVHlwZSgkdHlwZWRlZi0+dHlwZSk7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgICMgUmV0YWluIG51bGxhYmlsaXR5IGZyb20gdGhl
IG9yaWdpbmFsIHR5cGUuCi0gICAgICAgICAgICAgICAgICAgICRjbG9uZWRUeXBlLT5pc051bGxh
YmxlKCRjb25zdGFudC0+dHlwZS0+aXNOdWxsYWJsZSk7Ci0KLSAgICAgICAgICAgICAgICAgICAg
JGNvbnN0YW50LT50eXBlKCRjbG9uZWRUeXBlKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgJGNvbnN0YW50LT50eXBlKCRzZWxmLT50eXBlQnlBcHBseWluZ1R5cGVkZWZzKCRj
b25zdGFudC0+dHlwZSkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRkZWZpbml0aW9uLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgICAg
ICRzZWxmLT5hcHBseVR5cGVkZWZzRm9yU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7
CisgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+dHlwZSgkc2VsZi0+dHlwZUJ5QXBwbHlpbmdU
eXBlZGVmcygkYXR0cmlidXRlLT50eXBlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQHskZGVmaW5pdGlvbi0+ZnVuY3Rpb25zfSwgQHskZGVmaW5p
dGlvbi0+YW5vbnltb3VzRnVuY3Rpb25zfSwgQHskZGVmaW5pdGlvbi0+Y29uc3RydWN0b3JzfSwg
QHskZGVmaW5pdGlvbi0+Y3VzdG9tQ29uc3RydWN0b3JzfSkgewotICAgICAgICAgICAgICAgICRz
ZWxmLT5hcHBseVR5cGVkZWZzRm9yU2lnbmF0dXJlKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKLSAg
ICAgICAgICAgICAgICBmb3JlYWNoIG15ICRzaWduYXR1cmUgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkgewotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+YXBwbHlUeXBlZGVmc0ZvclNpZ25h
dHVyZSgkc2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT50eXBlKSB7
CisgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbi0+dHlwZSgkc2VsZi0+dHlwZUJ5QXBwbHlp
bmdUeXBlZGVmcygkZnVuY3Rpb24tPnR5cGUpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30p
IHsKKyAgICAgICAgICAgICAgICAgICAgJGFyZ3VtZW50LT50eXBlKCRzZWxmLT50eXBlQnlBcHBs
eWluZ1R5cGVkZWZzKCRhcmd1bWVudC0+dHlwZSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNpZiAocmVmKCRkZWZpbml0aW9uKSBlcSAiZG9tRGljdGlv
bmFyeSIpIHsKKyAgICAgICAgfSBlbHNpZiAocmVmKCRkZWZpbml0aW9uKSBlcSAiSURMRGljdGlv
bmFyeSIpIHsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJG1lbWJlciAoQHskZGVmaW5pdGlvbi0+
bWVtYmVyc30pIHsKLSAgICAgICAgICAgICAgICAkc2VsZi0+YXBwbHlUeXBlZGVmc0ZvclNpZ25h
dHVyZSgkbWVtYmVyKTsKKyAgICAgICAgICAgICAgICAkbWVtYmVyLT50eXBlKCRzZWxmLT50eXBl
QnlBcHBseWluZ1R5cGVkZWZzKCRtZW1iZXItPnR5cGUpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIH0KIAotc3ViIGFwcGx5VHlwZWRlZnNGb3JTaWduYXR1cmUKK3N1YiB0eXBl
QnlBcHBseWluZ1R5cGVkZWZzCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAgICBteSAkc2ln
bmF0dXJlID0gc2hpZnQ7Ci0KLSAgICBpZiAoIWRlZmluZWQgKCRzaWduYXR1cmUtPnR5cGUpKSB7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIG15
ICR0eXBlTmFtZSA9ICRzaWduYXR1cmUtPnR5cGUtPm5hbWU7CisgICAgYXNzZXJ0KCJNaXNzaW5n
IHR5cGUiKSBpZiAhJHR5cGU7CiAKLSAgICAjIEhhbmRsZSB1bmlvbiB0eXBlcywgc2VxdWVuY2Vz
IGFuZCBldGMuCi0gICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVjdXJzaXZlLgotICAgIG15
ICRudW1iZXJPZlN1YnR5cGVzID0gc2NhbGFyIEB7JHNpZ25hdHVyZS0+dHlwZS0+c3VidHlwZXN9
OworICAgIG15ICRudW1iZXJPZlN1YnR5cGVzID0gc2NhbGFyIEB7JHR5cGUtPnN1YnR5cGVzfTsK
ICAgICBpZiAoJG51bWJlck9mU3VidHlwZXMpIHsKICAgICAgICAgZm9yIG15ICRpICgwLi4kbnVt
YmVyT2ZTdWJ0eXBlcyAtIDEpIHsKLSAgICAgICAgICAgIG15ICRzdWJ0eXBlID0gQHskc2lnbmF0
dXJlLT50eXBlLT5zdWJ0eXBlc31bJGldOwotICAgICAgICAgICAgbXkgJHN1YnR5cGVOYW1lID0g
JHN1YnR5cGUtPm5hbWU7Ci0KLSAgICAgICAgICAgIGlmIChleGlzdHMgJHR5cGVkZWZzeyRzdWJ0
eXBlTmFtZX0pIHsKLSAgICAgICAgICAgICAgICBteSAkdHlwZWRlZiA9ICR0eXBlZGVmc3skc3Vi
dHlwZU5hbWV9OwotCi0gICAgICAgICAgICAgICAgbXkgJGNsb25lZFR5cGUgPSAkc2VsZi0+Y2xv
bmVUeXBlKCR0eXBlZGVmLT50eXBlKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICAjIFJldGFpbiBudWxsYWJpbGl0eSBmcm9tIHRoZSBvcmlnaW5hbCB0eXBlLgotICAgICAgICAg
ICAgICAgICRjbG9uZWRUeXBlLT5pc051bGxhYmxlKCRzdWJ0eXBlLT5pc051bGxhYmxlKTsKLSAg
ICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBAeyRzaWduYXR1cmUtPnR5cGUtPnN1YnR5
cGVzfVskaV0gPSAkY2xvbmVkVHlwZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG15ICRz
dWJ0eXBlID0gQHskdHlwZS0+c3VidHlwZXN9WyRpXTsKKyAgICAgICAgICAgIG15ICRyZXBsYWNl
bWVudFN1YnR5cGUgPSAkc2VsZi0+dHlwZUJ5QXBwbHlpbmdUeXBlZGVmcygkc3VidHlwZSk7Cisg
ICAgICAgICAgICBAeyR0eXBlLT5zdWJ0eXBlc31bJGldID0gJHJlcGxhY2VtZW50U3VidHlwZQog
ICAgICAgICB9Ci0gICAgCi0gICAgICAgIHJldHVybjsKKworICAgICAgICByZXR1cm4gJHR5cGU7
CiAgICAgfQogCi0gICAgaWYgKGV4aXN0cyAkdHlwZWRlZnN7JHR5cGVOYW1lfSkgewotICAgICAg
ICBteSAkdHlwZWRlZiA9ICR0eXBlZGVmc3skdHlwZU5hbWV9OworICAgIGlmIChleGlzdHMgJHR5
cGVkZWZzeyR0eXBlLT5uYW1lfSkgeworICAgICAgICBteSAkdHlwZWRlZiA9ICR0eXBlZGVmc3sk
dHlwZS0+bmFtZX07CiAKICAgICAgICAgbXkgJGNsb25lZFR5cGUgPSAkc2VsZi0+Y2xvbmVUeXBl
KCR0eXBlZGVmLT50eXBlKTsKLSAgICAgICAgCi0gICAgICAgICMgUmV0YWluIG51bGxhYmlsaXR5
IGZyb20gdGhlIG9yaWdpbmFsIHR5cGUuCi0gICAgICAgICRjbG9uZWRUeXBlLT5pc051bGxhYmxl
KCRzaWduYXR1cmUtPnR5cGUtPmlzTnVsbGFibGUpOworICAgICAgICAkY2xvbmVkVHlwZS0+aXNO
dWxsYWJsZSgkY2xvbmVkVHlwZS0+aXNOdWxsYWJsZSB8fCAkdHlwZS0+aXNOdWxsYWJsZSk7CiAK
LSAgICAgICAgJHNpZ25hdHVyZS0+dHlwZSgkY2xvbmVkVHlwZSk7Ci0KLSAgICAgICAgY29weUV4
dGVuZGVkQXR0cmlidXRlcygkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMsICR0eXBlZGVm
LT5leHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICByZXR1cm4gJGNsb25lZFR5cGU7CiAgICAg
fQorICAgIAorICAgIHJldHVybiAkdHlwZTsKIH0KIAogc3ViIHBhcnNlRGVmaW5pdGlvbgpAQCAt
NTkxLDcgKzU4NCw3IEBAIHN1YiBwYXJzZUludGVyZmFjZQogCiAgICAgbXkgJG5leHQgPSAkc2Vs
Zi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJpbnRlcmZhY2UiKSB7
Ci0gICAgICAgIG15ICRpbnRlcmZhY2UgPSBkb21JbnRlcmZhY2UtPm5ldygpOworICAgICAgICBt
eSAkaW50ZXJmYWNlID0gSURMSW50ZXJmYWNlLT5uZXcoKTsKICAgICAgICAgJHNlbGYtPmFzc2Vy
dFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJpbnRlcmZhY2UiLCBfX0xJTkVfXyk7CiAg
ICAgICAgIG15ICRpbnRlcmZhY2VOYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkaW50ZXJmYWNlTmFtZVRva2VuLCBJZGVudGlmaWVy
VG9rZW4pOwpAQCAtNzA4LDcgKzcwMSw3IEBAIHN1YiBwYXJzZURpY3Rpb25hcnkKIAogICAgIG15
ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAi
ZGljdGlvbmFyeSIpIHsKLSAgICAgICAgbXkgJGRpY3Rpb25hcnkgPSBkb21EaWN0aW9uYXJ5LT5u
ZXcoKTsKKyAgICAgICAgbXkgJGRpY3Rpb25hcnkgPSBJRExEaWN0aW9uYXJ5LT5uZXcoKTsKICAg
ICAgICAgJGRpY3Rpb25hcnktPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCks
ICJkaWN0aW9uYXJ5IiwgX19MSU5FX18pOwogCkBAIC03NTksMTIgKzc1MiwxMiBAQCBzdWIgcGFy
c2VEaWN0aW9uYXJ5TWVtYmVyCiAKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsK
ICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVl
KCkgPX4gLyRuZXh0RXhjZXB0aW9uRmllbGRfMS8pIHsKLSAgICAgICAgbXkgJG1lbWJlciA9IGRv
bVNpZ25hdHVyZS0+bmV3KCk7Ci0gICAgICAgIGlmICgkbmV4dC0+dmFsdWUgbmUgInJlcXVpcmVk
IikgewotICAgICAgICAgICAgJG1lbWJlci0+aXNPcHRpb25hbCgxKTsKLSAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgbXkgJG1lbWJlciA9IElETERpY3Rpb25hcnlNZW1iZXItPm5ldygpOworICAg
ICAgICBpZiAoJG5leHQtPnZhbHVlIGVxICJyZXF1aXJlZCIpIHsKICAgICAgICAgICAgICRzZWxm
LT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAicmVxdWlyZWQiLCBfX0xJTkVf
Xyk7Ci0gICAgICAgICAgICAkbWVtYmVyLT5pc09wdGlvbmFsKDApOworICAgICAgICAgICAgJG1l
bWJlci0+aXNSZXF1aXJlZCgxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICRtZW1i
ZXItPmlzUmVxdWlyZWQoMCk7CiAgICAgICAgIH0KICAgICAgICAgJG1lbWJlci0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogCkBAIC04MzMsNyArODI2LDcgQEAg
c3ViIHBhcnNlRXhjZXB0aW9uCiAKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsK
ICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgImV4Y2VwdGlvbiIpIHsKLSAgICAgICAgbXkgJGlu
dGVyZmFjZSA9IGRvbUludGVyZmFjZS0+bmV3KCk7CisgICAgICAgIG15ICRpbnRlcmZhY2UgPSBJ
RExJbnRlcmZhY2UtPm5ldygpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2Vs
Zi0+Z2V0VG9rZW4oKSwgImV4Y2VwdGlvbiIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJGV4Y2Vw
dGlvbk5hbWVUb2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5UeXBlKCRleGNlcHRpb25OYW1lVG9rZW4sIElkZW50aWZpZXJUb2tlbik7CkBAIC04OTks
NyArODkyLDcgQEAgc3ViIHBhcnNlRW51bQogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRv
a2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJlbnVtIikgewotICAgICAgICBteSAk
ZW51bSA9IGRvbUVudW0tPm5ldygpOworICAgICAgICBteSAkZW51bSA9IElETEVudW0tPm5ldygp
OwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgImVu
dW0iLCBfX0xJTkVfXyk7CiAgICAgICAgIG15ICRlbnVtTmFtZVRva2VuID0gJHNlbGYtPmdldFRv
a2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJGVudW1OYW1lVG9rZW4sIElk
ZW50aWZpZXJUb2tlbik7CkBAIC05NzgsOCArOTcxLDcgQEAgc3ViIHBhcnNlVHlwZWRlZgogICAg
IG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBl
cSAidHlwZWRlZiIpIHsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdl
dFRva2VuKCksICJ0eXBlZGVmIiwgX19MSU5FX18pOwotICAgICAgICBteSAkdHlwZWRlZiA9IFR5
cGVkZWYtPm5ldygpOwotICAgICAgICAkdHlwZWRlZi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRzZWxm
LT5wYXJzZUV4dGVuZGVkQXR0cmlidXRlTGlzdEFsbG93RW1wdHkoKSk7CisgICAgICAgIG15ICR0
eXBlZGVmID0gSURMVHlwZWRlZi0+bmV3KCk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+
cGFyc2VUeXBlKCk7CiAgICAgICAgICR0eXBlZGVmLT50eXBlKCR0eXBlKTsKQEAgLTEwMTgsNyAr
MTAxMCw3IEBAIHN1YiBwYXJzZUNvbnN0CiAKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9r
ZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEgImNvbnN0IikgewotICAgICAgICBteSAk
bmV3RGF0YU5vZGUgPSBkb21Db25zdGFudC0+bmV3KCk7CisgICAgICAgIG15ICRuZXdEYXRhTm9k
ZSA9IElETENvbnN0YW50LT5uZXcoKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUo
JHNlbGYtPmdldFRva2VuKCksICJjb25zdCIsIF9fTElORV9fKTsKICAgICAgICAgbXkgJHR5cGUg
PSAkc2VsZi0+cGFyc2VDb25zdFR5cGUoKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT50eXBlKCR0
eXBlKTsKQEAgLTExMzMsMTMgKzExMjUsMTIgQEAgc3ViIHBhcnNlU2VyaWFsaXplcgogICAgICAg
ICAgICAgJG5ld0RhdGFOb2RlID0gJHNlbGYtPnBhcnNlU2VyaWFsaXplclJlc3QoJGV4dGVuZGVk
QXR0cmlidXRlTGlzdCk7CiAgICAgICAgICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4o
KTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRuZXdEYXRhTm9kZSA9IGRvbVNlcmlh
bGl6YWJsZS0+bmV3KCk7CisgICAgICAgICAgICAkbmV3RGF0YU5vZGUgPSBJRExTZXJpYWxpemFi
bGUtPm5ldygpOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJHRvSlNPTkZ1bmN0aW9uID0gZG9t
RnVuY3Rpb24tPm5ldygpOwotICAgICAgICAkdG9KU09ORnVuY3Rpb24tPnNpZ25hdHVyZShkb21T
aWduYXR1cmUtPm5ldygpKTsKLSAgICAgICAgJHRvSlNPTkZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgJHRvSlNP
TkZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoInRvSlNPTiIpOworICAgICAgICBteSAkdG9KU09O
RnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICAgICAkdG9KU09ORnVuY3Rpb24t
Pm5hbWUoInRvSlNPTiIpOworICAgICAgICAkdG9KU09ORnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9k
ZS0+ZnVuY3Rpb25zfSwgJHRvSlNPTkZ1bmN0aW9uKTsKIAogICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIjsiLCBfX0xJTkVfXyk7CkBAIC0xMTcyLDcg
KzExNjMsNyBAQCBzdWIgcGFyc2VTZXJpYWxpemF0aW9uUGF0dGVybgogICAgIG15ICRuZXh0ID0g
JHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAieyIpIHsKICAg
ICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJ7IiwgX19M
SU5FX18pOwotICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBkb21TZXJpYWxpemFibGUtPm5ldygp
OworICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBJRExTZXJpYWxpemFibGUtPm5ldygpOwogICAg
ICAgICAkc2VsZi0+cGFyc2VTZXJpYWxpemF0aW9uQXR0cmlidXRlcygkbmV3RGF0YU5vZGUpOwog
ICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIn0iLCBf
X0xJTkVfXyk7CiAgICAgICAgIHJldHVybiAkbmV3RGF0YU5vZGU7CkBAIC0xMTg2LDcgKzExNzcs
NyBAQCBzdWIgcGFyc2VTZXJpYWxpemF0aW9uUGF0dGVybgogICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5UeXBlKCR0b2tlbiwgSWRlbnRpZmllclRva2VuKTsKICAgICAgICAgcHVzaChAYXR0cmli
dXRlcywgJHRva2VuLT52YWx1ZSgpKTsKIAotICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBkb21T
ZXJpYWxpemFibGUtPm5ldygpOworICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBJRExTZXJpYWxp
emFibGUtPm5ldygpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPmF0dHJpYnV0ZXMoXEBhdHRyaWJ1
dGVzKTsKIAogICAgICAgICByZXR1cm4gJG5ld0RhdGFOb2RlOwpAQCAtMTE5NywyMSArMTE4OCwy
MSBAQCBzdWIgcGFyc2VTZXJpYWxpemF0aW9uUGF0dGVybgogc3ViIHBhcnNlU2VyaWFsaXphdGlv
bkF0dHJpYnV0ZXMKIHsKICAgICBteSAkc2VsZiA9IHNoaWZ0OwotICAgIG15ICRkb21TZXJpYWxp
emFibGUgPSBzaGlmdDsKKyAgICBteSAkc2VyaWFsaXphYmxlID0gc2hpZnQ7CiAgICAgbXkgJHRv
a2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAKICAgICBpZiAoJHRva2VuLT52YWx1ZSgpIGVxICJn
ZXR0ZXIiKSB7Ci0gICAgICAgICRkb21TZXJpYWxpemFibGUtPmhhc0dldHRlcigxKTsKKyAgICAg
ICAgJHNlcmlhbGl6YWJsZS0+aGFzR2V0dGVyKDEpOwogICAgICAgICBkaWUgIlNlcmlhbGl6ZXIg
Z2V0dGVyIGtleXdvcmQgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuIjsKIAogICAgIH0KICAg
ICBpZiAoJHRva2VuLT52YWx1ZSgpIGVxICJpbmhlcml0IikgewotICAgICAgICAkZG9tU2VyaWFs
aXphYmxlLT5oYXNJbmhlcml0KDEpOworICAgICAgICAkc2VyaWFsaXphYmxlLT5oYXNJbmhlcml0
KDEpOwogICAgICAgICBkaWUgIlNlcmlhbGl6ZXIgaW5oZXJpdCBrZXl3b3JkIGlzIG5vdCBjdXJy
ZW50bHkgc3VwcG9ydGVkLiI7CiAgICAgfQogCiAgICAgaWYgKCR0b2tlbi0+dmFsdWUoKSBlcSAi
YXR0cmlidXRlIikgewotICAgICAgICAkZG9tU2VyaWFsaXphYmxlLT5oYXNBdHRyaWJ1dGUoMSk7
CisgICAgICAgICRzZXJpYWxpemFibGUtPmhhc0F0dHJpYnV0ZSgxKTsKICAgICAgICAgIyBBdHRy
aWJ1dGVzIHdpbGwgYmUgZmlsbGVkIGluIHZpYSBhcHBseU1lbWJlckxpc3QoKQogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTIyMCw3ICsxMjExLDcgQEAgc3ViIHBhcnNlU2VyaWFsaXphdGlv
bkF0dHJpYnV0ZXMKICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCR0b2tlbiwgSWRlbnRpZmll
clRva2VuKTsKICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAkdG9rZW4tPnZhbHVlKCkpOwogICAgIHB1
c2goQGF0dHJpYnV0ZXMsIEB7JHNlbGYtPnBhcnNlSWRlbnRpZmllcnMoKX0pOwotICAgICRkb21T
ZXJpYWxpemFibGUtPmF0dHJpYnV0ZXMoXEBhdHRyaWJ1dGVzKTsKKyAgICAkc2VyaWFsaXphYmxl
LT5hdHRyaWJ1dGVzKFxAYXR0cmlidXRlcyk7CiB9CiAKIHN1YiBwYXJzZUlkZW50aWZpZXJMaXN0
CkBAIC0xMjg2LDExICsxMjc3LDExIEBAIHN1YiBwYXJzZUF0dHJpYnV0ZU9yT3BlcmF0aW9uUmVz
dAogICAgIH0KICAgICBpZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5l
eHQtPnZhbHVlKCkgPX4gLyRuZXh0QXR0cmlidXRlT3JPcGVyYXRpb25SZXN0XzEvKSB7CiAgICAg
ICAgIG15ICRyZXR1cm5UeXBlID0gJHNlbGYtPnBhcnNlUmV0dXJuVHlwZSgpOwotICAgICAgICBt
eSAkaW50ZXJmYWNlID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uUmVzdCgkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0KTsKLSAgICAgICAgaWYgKGRlZmluZWQgKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgICAg
ICAkaW50ZXJmYWNlLT5zaWduYXR1cmUtPnR5cGUoJHJldHVyblR5cGUpOworICAgICAgICBteSAk
b3BlcmF0aW9uID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uUmVzdCgkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKKyAgICAgICAgaWYgKGRlZmluZWQgKCRvcGVyYXRpb24pKSB7CisgICAgICAgICAgICAk
b3BlcmF0aW9uLT50eXBlKCRyZXR1cm5UeXBlKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
JGludGVyZmFjZTsKKyAgICAgICAgcmV0dXJuICRvcGVyYXRpb247CiAgICAgfQogICAgICRzZWxm
LT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0KQEAg
LTEzMTUsMjYgKzEzMDYsMjUgQEAgc3ViIHBhcnNlQXR0cmlidXRlUmVzdAogCiAgICAgbXkgJG5l
eHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4
dEF0dHJpYnV0ZVJlc3RfMS8pIHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tQXR0cmli
dXRlLT5uZXcoKTsKLSAgICAgICAgaWYgKCRzZWxmLT5wYXJzZVJlYWRPbmx5KCkpIHsKLSAgICAg
ICAgICAgICRuZXdEYXRhTm9kZS0+aXNSZWFkT25seSgxKTsKLSAgICAgICAgfQorICAgICAgICBt
eSAkbmV3RGF0YU5vZGUgPSBJRExBdHRyaWJ1dGUtPm5ldygpOworICAgICAgICAkbmV3RGF0YU5v
ZGUtPmlzUmVhZE9ubHkoJHNlbGYtPnBhcnNlUmVhZE9ubHkoKSk7CisKICAgICAgICAgJHNlbGYt
PmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJhdHRyaWJ1dGUiLCBfX0xJTkVf
Xyk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkp
OwogICAgICAgICAKICAgICAgICAgbXkgJHR5cGUgPSAkc2VsZi0+cGFyc2VUeXBlKCk7Ci0gICAg
ICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBlKCR0eXBlKTsKKyAgICAgICAgJG5ld0Rh
dGFOb2RlLT50eXBlKCR0eXBlKTsKIAogICAgICAgICBteSAkdG9rZW4gPSAkc2VsZi0+Z2V0VG9r
ZW4oKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkdG9rZW4sIElkZW50aWZpZXJU
b2tlbik7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKGlkZW50aWZpZXJS
ZW1vdmVOdWxsYWJsZVByZWZpeCgkdG9rZW4tPnZhbHVlKCkpKTsKKyAgICAgICAgJG5ld0RhdGFO
b2RlLT5uYW1lKGlkZW50aWZpZXJSZW1vdmVOdWxsYWJsZVByZWZpeCgkdG9rZW4tPnZhbHVlKCkp
KTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7
IiwgX19MSU5FX18pOworCiAgICAgICAgICMgQ3VzdG9tQ29uc3RydWN0b3IgbWF5IGFsc28gYmUg
dXNlZCBvbiBhdHRyaWJ1dGVzLgogICAgICAgICBpZiAoZGVmaW5lZCAkZXh0ZW5kZWRBdHRyaWJ1
dGVMaXN0LT57IkN1c3RvbUNvbnN0cnVjdG9ycyJ9KSB7CiAgICAgICAgICAgICBkZWxldGUgJGV4
dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDdXN0b21Db25zdHJ1Y3RvcnMifTsKICAgICAgICAgICAg
ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ3VzdG9tQ29uc3RydWN0b3IifSA9ICJWQUxVRV9J
U19NSVNTSU5HIjsKICAgICAgICAgfQotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAkbmV3
RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAg
ICAgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhw
ZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwpAQCAtMTM3OSw3ICsxMzY5LDcg
QEAgc3ViIHBhcnNlT3BlcmF0aW9uT3JJdGVyYXRvcgogICAgICAgICBteSAkbmV4dCA9ICRzZWxm
LT5uZXh0VG9rZW4oKTsKICAgICAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRv
a2VuIHx8ICRuZXh0LT52YWx1ZSgpIGVxICIoIikgewogICAgICAgICAgICAgbXkgJG9wZXJhdGlv
biA9ICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0g
ICAgICAgICAgICAkb3BlcmF0aW9uLT5zaWduYXR1cmUtPnR5cGUoJHJldHVyblR5cGUpOworICAg
ICAgICAgICAgJG9wZXJhdGlvbi0+dHlwZSgkcmV0dXJuVHlwZSk7CiAgICAgICAgICAgICByZXR1
cm4gJG9wZXJhdGlvbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEzOTYsMTIgKzEzODYsMTIgQEAg
c3ViIHBhcnNlU3BlY2lhbE9wZXJhdGlvbgogICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsKICAg
ICAgICAgcHVzaChAc3BlY2lhbHMsIEB7JHNlbGYtPnBhcnNlU3BlY2lhbHMoKX0pOwogICAgICAg
ICBteSAkcmV0dXJuVHlwZSA9ICRzZWxmLT5wYXJzZVJldHVyblR5cGUoKTsKLSAgICAgICAgbXkg
JGludGVyZmFjZSA9ICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7Ci0gICAgICAgIGlmIChkZWZpbmVkICgkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAg
JGludGVyZmFjZS0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBlKTsKLSAgICAgICAgICAgICRp
bnRlcmZhY2UtPnNpZ25hdHVyZS0+c3BlY2lhbHMoXEBzcGVjaWFscyk7CisgICAgICAgIG15ICRv
cGVyYXRpb24gPSAkc2VsZi0+cGFyc2VPcGVyYXRpb25SZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QpOworICAgICAgICBpZiAoZGVmaW5lZCAoJG9wZXJhdGlvbikpIHsKKyAgICAgICAgICAgICRv
cGVyYXRpb24tPnR5cGUoJHJldHVyblR5cGUpOworICAgICAgICAgICAgJG9wZXJhdGlvbi0+c3Bl
Y2lhbHMoXEBzcGVjaWFscyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICRpbnRlcmZhY2U7
CisgICAgICAgIHJldHVybiAkb3BlcmF0aW9uOwogICAgIH0KICAgICAkc2VsZi0+YXNzZXJ0VW5l
eHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVfXyk7CiB9CkBAIC0xNDY5LDM2ICsx
NDU5LDMxIEBAIHN1YiBwYXJzZU9wdGlvbmFsSXRlcmFibGVJbnRlcmZhY2UKICAgICBteSAkc2Vs
ZiA9IHNoaWZ0OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAg
IG15ICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAgICRz
eW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0g
ICAgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5z
aWduYXR1cmUtPm5hbWUoIltTeW1ib2wuSXRlcmF0b3JdIik7Ci0KLSAgICBteSAkZW50cmllc0Z1
bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAgICRlbnRyaWVzRnVuY3Rpb24tPnNpZ25h
dHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKLSAgICAkZW50cmllc0Z1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAkZW50
cmllc0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoImVudHJpZXMiKTsKLQotICAgIG15ICRrZXlz
RnVuY3Rpb24gPSBkb21GdW5jdGlvbi0+bmV3KCk7Ci0gICAgJGtleXNGdW5jdGlvbi0+c2lnbmF0
dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwotICAgICRrZXlzRnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRrZXlzRnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgia2V5cyIpOwotCi0gICAgbXkgJHZhbHVlc0Z1bmN0aW9u
ID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAgICR2YWx1ZXNGdW5jdGlvbi0+c2lnbmF0dXJlKGRv
bVNpZ25hdHVyZS0+bmV3KCkpOwotICAgICR2YWx1ZXNGdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJHZhbHVlc0Z1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWUoInZhbHVlcyIpOwotCi0gICAgbXkgJGZvckVhY2hGdW5jdGlv
biA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAkZm9yRWFjaEZ1bmN0aW9uLT5zaWduYXR1cmUo
ZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgJGZvckVhY2hGdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJGZvckVhY2hG
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJmb3JFYWNoIik7Ci0gICAgbXkgJGZvckVhY2hBcmd1
bWVudCA9IGRvbVNpZ25hdHVyZS0+bmV3KCk7CisgICAgbXkgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rp
b24gPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5u
YW1lKCJbU3ltYm9sLkl0ZXJhdG9yXSIpOworICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisKKyAgICBteSAkZW50
cmllc0Z1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkZW50cmllc0Z1bmN0aW9u
LT5uYW1lKCJlbnRyaWVzIik7CisgICAgJGVudHJpZXNGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworCisgICAgbXkgJGtleXNGdW5jdGlvbiA9IElE
TE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGtleXNGdW5jdGlvbi0+bmFtZSgia2V5cyIpOworICAg
ICRrZXlzRnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
KTsKKworICAgIG15ICR2YWx1ZXNGdW5jdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAg
JHZhbHVlc0Z1bmN0aW9uLT5uYW1lKCJ2YWx1ZXMiKTsKKyAgICAkdmFsdWVzRnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKworICAgIG15ICRmb3JF
YWNoRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICRmb3JFYWNoRnVuY3Rpb24t
Pm5hbWUoImZvckVhY2giKTsKKyAgICAkZm9yRWFjaEZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgbXkgJGZvckVhY2hBcmd1bWVudCA9IElE
TEFyZ3VtZW50LT5uZXcoKTsKICAgICAkZm9yRWFjaEFyZ3VtZW50LT5uYW1lKCJjYWxsYmFjayIp
OwogICAgICRmb3JFYWNoQXJndW1lbnQtPnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKLSAg
ICBwdXNoKEB7JGZvckVhY2hGdW5jdGlvbi0+cGFyYW1ldGVyc30sICgkZm9yRWFjaEFyZ3VtZW50
KSk7CisgICAgcHVzaChAeyRmb3JFYWNoRnVuY3Rpb24tPmFyZ3VtZW50c30sICgkZm9yRWFjaEFy
Z3VtZW50KSk7CiAKLSAgICBteSAkbmV3RGF0YU5vZGUgPSBkb21JdGVyYWJsZS0+bmV3KCk7Cisg
ICAgbXkgJG5ld0RhdGFOb2RlID0gSURMSXRlcmFibGUtPm5ldygpOwogICAgICRuZXdEYXRhTm9k
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uKTsKICAg
ICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5mdW5jdGlvbnN9LCAkZW50cmllc0Z1bmN0aW9uKTsKQEAg
LTE1MzIsMTUgKzE1MTcsMTkgQEAgc3ViIHBhcnNlT3BlcmF0aW9uUmVzdAogCiAgICAgbXkgJG5l
eHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRp
ZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpIGVxICIoIikgewotICAgICAgICBteSAkbmV3RGF0
YU5vZGUgPSBkb21GdW5jdGlvbi0+bmV3KCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0
dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOworICAgICAgICBteSAkbmV3RGF0YU5vZGUgPSBJRExP
cGVyYXRpb24tPm5ldygpOworCiAgICAgICAgIG15ICRuYW1lID0gJHNlbGYtPnBhcnNlT3B0aW9u
YWxJZGVudGlmaWVyKCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKGlk
ZW50aWZpZXJSZW1vdmVOdWxsYWJsZVByZWZpeCgkbmFtZSkpOworICAgICAgICAkbmV3RGF0YU5v
ZGUtPm5hbWUoaWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCRuYW1lKSk7CisgICAgICAg
IAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIigi
LCAkbmFtZSwgX19MSU5FX18pOwotICAgICAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5wYXJhbWV0
ZXJzfSwgQHskc2VsZi0+cGFyc2VBcmd1bWVudExpc3QoKX0pOworICAgICAgICAKKyAgICAgICAg
cHVzaChAeyRuZXdEYXRhTm9kZS0+YXJndW1lbnRzfSwgQHskc2VsZi0+cGFyc2VBcmd1bWVudExp
c3QoKX0pOworICAgICAgICAKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYt
PmdldFRva2VuKCksICIpIiwgX19MSU5FX18pOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5W
YWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIjsiLCBfX0xJTkVfXyk7Ci0gICAgICAgICRuZXdEYXRh
Tm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlz
dCk7CisgICAgICAgIAorICAgICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICAgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKICAg
ICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19M
SU5FX18pOwpAQCAtMTU5MiwxMCArMTU4MSw4IEBAIHN1YiBwYXJzZUFyZ3VtZW50CiAgICAgbXkg
JHNlbGYgPSBzaGlmdDsKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBp
ZiAoJG5leHQtPnR5cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4g
LyRuZXh0QXJndW1lbnRMaXN0XzEvKSB7Ci0gICAgICAgIG15ICRpbiA9ICRzZWxmLT5wYXJzZUlu
KCk7CiAgICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSAkc2VsZi0+cGFyc2VFeHRl
bmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5KCk7CiAgICAgICAgIG15ICRhcmd1bWVudCA9ICRz
ZWxmLT5wYXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50KCRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QpOwotICAgICAgICAkYXJndW1lbnQtPmRpcmVjdGlvbigkc2VsZi0+cGFyc2VJbigpKTsKICAg
ICAgICAgcmV0dXJuICRhcmd1bWVudDsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0
ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwpAQCAtMTYwNiw3ICsxNTkzLDcgQEAg
c3ViIHBhcnNlT3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQKICAgICBteSAkc2VsZiA9IHNoaWZ0
OwogICAgIG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSBzaGlmdDsKIAotICAgIG15ICRwYXJh
bURhdGFOb2RlID0gZG9tU2lnbmF0dXJlLT5uZXcoKTsKKyAgICBteSAkcGFyYW1EYXRhTm9kZSA9
IElETEFyZ3VtZW50LT5uZXcoKTsKICAgICAkcGFyYW1EYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4
dFRva2VuKCk7CkBAIC0xNjc3LDE5ICsxNjY0LDE3IEBAIHN1YiBwYXJzZUV4Y2VwdGlvbkZpZWxk
CiAKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnR5
cGUoKSA9PSBJZGVudGlmaWVyVG9rZW4gfHwgJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0RXhjZXB0
aW9uRmllbGRfMS8pIHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tQXR0cmlidXRlLT5u
ZXcoKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT50eXBlKCJhdHRyaWJ1dGUiKTsKKyAgICAgICAg
bXkgJG5ld0RhdGFOb2RlID0gSURMQXR0cmlidXRlLT5uZXcoKTsKICAgICAgICAgJG5ld0RhdGFO
b2RlLT5pc1JlYWRPbmx5KDEpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21T
aWduYXR1cmUtPm5ldygpKTsKIAogICAgICAgICBteSAkdHlwZSA9ICRzZWxmLT5wYXJzZVR5cGUo
KTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPnR5cGUoJHR5cGUpOworICAgICAg
ICAkbmV3RGF0YU5vZGUtPnR5cGUoJHR5cGUpOwogICAgICAgICAKICAgICAgICAgbXkgJHRva2Vu
ID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJHRv
a2VuLCBJZGVudGlmaWVyVG9rZW4pOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHRva2VuLT52YWx1ZSgpKSk7Cisg
ICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgo
JHRva2VuLT52YWx1ZSgpKSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxm
LT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAg
ICAgJG5ld0RhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlz
dCk7CiAgICAgICAgIHJldHVybiAkbmV3RGF0YU5vZGU7CiAgICAgfQogICAgICRzZWxmLT5hc3Nl
cnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKQEAgLTE5NTksNyAr
MTk0NCw3IEBAIHN1YiBwYXJzZVNpbmdsZVR5cGUKICAgICBpZiAoJG5leHQtPnZhbHVlKCkgZXEg
ImFueSIpIHsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2Vu
KCksICJhbnkiLCBfX0xJTkVfXyk7CiAgICAgICAgIAotICAgICAgICBteSAkYW55VHlwZSA9IGRv
bVR5cGUtPm5ldygpOworICAgICAgICBteSAkYW55VHlwZSA9IElETFR5cGUtPm5ldygpOwogICAg
ICAgICAkYW55VHlwZS0+bmFtZSgiYW55Iik7CiAgICAgICAgIHJldHVybiAkYW55VHlwZTsKICAg
ICB9CkBAIC0xOTc2LDcgKzE5NjEsNyBAQCBzdWIgcGFyc2VVbmlvblR5cGUKICAgICBteSAkc2Vs
ZiA9IHNoaWZ0OwogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogCi0gICAgbXkg
JHVuaW9uVHlwZSA9IGRvbVR5cGUtPm5ldygpOworICAgIG15ICR1bmlvblR5cGUgPSBJRExUeXBl
LT5uZXcoKTsKICAgICAkdW5pb25UeXBlLT5uYW1lKCJVTklPTiIpOwogICAgICR1bmlvblR5cGUt
PmlzVW5pb24oMSk7CiAKQEAgLTIwMzUsNyArMjAyMCw3IEBAIHN1YiBwYXJzZU5vbkFueVR5cGUK
ICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigp
OwogCi0gICAgbXkgJHR5cGUgPSBkb21UeXBlLT5uZXcoKTsKKyAgICBteSAkdHlwZSA9IElETFR5
cGUtPm5ldygpOwogCiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dE5vbkFueVR5cGVf
MS8pIHsKICAgICAgICAgJHR5cGUtPm5hbWUoJHNlbGYtPnBhcnNlUHJpbWl0aXZlVHlwZSgpKTsK
QEAgLTIxMzEsNyArMjExNiw3IEBAIHN1YiBwYXJzZUNvbnN0VHlwZQogICAgIG15ICRzZWxmID0g
c2hpZnQ7CiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAKLSAgICBteSAkdHlw
ZSA9IGRvbVR5cGUtPm5ldygpOworICAgIG15ICR0eXBlID0gSURMVHlwZS0+bmV3KCk7CiAKICAg
ICBpZiAoJG5leHQtPnZhbHVlKCkgPX4gLyRuZXh0Tm9uQW55VHlwZV8xLykgewogICAgICAgICAk
dHlwZS0+bmFtZSgkc2VsZi0+cGFyc2VQcmltaXRpdmVUeXBlKCkpOwpAQCAtMjI2OCw3ICsyMjUz
LDcgQEAgc3ViIHBhcnNlUmV0dXJuVHlwZQogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAidm9p
ZCIpIHsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCks
ICJ2b2lkIiwgX19MSU5FX18pOwogICAgICAgICAKLSAgICAgICAgbXkgJHZvaWRUeXBlID0gZG9t
VHlwZS0+bmV3KCk7CisgICAgICAgIG15ICR2b2lkVHlwZSA9IElETFR5cGUtPm5ldygpOwogICAg
ICAgICAkdm9pZFR5cGUtPm5hbWUoInZvaWQiKTsKICAgICAgICAgcmV0dXJuICR2b2lkVHlwZTsK
ICAgICB9CkBAIC0yMjc4LDE3ICsyMjYzLDYgQEAgc3ViIHBhcnNlUmV0dXJuVHlwZQogICAgICRz
ZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKIH0K
IAotc3ViIHBhcnNlSW4KLXsKLSAgICBteSAkc2VsZiA9IHNoaWZ0OwotICAgIG15ICRuZXh0ID0g
JHNlbGYtPm5leHRUb2tlbigpOwotICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiaW4iKSB7Ci0g
ICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiaW4iLCBf
X0xJTkVfXyk7Ci0gICAgICAgIHJldHVybiAiaW4iOwotICAgIH0KLSAgICByZXR1cm4gIiI7Ci19
Ci0KIHN1YiBwYXJzZU9wdGlvbmFsU2VtaWNvbG9uCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsK
QEAgLTIzMjksNyArMjMwMyw3IEBAIHN1YiBpc1NlcmlhbGl6YWJsZUF0dHJpYnV0ZQogICAgICMg
VGhpcyBjaGVjayBtYXkgaGF2ZSB0byBtb3ZlIHRvIHRoZSBjb2RlIGdlbmVyYXRvciwgaWYgd2Ug
ZG9uJ3QgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24KICAgICAjIGhlcmUgdG8gZGV0ZXJtaW5lIHNl
cmlhbGl6YWJpbGl0eTogaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLXNlcmlh
bGl6ZXJzCiAgICAgbXkgJHNlcmlhbGl6YWJsZV90eXBlcyA9ICdeKFwoYnl0ZXxvY3RldHxzaG9y
dHx1bnNpZ25lZCBzaG9ydHxsb25nfHVuc2lnbmVkIGxvbmd8bG9uZyBsb25nfHVuc2lnbmVkIGxv
bmcgbG9uZ3xmbG9hdHx1bnJlc3RyaWN0ZWQgZmxvYXR8ZG91YmxlfHVucmVzdHJpY3RlZCBkb3Vi
bGV8Ym9vbGVhbnxET01TdHJpbmd8Qnl0ZVN0cmluZ3xVU1ZTdHJpbmcpJCc7Ci0gICAgcmV0dXJu
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZS0+bmFtZSA9fiAvJHNlcmlhbGl6YWJsZV90eXBl
cy87CisgICAgcmV0dXJuICRhdHRyaWJ1dGUtPnR5cGUtPm5hbWUgPX4gLyRzZXJpYWxpemFibGVf
dHlwZXMvOwogfQogCiBzdWIgYXBwbHlNZW1iZXJMaXN0CkBAIC0yMzM4LDI3ICsyMzEyLDI3IEBA
IHN1YiBhcHBseU1lbWJlckxpc3QKICAgICBteSAkbWVtYmVycyA9IHNoaWZ0OwogCiAgICAgZm9y
IG15ICRpdGVtIChAeyRtZW1iZXJzfSkgewotICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAiZG9t
QXR0cmlidXRlIikgeworICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAiSURMQXR0cmlidXRlIikg
ewogICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9LCAkaXRlbSk7CiAg
ICAgICAgICAgICBuZXh0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChyZWYoJGl0ZW0pIGVxICJk
b21Db25zdGFudCIpIHsKKyAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEgIklETENvbnN0YW50Iikg
ewogICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmNvbnN0YW50c30sICRpdGVtKTsKICAg
ICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEgImRv
bUl0ZXJhYmxlIikgeworICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAiSURMSXRlcmFibGUiKSB7
CiAgICAgICAgICAgICAkaW50ZXJmYWNlLT5pdGVyYWJsZSgkaXRlbSk7CiAgICAgICAgICAgICBu
ZXh0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChyZWYoJGl0ZW0pIGVxICJkb21GdW5jdGlvbiIp
IHsKLSAgICAgICAgICAgIGlmICgkaXRlbS0+c2lnbmF0dXJlLT5uYW1lIGVxICIiKSB7CisgICAg
ICAgIGlmIChyZWYoJGl0ZW0pIGVxICJJRExPcGVyYXRpb24iKSB7CisgICAgICAgICAgICBpZiAo
JGl0ZW0tPm5hbWUgZXEgIiIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+
YW5vbnltb3VzRnVuY3Rpb25zfSwgJGl0ZW0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgJGl0ZW0pOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQotICAgICAgICBpZiAocmVmKCRp
dGVtKSBlcSAiZG9tU2VyaWFsaXphYmxlIikgeworICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAi
SURMU2VyaWFsaXphYmxlIikgewogICAgICAgICAgICAgJGludGVyZmFjZS0+c2VyaWFsaXphYmxl
KCRpdGVtKTsKICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KQEAgLTIzNjksMTIgKzIzNDMs
MTIgQEAgc3ViIGFwcGx5TWVtYmVyTGlzdAogICAgICAgICBpZiAoJGludGVyZmFjZS0+c2VyaWFs
aXphYmxlLT5oYXNBdHRyaWJ1dGUpIHsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAgICAgIGlmIChpc1Nl
cmlhbGl6YWJsZUF0dHJpYnV0ZSgkYXR0cmlidXRlKSkgewotICAgICAgICAgICAgICAgICAgICBw
dXNoKEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2Ut
PnNlcmlhbGl6YWJsZS0+YXR0cmlidXRlc30sICRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNpZiAoJG51bVNlcmlhbGl6ZXJB
dHRyaWJ1dGVzID09IDApIHsKICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHsk
aW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgICAgIHB1c2goQHskaW50ZXJm
YWNlLT5zZXJpYWxpemFibGUtPmF0dHJpYnV0ZXN9LCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpOworICAgICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5zZXJpYWxpemFibGUtPmF0
dHJpYnV0ZXN9LCAkYXR0cmlidXRlLT5uYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KQEAgLTIzODksMjQgKzIzNjMsMjIgQEAgc3ViIGFwcGx5RXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0CiAgICAgICAgIG15IEBjb25zdHJ1Y3RvclBhcmFtcyA9IEB7JGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJDb25zdHJ1Y3RvcnMifX07CiAgICAgICAgIG15ICRpbmRleCA9IChAY29uc3RydWN0
b3JQYXJhbXMgPT0gMSkgPyAwIDogMTsKICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEBjb25z
dHJ1Y3RvclBhcmFtcykgewotICAgICAgICAgICAgbXkgJGNvbnN0cnVjdG9yID0gZG9tRnVuY3Rp
b24tPm5ldygpOwotICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5zaWduYXR1cmUoZG9tU2lnbmF0
dXJlLT5uZXcoKSk7Ci0gICAgICAgICAgICAkY29uc3RydWN0b3ItPnNpZ25hdHVyZS0+bmFtZSgi
Q29uc3RydWN0b3IiKTsKLSAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgICAgICAkY29u
c3RydWN0b3ItPnBhcmFtZXRlcnMoJHBhcmFtKTsKKyAgICAgICAgICAgIG15ICRjb25zdHJ1Y3Rv
ciA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgICAgICAgICAkY29uc3RydWN0b3ItPm5hbWUo
IkNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICAkY29uc3RydWN0b3ItPmV4dGVuZGVkQXR0cmli
dXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+
YXJndW1lbnRzKCRwYXJhbSk7CiAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+Y29uc3Ry
dWN0b3JzfSwgJGNvbnN0cnVjdG9yKTsKICAgICAgICAgfQogICAgICAgICBkZWxldGUgJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvcnMifTsKICAgICAgICAgJGV4dGVuZGVkQXR0
cmlidXRlTGlzdC0+eyJDb25zdHJ1Y3RvciJ9ID0gIlZBTFVFX0lTX01JU1NJTkciOwogICAgIH0g
ZWxzaWYgKGRlZmluZWQgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJOYW1lZENvbnN0cnVjdG9y
In0pIHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAg
ICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKLSAgICAg
ICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPm5hbWUoIk5hbWVkQ29uc3RydWN0b3IiKTsKLSAg
ICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gSURMT3BlcmF0aW9u
LT5uZXcoKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5uYW1lKCJOYW1lZENvbnN0cnVjdG9yIik7
CisgICAgICAgICRuZXdEYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QpOwogICAgICAgICBteSAlYXR0cmlidXRlcyA9ICV7JGV4dGVuZGVkQXR0cmlidXRl
TGlzdC0+eyJOYW1lZENvbnN0cnVjdG9yIn19OwogICAgICAgICBteSBAYXR0cmlidXRlS2V5cyA9
IGtleXMgKCVhdHRyaWJ1dGVzKTsKICAgICAgICAgbXkgJGNvbnN0cnVjdG9yTmFtZSA9ICRhdHRy
aWJ1dGVLZXlzWzBdOwotICAgICAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5wYXJhbWV0ZXJzfSwg
QHskYXR0cmlidXRlc3skY29uc3RydWN0b3JOYW1lfX0pOworICAgICAgICBwdXNoKEB7JG5ld0Rh
dGFOb2RlLT5hcmd1bWVudHN9LCBAeyRhdHRyaWJ1dGVzeyRjb25zdHJ1Y3Rvck5hbWV9fSk7CiAg
ICAgICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9ID0gJGNv
bnN0cnVjdG9yTmFtZTsKICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmNvbnN0cnVjdG9yc30s
ICRuZXdEYXRhTm9kZSk7CiAgICAgfQpAQCAtMjQxNCwxMSArMjM4NiwxMCBAQCBzdWIgYXBwbHlF
eHRlbmRlZEF0dHJpYnV0ZUxpc3QKICAgICAgICAgbXkgQGN1c3RvbUNvbnN0cnVjdG9yUGFyYW1z
ID0gQHskZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkN1c3RvbUNvbnN0cnVjdG9ycyJ9fTsKICAg
ICAgICAgbXkgJGluZGV4ID0gKEBjdXN0b21Db25zdHJ1Y3RvclBhcmFtcyA9PSAxKSA/IDAgOiAx
OwogICAgICAgICBmb3JlYWNoIG15ICRwYXJhbSAoQGN1c3RvbUNvbnN0cnVjdG9yUGFyYW1zKSB7
Ci0gICAgICAgICAgICBteSAkY3VzdG9tQ29uc3RydWN0b3IgPSBkb21GdW5jdGlvbi0+bmV3KCk7
Ci0gICAgICAgICAgICAkY3VzdG9tQ29uc3RydWN0b3ItPnNpZ25hdHVyZShkb21TaWduYXR1cmUt
Pm5ldygpKTsKLSAgICAgICAgICAgICRjdXN0b21Db25zdHJ1Y3Rvci0+c2lnbmF0dXJlLT5uYW1l
KCJDdXN0b21Db25zdHJ1Y3RvciIpOwotICAgICAgICAgICAgJGN1c3RvbUNvbnN0cnVjdG9yLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAg
ICAgICAgICAgICRjdXN0b21Db25zdHJ1Y3Rvci0+cGFyYW1ldGVycygkcGFyYW0pOworICAgICAg
ICAgICAgbXkgJGN1c3RvbUNvbnN0cnVjdG9yID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAg
ICAgICAgICRjdXN0b21Db25zdHJ1Y3Rvci0+bmFtZSgiQ3VzdG9tQ29uc3RydWN0b3IiKTsKKyAg
ICAgICAgICAgICRjdXN0b21Db25zdHJ1Y3Rvci0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAgICAgJGN1c3RvbUNvbnN0cnVjdG9yLT5hcmd1bWVu
dHMoJHBhcmFtKTsKICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5jdXN0b21Db25zdHJ1
Y3RvcnN9LCAkY3VzdG9tQ29uc3RydWN0b3IpOwogICAgICAgICB9CiAgICAgICAgIGRlbGV0ZSAk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkN1c3RvbUNvbnN0cnVjdG9ycyJ9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsCShyZXZpc2lvbiAyMDgxMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L2dlbmVyYXRlLWJpbmRpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsMjggKzE1NywyOCBA
QCBmb3JlYWNoIG15ICRpZGxGaWxlIChAc3VwcGxlbWVudGVkSWRsRmlsCiAKICAgICAgICAgICAg
ICMgU3VwcG9ydCBmb3IgYXR0cmlidXRlcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCiAgICAgICAg
ICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsK
LSAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkYXR0
cmlidXRlLT5zaWduYXR1cmUsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOworICAgICAgICAgICAg
ICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRhdHRyaWJ1dGUsIFxAdGFy
Z2V0R2xvYmFsQ29udGV4dHMpOwogCiAgICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlz
IGF0dHJpYnV0ZSBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KLSAgICAgICAgICAg
ICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1l
bnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWw7CisgICAg
ICAgICAgICAgICAgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKIAogICAgICAg
ICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFj
aCBhdHRyaWJ1dGUuCiAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1
dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAg
ICAgICAgICAgICAgICAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgICRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmF0
dHJpYnV0ZXN9LCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgIyBT
dXBwb3J0IGZvciBtZXRob2RzIG9mIHBhcnRpYWwgaW50ZXJmYWNlcy4KICAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAg
ICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgkZnVuY3Rpb24tPnNp
Z25hdHVyZSwgXEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CisgICAgICAgICAgICAgICAgbmV4dCB1
bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGZ1bmN0aW9uLCBcQHRhcmdldEdsb2JhbENv
bnRleHRzKTsKIAogICAgICAgICAgICAgICAgICMgUmVjb3JkIHRoYXQgdGhpcyBtZXRob2QgaXMg
aW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5hbWUuCi0gICAgICAgICAgICAgICAgJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50
ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWw7CisgICAgICAgICAgICAgICAgJGZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGludGVyZmFj
ZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsOwogCiAgICAgICAgICAgICAgICAgIyBBZGQg
aW50ZXJmYWNlLXdpZGUgZXh0ZW5kZWQgYXR0cmlidXRlcyB0byBlYWNoIG1ldGhvZC4KICAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRleHRlbmRlZEF0dHJpYnV0ZU5hbWUgKGtleXMgJXskaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICAgICAgICAgICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVO
YW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0
ZU5hbWV9OworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRmdW5jdGlvbik7
CiAgICAgICAgICAgICB9CkBAIC0yMTAsOSArMjEwLDkgQEAgJGNvZGVHZW4tPlByb2Nlc3NEb2N1
bWVudCgkdGFyZ2V0RG9jdW1lbgogIyBvbiB3aGljaCBnbG9iYWwgY29udGV4dHMgdGhleSBzaG91
bGQgYmUgZXhwb3NlZC4KIHN1YiBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZAogewotICAgIG15ICgk
c2lnbmF0dXJlLCAkdGFyZ2V0R2xvYmFsQ29udGV4dHMpID0gQF87CisgICAgbXkgKCRjb250ZXh0
LCAkdGFyZ2V0R2xvYmFsQ29udGV4dHMpID0gQF87CiAKLSAgICBteSAkZXhwb3NlZCA9ICRzaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9OworICAgIG15ICRleHBvc2VkID0g
JGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9OwogCiAgICAgcmV0dXJuIDEg
dW5sZXNzICRleHBvc2VkOwogCkBAIC0yODksMTMgKzI4OSwxMyBAQCBzdWIgY2hlY2tJRExBdHRy
aWJ1dGVzCiAgICAgICAgIGNoZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1dGVz
LCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpZGxGaWxlKTsKIAogICAgICAgICBm
b3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAg
ICAgICAgIGNoZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1dGVzLCAkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcywgJGlkbEZpbGUpOworICAgICAgICAg
ICAgY2hlY2tJZklETEF0dHJpYnV0ZXNFeGlzdHMoJGlkbEF0dHJpYnV0ZXMsICRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcywgJGlkbEZpbGUpOwogICAgICAgICB9CiAKICAgICAgICAgZm9y
ZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAg
ICAgY2hlY2tJZklETEF0dHJpYnV0ZXNFeGlzdHMoJGlkbEF0dHJpYnV0ZXMsICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpZGxGaWxlKTsKLSAgICAgICAgICAgIGZv
cmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAg
ICAgICAgICAgY2hlY2tJZklETEF0dHJpYnV0ZXNFeGlzdHMoJGlkbEF0dHJpYnV0ZXMsICRwYXJh
bWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcywgJGlkbEZpbGUpOworICAgICAgICAgICAgY2hlY2tJ
ZklETEF0dHJpYnV0ZXNFeGlzdHMoJGlkbEF0dHJpYnV0ZXMsICRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLCAkaWRsRmlsZSk7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAo
QHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICBjaGVja0lmSURMQXR0
cmlidXRlc0V4aXN0cygkaWRsQXR0cmlidXRlcywgJGFyZ3VtZW50LT5leHRlbmRlZEF0dHJpYnV0
ZXMsICRpZGxGaWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0VHlwZWRlZnMuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0VHlwZWRl
ZnMuaWRsCShyZXZpc2lvbiAyMDgxMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEx
IEBACiAgICAgdm9pZCBudWxsYWJsZVNlcXVlbmNlQXJnKFNFUVVFTkNFX09GX1NUUklOR1M/IHNl
cXVlbmNlQXJnKTsKICAgICB2b2lkIHNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoc2VxdWVuY2U8U1RS
SU5HPz4gc2VxdWVuY2VBcmcpOwogICAgIHZvaWQgbnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVz
QXJnKFNFUVVFTkNFX09GX05VTExBQkxFX1NUUklOR1M/IHNlcXVlbmNlQXJnKTsKKyAgICB2b2lk
IG51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhzZXF1ZW5jZTwoU1RSSU5HIG9yIFNFUVVFTkNF
X09GX1NUUklOR1MpPj8gc2VxdWVuY2VBcmcpOwogCiAgICAgdm9pZCB1bmlvbkFyZyhVTklPTl9T
VFJJTkdfTE9ORyB1bmlvbkFyZyk7CiAKLSAgICB2b2lkIGZ1bmNXaXRoQ2xhbXAoVUxPTkdMT05H
X0NMQU1QIGFyZzEsIG9wdGlvbmFsIFVMT05HTE9OR19DTEFNUCBhcmcyKTsKKyAgICB2b2lkIGZ1
bmNXaXRoQ2xhbXAoW0NsYW1wXSBVTE9OR0xPTkcgYXJnMSwgW0NsYW1wXSBvcHRpb25hbCBVTE9O
R0xPTkcgYXJnMik7CiAKICAgICBbSW1tdXRhYmxlXSBTVkdQT0lOVCBpbW11dGFibGVQb2ludEZ1
bmN0aW9uKCk7CiAKQEAgLTcxLDcgKzcyLDYgQEAKIAogdHlwZWRlZiB1bnJlc3RyaWN0ZWQgZmxv
YXQgICAgICAgICBET1VCTEU7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgICAgICAgIFVM
T05HTE9ORzsKLXR5cGVkZWYgW0NsYW1wXSB1bnNpZ25lZCBsb25nIGxvbmcgVUxPTkdMT05HX0NM
QU1QOwogdHlwZWRlZiBTZXJpYWxpemVkU2NyaXB0VmFsdWUgICAgICBTQ1JJUFRfVkFMVUU7CiB0
eXBlZGVmIHNlcXVlbmNlPGxvbmc+ICAgICAgICAgICAgIFNFUVVFTkNFX09GX0xPTkdTOwogdHlw
ZWRlZiBsb25nPyAgICAgICAgICAgICAgICAgICAgICBOVUxMQUJMRV9MT05HOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCShyZXZpc2lvbiAyMDgxMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw2ICs0OCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3QK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
ZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVNlcXVlbmNlT2ZVbmlvbnNBcmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25Bcmco
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25JbW11dGFibGVQb2ludEZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0x
NzMsNiArMTc0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdFR5cGVkZQog
ICAgIHsgIm51bGxhYmxlU2VxdWVuY2VBcmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnKSwgKGludHB0cl90KSAoMSkgfSB9LAog
ICAgIHsgInNlcXVlbmNlT2ZOdWxsYWJsZXNBcmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKSwgKGludHB0cl90KSAoMSkg
fSB9LAogICAgIHsgIm51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyIsIEpTQzo6RnVuY3Rp
b24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxl
c0FyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyAgICB7ICJudWxsYWJsZVNlcXVlbmNlT2ZVbmlv
bnNBcmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVNlcXVlbmNlT2ZVbmlvbnNBcmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidW5pb25B
cmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyks
IChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJmdW5jV2l0aENsYW1wIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcCksIChpbnRwdHJfdCkg
KDEpIH0gfSwKICAgICB7ICJpbW11dGFibGVQb2ludEZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwg
Tm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbiksIChpbnRw
dHJfdCkgKDApIH0gfSwKQEAgLTYxMCw2ICs2MTIsMjYgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0VHlwZWRlZnMqLCBKU0M6OlRocm93U2NvcGUmKTsKKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmdDYWxsZXI+
KHN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRl
KSk7CisgICAgYXV0byBzZXF1ZW5jZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMU2VxdWVu
Y2U8SURMVW5pb248SURMRE9NU3RyaW5nLCBJRExTZXF1ZW5jZTxJRExET01TdHJpbmc+Pj4+Pigq
c3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpbXBsLm51bGxhYmxlU2Vx
dWVuY2VPZlVuaW9uc0FyZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZ0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdFR5cGVkZWZzKiwgSlNDOjpUaHJvd1Njb3BlJik7CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blVuaW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21h
a2Vfc2V0dGluZ3MucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9tYWtlX3Nl
dHRpbmdzLnBsCShyZXZpc2lvbiAyMDgxMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21ha2Vf
c2V0dGluZ3MucGwJKHdvcmtpbmcgY29weSkKQEAgLTM3MCw3ICszNzAsNyBAQCBzdWIgZ2VuZXJh
dGVJbnRlcm5hbFNldHRpbmdzSWRsRmlsZSgkKQogICAgICAgICBteSAkdHlwZSA9ICRwYXJzZWRJ
dGVtc3skc2V0dGluZ05hbWV9eyJ0eXBlIn07CiAgICAgICAgIG15ICRpZGxUeXBlID0gJHdlYmNv
cmVUeXBlVG9JZGxUeXBleyR0eXBlfTsKICAgICAgICAgbXkgJHNldHRlckZ1bmN0aW9uTmFtZSA9
IHNldHRlckZ1bmN0aW9uTmFtZSgkc2V0dGluZ05hbWUpOwotICAgICAgICBwcmludCAkZmlsZSAi
ICAgIHZvaWQgJHNldHRlckZ1bmN0aW9uTmFtZShpbiAkaWRsVHlwZSAkc2V0dGluZ05hbWUpO1xu
IjsKKyAgICAgICAgcHJpbnQgJGZpbGUgIiAgICB2b2lkICRzZXR0ZXJGdW5jdGlvbk5hbWUoJGlk
bFR5cGUgJHNldHRpbmdOYW1lKTtcbiI7CiAgICAgfTsKIAogICAgIGVudW1lcmF0ZVBhcnNlZEl0
ZW1zKCRmaWxlLCAkcGFyc2VkSXRlbXNSZWYsIFwmd3JpdGVJZGxTZXR0ZXIpOwpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4
MTI5KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTYtMTAtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBbV2Vi
SURMXSBSZXN0cnVjdHVyZSBJRExQYXJzZXIgc3RydWN0cyB0byBiZXR0ZXIgbWF0Y2ggbW9kZXJu
IFdlYklMRCBjb25jZXB0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY0MjA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRl
clRyZWUucG06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbToKKyAgICAgICAgVXBkYXRlIGZvciBuZXcg
c3RydWN0IHR5cGVzLgorCiAyMDE2LTEwLTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggZmFpbGluZyBFeHRlbmRlZENvbG9yIHRlc3RzLgpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0
b3JEdW1wUmVuZGVyVHJlZS5wbQkocmV2aXNpb24gMjA4MTI5KQorKysgVG9vbHMvRHVtcFJlbmRl
clRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzYsNyArMTc2LDcgQEAgRU9GCiAgICAgaWYgKG15IEBmdW5jdGlvbnMgPSBAeyRp
bnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKICAgICAgICAgcHVzaChAY29udGVudHMsICJcbiAgICAv
LyBGdW5jdGlvbnNcblxuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rp
b25zKSB7Ci0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0aWMgSlNWYWx1ZVJl
ZiBAe1skZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZV19KEpTQ29udGV4dFJlZiwgSlNPYmplY3RS
ZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiop
O1xuIik7CisgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICBzdGF0aWMgSlNWYWx1ZVJl
ZiBAe1skZnVuY3Rpb24tPm5hbWVdfShKU0NvbnRleHRSZWYsIEpTT2JqZWN0UmVmLCBKU09iamVj
dFJlZiwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFsdWVSZWYqKTtcbiIpOwogICAg
ICAgICB9CiAgICAgfQogCkBAIC0yNzAsNyArMjcwLDcgQEAgRU9GCiAgICAgICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7CiAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywg
PDxFT0YpOwogCi1KU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6QHtbJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPm5hbWVdfShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCitKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6
QHtbJGZ1bmN0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgICR7aW1wbGVt
ZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfShj
b250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBpZiAoIWltcGwpCkBAIC0yNzgsNDAgKzI3OCw0MCBA
QCBKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6QHtbJGZ1bmN0aW9uLT5zCiAKIEVPRgogICAgICAg
ICAgICAgbXkgJGZ1bmN0aW9uQ2FsbDsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgewot
ICAgICAgICAgICAgICAgICRmdW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAuICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5uYW1lIC4gIihjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2Vw
dGlvbikiOworICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgeworICAgICAgICAgICAgICAgICRmdW5jdGlvbkNh
bGwgPSAiaW1wbC0+IiAuICRmdW5jdGlvbi0+bmFtZSAuICIoY29udGV4dCwgYXJndW1lbnRDb3Vu
dCwgYXJndW1lbnRzLCBleGNlcHRpb24pIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgbXkgQHBhcmFtZXRlcnMgPSAoKTsKLSAgICAgICAgICAgICAgICBteSBAc3BlY2lm
aWVkUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAgICAgICAgICAgICAg
ICBteSBAYXJndW1lbnRzID0gKCk7CisgICAgICAgICAgICAgICAgbXkgQHNwZWNpZmllZEFyZ3Vt
ZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9OwogCi0gICAgICAgICAgICAgICAgJHNlbGYt
Pl9pbmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVkZXMsICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT50eXBlLCAkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgJHNlbGYtPl9p
bmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVkZXMsICRmdW5jdGlvbi0+dHlwZSk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJQYXNzQ29udGV4dCJ9KSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRl
cnMsICJjb250ZXh0Iik7CisgICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlBhc3NDb250ZXh0In0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChA
YXJndW1lbnRzLCAiY29udGV4dCIpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGkgKDAuLiQjc3BlY2lmaWVkUGFyYW1ldGVycykgewotICAgICAgICAg
ICAgICAgICAgICBteSAkcGFyYW1ldGVyID0gJHNwZWNpZmllZFBhcmFtZXRlcnNbJGldOworICAg
ICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGkgKDAuLiQjc3BlY2lmaWVkQXJndW1lbnRzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudCA9ICRzcGVjaWZpZWRBcmd1bWVudHNbJGld
OwogCi0gICAgICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50
c0luY2x1ZGVzLCAkdHlwZSwgJHBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgICRzZWxm
LT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkdHlwZSk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgIiAuICRzZWxmLT5fcGxhdGZvcm1UeXBl
VmFyaWFibGVEZWNsYXJhdGlvbigkcGFyYW1ldGVyLCAkcGFyYW1ldGVyLT5uYW1lLCAiYXJndW1l
bnRzWyRpXSIsICJhcmd1bWVudENvdW50ID4gJGkiKSAuICJcbiIpOworICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBjb250ZW50cywgIiAgICAiIC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVWYXJpYWJs
ZURlY2xhcmF0aW9uKCRhcmd1bWVudC0+dHlwZSwgJGFyZ3VtZW50LT5uYW1lLCAiYXJndW1lbnRz
WyRpXSIsICJhcmd1bWVudENvdW50ID4gJGkiKSAuICJcbiIpOwogICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAcGFyYW1ldGVycywgJHNlbGYtPl9wYXJhbWV0
ZXJFeHByZXNzaW9uKCRwYXJhbWV0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJn
dW1lbnRzLCAkc2VsZi0+X2FyZ3VtZW50RXhwcmVzc2lvbigkYXJndW1lbnQpKTsKICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIgLiAk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQHBhcmFtZXRlcnMp
IC4gIikiOworICAgICAgICAgICAgICAgICRmdW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAuICRmdW5j
dGlvbi0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICR7
ZnVuY3Rpb25DYWxsfTtcblxuIikgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUtPm5hbWUg
ZXEgInZvaWQiOwotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgcmV0dXJuICIgLiAk
c2VsZi0+X3JldHVybkV4cHJlc3Npb24oJGZ1bmN0aW9uLT5zaWduYXR1cmUsICRmdW5jdGlvbkNh
bGwpIC4gIjtcbn1cbiIpOworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgJHtmdW5j
dGlvbkNhbGx9O1xuXG4iKSBpZiAkZnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiOworICAg
ICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgcmV0dXJuICIgLiAkc2VsZi0+X3JldHVybkV4
cHJlc3Npb24oJGZ1bmN0aW9uLT50eXBlLCAkZnVuY3Rpb25DYWxsKSAuICI7XG59XG4iKTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIGlmIChteSBAYXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+
YXR0cmlidXRlc30pIHsKICAgICAgICAgcHVzaChAY29udGVudHMsICJcbi8vIEF0dHJpYnV0ZXNc
biIpOwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEBhdHRyaWJ1dGVzKSB7Ci0gICAg
ICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT50eXBlLCAkYXR0cmlidXRlLT5zaWduYXR1cmUpOworICAgICAgICAg
ICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVkZXMsICRhdHRyaWJ1dGUt
PnR5cGUpOwogCiAgICAgICAgICAgICBteSAkZ2V0dGVyTmFtZSA9ICRzZWxmLT5fZ2V0dGVyTmFt
ZSgkYXR0cmlidXRlKTsKICAgICAgICAgICAgIG15ICRnZXR0ZXJFeHByZXNzaW9uID0gImltcGwt
PiR7Z2V0dGVyTmFtZX0oKSI7CkBAIC0zMjQsNyArMzI0LDcgQEAgSlNWYWx1ZVJlZiAke2NsYXNz
TmFtZX06OiR7Z2V0dGVyTmFtZX0oSgogICAgIGlmICghaW1wbCkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogCi0gICAgcmV0dXJuIEB7WyRzZWxmLT5fcmV0
dXJuRXhwcmVzc2lvbigkYXR0cmlidXRlLT5zaWduYXR1cmUsICRnZXR0ZXJFeHByZXNzaW9uKV19
OworICAgIHJldHVybiBAe1skc2VsZi0+X3JldHVybkV4cHJlc3Npb24oJGF0dHJpYnV0ZS0+dHlw
ZSwgJGdldHRlckV4cHJlc3Npb24pXX07CiB9CiBFT0YKIApAQCAtMzM5LDcgKzMzOSw3IEBAIGJv
b2wgJHtjbGFzc05hbWV9OjpAe1skc2VsZi0+X3NldHRlck5hbWUKIAogRU9GCiAKLSAgICAgICAg
ICAgICAgICBteSAkcGxhdGZvcm1WYWx1ZSA9ICRzZWxmLT5fcGxhdGZvcm1UeXBlQ29uc3RydWN0
b3IoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICBteSAk
cGxhdGZvcm1WYWx1ZSA9ICRzZWxmLT5fcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IoJGF0dHJpYnV0
ZS0+dHlwZSwgInZhbHVlIik7CiAKICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgPDxF
T0YpOwogICAgIGltcGwtPkB7WyRzZWxmLT5fc2V0dGVyTmFtZSgkYXR0cmlidXRlKV19KCR7cGxh
dGZvcm1WYWx1ZX0pOwpAQCAtMzY4LDEyICszNjgsMTIgQEAgc3ViIF9nZXR0ZXJOYW1lCiB7CiAg
ICAgbXkgKCRzZWxmLCAkYXR0cmlidXRlKSA9IEBfOwogCi0gICAgcmV0dXJuICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+bmFtZTsKKyAgICByZXR1cm4gJGF0dHJpYnV0ZS0+bmFtZTsKIH0KIAogc3Vi
IF9pbmNsdWRlSGVhZGVycwogewotICAgIG15ICgkc2VsZiwgJGhlYWRlcnMsICR0eXBlLCAkc2ln
bmF0dXJlKSA9IEBfOworICAgIG15ICgkc2VsZiwgJGhlYWRlcnMsICR0eXBlKSA9IEBfOwogCiAg
ICAgcmV0dXJuIHVubGVzcyBkZWZpbmVkICR0eXBlOwogICAgIHJldHVybiBpZiAkdHlwZS0+bmFt
ZSBlcSAiYm9vbGVhbiI7CkBAIC00MTYsNyArNDE2LDcgQEAgc3ViIF9wYXJlbnRJbnRlcmZhY2UK
IAogc3ViIF9wbGF0Zm9ybVR5cGUKIHsKLSAgICBteSAoJHNlbGYsICR0eXBlLCAkc2lnbmF0dXJl
KSA9IEBfOworICAgIG15ICgkc2VsZiwgJHR5cGUpID0gQF87CiAKICAgICByZXR1cm4gdW5kZWYg
dW5sZXNzIGRlZmluZWQgJHR5cGU7CiAKQEAgLTQyOSw5ICs0MjksNyBAQCBzdWIgX3BsYXRmb3Jt
VHlwZQogCiBzdWIgX3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yCiB7Ci0gICAgbXkgKCRzZWxmLCAk
c2lnbmF0dXJlLCAkYXJndW1lbnROYW1lKSA9IEBfOwotCi0gICAgbXkgJHR5cGUgPSAkc2lnbmF0
dXJlLT50eXBlOworICAgIG15ICgkc2VsZiwgJHR5cGUsICRhcmd1bWVudE5hbWUpID0gQF87CiAK
ICAgICByZXR1cm4gIkpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgJGFyZ3VtZW50TmFtZSkiIGlm
ICR0eXBlIGVxICJib29sZWFuIjsKICAgICByZXR1cm4gIiRhcmd1bWVudE5hbWUiIGlmICR0eXBl
LT5uYW1lIGVxICJvYmplY3QiOwpAQCAtNDQyLDEwICs0NDAsMTAgQEAgc3ViIF9wbGF0Zm9ybVR5
cGVDb25zdHJ1Y3RvcgogCiBzdWIgX3BsYXRmb3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRpb24KIHsK
LSAgICBteSAoJHNlbGYsICRzaWduYXR1cmUsICR2YXJpYWJsZU5hbWUsICRhcmd1bWVudE5hbWUs
ICRjb25kaXRpb24pID0gQF87CisgICAgbXkgKCRzZWxmLCAkdHlwZSwgJHZhcmlhYmxlTmFtZSwg
JGFyZ3VtZW50TmFtZSwgJGNvbmRpdGlvbikgPSBAXzsKIAotICAgIG15ICRwbGF0Zm9ybVR5cGUg
PSAkc2VsZi0+X3BsYXRmb3JtVHlwZSgkc2lnbmF0dXJlLT50eXBlLCAkc2lnbmF0dXJlKTsKLSAg
ICBteSAkY29uc3RydWN0b3IgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCRzaWdu
YXR1cmUsICRhcmd1bWVudE5hbWUpOworICAgIG15ICRwbGF0Zm9ybVR5cGUgPSAkc2VsZi0+X3Bs
YXRmb3JtVHlwZSgkdHlwZSk7CisgICAgbXkgJGNvbnN0cnVjdG9yID0gJHNlbGYtPl9wbGF0Zm9y
bVR5cGVDb25zdHJ1Y3RvcigkdHlwZSwgJGFyZ3VtZW50TmFtZSk7CiAKICAgICBteSAlbm9uUG9p
bnRlclR5cGVzID0gKAogICAgICAgICAiYm9vbCIgPT4gMSwKQEAgLTQ3MCw5ICs0NjgsNyBAQCBz
dWIgX3BsYXRmb3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRpb24KIAogc3ViIF9yZXR1cm5FeHByZXNz
aW9uCiB7Ci0gICAgbXkgKCRzZWxmLCAkc2lnbmF0dXJlLCAkZXhwcmVzc2lvbikgPSBAXzsKLQot
ICAgIG15ICRyZXR1cm5UeXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKKyAgICBteSAoJHNlbGYsICRy
ZXR1cm5UeXBlLCAkZXhwcmVzc2lvbikgPSBAXzsKIAogICAgIHJldHVybiAiSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCkiIGlmICRyZXR1cm5UeXBlLT5uYW1lIGVxICJ2b2lkIjsKICAgICBy
ZXR1cm4gIkpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCAke2V4cHJlc3Npb259KSIgaWYgJHJl
dHVyblR5cGUtPm5hbWUgZXEgImJvb2xlYW4iOwpAQCAtNDgyLDEyICs0NzgsMTIgQEAgc3ViIF9y
ZXR1cm5FeHByZXNzaW9uCiAgICAgcmV0dXJuICJ0b0pTKGNvbnRleHQsIFdURjo6Z2V0UHRyKCR7
ZXhwcmVzc2lvbn0pKSI7CiB9CiAKLXN1YiBfcGFyYW1ldGVyRXhwcmVzc2lvbgorc3ViIF9hcmd1
bWVudEV4cHJlc3Npb24KIHsKLSAgICBteSAoJHNlbGYsICRwYXJhbWV0ZXIpID0gQF87CisgICAg
bXkgKCRzZWxmLCAkYXJndW1lbnQpID0gQF87CiAKLSAgICBteSAkdHlwZSA9ICRwYXJhbWV0ZXIt
PnR5cGU7Ci0gICAgbXkgJG5hbWUgPSAkcGFyYW1ldGVyLT5uYW1lOworICAgIG15ICR0eXBlID0g
JGFyZ3VtZW50LT50eXBlOworICAgIG15ICRuYW1lID0gJGFyZ3VtZW50LT5uYW1lOwogCiAgICAg
cmV0dXJuICIke25hbWV9LmdldCgpIiBpZiAkJHNlbGZ7Y29kZUdlbmVyYXRvcn0tPklzU3RyaW5n
VHlwZSgkdHlwZSk7CiAgICAgcmV0dXJuICRuYW1lOwpAQCAtNDk3LDcgKzQ5Myw3IEBAIHN1YiBf
c2V0dGVyTmFtZQogewogICAgIG15ICgkc2VsZiwgJGF0dHJpYnV0ZSkgPSBAXzsKIAotICAgIG15
ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgIG15ICRuYW1lID0gJGF0
dHJpYnV0ZS0+bmFtZTsKIAogICAgIHJldHVybiAic2V0IiAuICQkc2VsZntjb2RlR2VuZXJhdG9y
fS0+V0tfdWNmaXJzdCgkbmFtZSk7CiB9CkBAIC01MDcsOSArNTAzLDkgQEAgc3ViIF9zdGF0aWNG
dW5jdGlvbnNHZXR0ZXJJbXBsZW1lbnRhdGlvbgogICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSkg
PSBAXzsKIAogICAgIG15ICRtYXBGdW5jdGlvbiA9IHN1YiB7Ci0gICAgICAgIG15ICRuYW1lID0g
JF8tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgbXkgJG5hbWUgPSAkXy0+bmFtZTsKICAgICAg
ICAgbXkgQGF0dHJpYnV0ZXMgPSBxdyhrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSk7Ci0gICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtIikgaWYgJF8tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07CisgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVtIikgaWYgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJE
b250RW51bSJ9OwogCiAgICAgICAgIHJldHVybiAgInsgXCIkbmFtZVwiLCAkbmFtZSwgIiAuIGpv
aW4oIiB8ICIsIEBhdHRyaWJ1dGVzKSAuICIgfSI7CiAgICAgfTsKQEAgLTU0NywxNCArNTQzLDE0
IEBAIHN1YiBfc3RhdGljVmFsdWVzR2V0dGVySW1wbGVtZW50YXRpb24KICAgICBteSAoJHNlbGYs
ICRpbnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkbWFwRnVuY3Rpb24gPSBzdWIgewotICAgICAg
ICByZXR1cm4gaWYgJF8tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW1wbGVt
ZW50YXRpb24ifTsKKyAgICAgICAgcmV0dXJuIGlmICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsi
Tm9JbXBsZW1lbnRhdGlvbiJ9OwogCi0gICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJF8tPnNp
Z25hdHVyZS0+bmFtZTsKKyAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkXy0+bmFtZTsKICAg
ICAgICAgbXkgJGdldHRlck5hbWUgPSAkc2VsZi0+X2dldHRlck5hbWUoJF8pOwogICAgICAgICBt
eSAkc2V0dGVyTmFtZSA9ICRfLT5pc1JlYWRPbmx5ID8gIjAiIDogJHNlbGYtPl9zZXR0ZXJOYW1l
KCRfKTsKICAgICAgICAgbXkgQGF0dHJpYnV0ZXMgPSBxdyhrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUpOwogICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAia0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSIpIGlmICRfLT5pc1JlYWRPbmx5OwotICAgICAgICBwdXNoKEBhdHRyaWJ1dGVz
LCAia0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJEb250RW51bSJ9OworICAgICAgICBwdXNoKEBhdHRyaWJ1dGVzLCAi
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRG9udEVudW0ifTsKIAogICAgICAgICByZXR1cm4gInsgXCIkYXR0cmlidXRlTmFtZVwiLCAk
Z2V0dGVyTmFtZSwgJHNldHRlck5hbWUsICIgLiBqb2luKCIgfCAiLCBAYXR0cmlidXRlcykgLiAi
IH0iOwogICAgIH07CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRl
c3RSdW5uZXIucG0JKHJldmlzaW9uIDIwODEyOSkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG0JKHdvcmtp
bmcgY29weSkKQEAgLTcxLDggKzcxLDYgQEAgc3ViIF9jbGFzc05hbWUKIHsKICAgICBteSAoJHR5
cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJk
b21UeXBlIjsKLQogICAgIHJldHVybiAiSlMiIC4gX2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lKCR0
eXBlKTsKIH0KIApAQCAtMTkxLDcgKzE4OSw3IEBAIEVPRgogICAgIGlmIChteSBAZnVuY3Rpb25z
ID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAi
XG4gICAgLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAo
QGZ1bmN0aW9ucykgewotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIEpT
VmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWVdfShKU0NvbnRleHRSZWYsIEpT
T2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVmW10sIEpTVmFs
dWVSZWYqKTtcbiIpOworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIEpT
VmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwg
SlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKik7XG4i
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjg1LDcgKzI4Myw3IEBAIEVPRgogICAgICAgICBm
b3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewogICAgICAgICAgICAgcHVzaChAY29u
dGVudHMsIDw8RU9GKTsKIAotSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5uYW1lXX0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09i
amVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJl
ZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorSlNWYWx1ZVJlZiAke2NsYXNz
TmFtZX06OkB7WyRmdW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAk
e2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRhdGlvbkNsYXNz
TmFtZX0oY29udGV4dCwgdGhpc09iamVjdCk7CiAgICAgaWYgKCFpbXBsKQpAQCAtMjkzLDQwICsy
OTEsNDAgQEAgSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+cwogCiBFT0YK
ICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNhbGw7Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5n
In0pIHsKLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIgLiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSAuICIoY29udGV4dCwgYXJndW1lbnRDb3VudCwgYXJndW1lbnRz
LCBleGNlcHRpb24pIjsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKKyAgICAgICAgICAgICAgICAkZnVu
Y3Rpb25DYWxsID0gImltcGwtPiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3Vt
ZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgIG15IEBwYXJhbWV0ZXJzID0gKCk7Ci0gICAgICAgICAgICAgICAgbXkg
QHNwZWNpZmllZFBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CisgICAgICAg
ICAgICAgICAgbXkgQGFyZ3VtZW50cyA9ICgpOworICAgICAgICAgICAgICAgIG15IEBzcGVjaWZp
ZWRBcmd1bWVudHMgPSBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfTsKIAotICAgICAgICAgICAgICAg
ICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+dHlwZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgICAgICAgICAgICAgICRz
ZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVuY3Rpb24tPnR5cGUp
OwogCi0gICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiUGFzc0NvbnRleHQifSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEBw
YXJhbWV0ZXJzLCAiY29udGV4dCIpOworICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29udGV4dCJ9KSB7CisgICAgICAgICAgICAgICAgICAg
IHB1c2goQGFyZ3VtZW50cywgImNvbnRleHQiKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICBmb3JlYWNoIG15ICRpICgwLi4kI3NwZWNpZmllZFBhcmFtZXRlcnMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtZXRlciA9ICRzcGVjaWZpZWRQYXJhbWV0ZXJzWyRp
XTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRpICgwLi4kI3NwZWNpZmllZEFyZ3VtZW50
cykgeworICAgICAgICAgICAgICAgICAgICBteSAkYXJndW1lbnQgPSAkc3BlY2lmaWVkQXJndW1l
bnRzWyRpXTsKIAotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwl
Y29udGVudHNJbmNsdWRlcywgJHR5cGUsICRwYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgICAg
ICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJHR5cGUpOwogCi0g
ICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICIgLiAkc2VsZi0+X3BsYXRm
b3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRpb24oJHBhcmFtZXRlciwgJHBhcmFtZXRlci0+bmFtZSwg
ImFyZ3VtZW50c1skaV0iLCAiYXJndW1lbnRDb3VudCA+ICRpIikgLiAiXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgIiAuICRzZWxmLT5fcGxhdGZvcm1UeXBl
VmFyaWFibGVEZWNsYXJhdGlvbigkYXJndW1lbnQtPnR5cGUsICRhcmd1bWVudC0+bmFtZSwgImFy
Z3VtZW50c1skaV0iLCAiYXJndW1lbnRDb3VudCA+ICRpIikgLiAiXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlcnMsICRzZWxmLT5f
cGFyYW1ldGVyRXhwcmVzc2lvbigkcGFyYW1ldGVyKSk7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQGFyZ3VtZW50cywgJHNlbGYtPl9hcmd1bWVudEV4cHJlc3Npb24oJGFyZ3VtZW50KSk7CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJpbXBs
LT4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBwYXJh
bWV0ZXJzKSAuICIpIjsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIg
LiAkZnVuY3Rpb24tPm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBwdXNoKEBjb250ZW50cywg
IiAgICAke2Z1bmN0aW9uQ2FsbH07XG5cbiIpIGlmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBl
LT5uYW1lIGVxICJ2b2lkIjsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVy
biAiIC4gJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAkZnVu
Y3Rpb25DYWxsKSAuICI7XG59XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAg
ICR7ZnVuY3Rpb25DYWxsfTtcblxuIikgaWYgJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lk
IjsKKyAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVybiAiIC4gJHNlbGYtPl9y
ZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xufVxu
Iik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobXkgQGF0dHJpYnV0ZXMgPSBAeyRpbnRl
cmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4vLyBBdHRy
aWJ1dGVzXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0cmlidXRlcykg
ewotICAgICAgICAgICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVkZXMs
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSwgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAg
ICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkYXR0
cmlidXRlLT50eXBlKTsKIAogICAgICAgICAgICAgbXkgJGdldHRlck5hbWUgPSAkc2VsZi0+X2dl
dHRlck5hbWUoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBteSAkZ2V0dGVyRXhwcmVzc2lvbiA9
ICJpbXBsLT4ke2dldHRlck5hbWV9KCkiOwpAQCAtMzM5LDcgKzMzNyw3IEBAIEpTVmFsdWVSZWYg
JHtjbGFzc05hbWV9Ojoke2dldHRlck5hbWV9KEoKICAgICBpZiAoIWltcGwpCiAgICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIHJldHVybiBAe1skc2Vs
Zi0+X3JldHVybkV4cHJlc3Npb24oJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkZ2V0dGVyRXhwcmVz
c2lvbildfTsKKyAgICByZXR1cm4gQHtbJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRhdHRyaWJ1
dGUtPnR5cGUsICRnZXR0ZXJFeHByZXNzaW9uKV19OwogfQogRU9GCiAKQEAgLTM1NCw3ICszNTIs
NyBAQCBib29sICR7Y2xhc3NOYW1lfTo6QHtbJHNlbGYtPl9zZXR0ZXJOYW1lCiAKIEVPRgogCi0g
ICAgICAgICAgICAgICAgbXkgJHBsYXRmb3JtVmFsdWUgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNv
bnN0cnVjdG9yKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAgICAgICAgICAg
ICAgbXkgJHBsYXRmb3JtVmFsdWUgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCRh
dHRyaWJ1dGUtPnR5cGUsICJ2YWx1ZSIpOwogCiAgICAgICAgICAgICAgICAgcHVzaChAY29udGVu
dHMsIDw8RU9GKTsKICAgICBpbXBsLT5Ae1skc2VsZi0+X3NldHRlck5hbWUoJGF0dHJpYnV0ZSld
fSgke3BsYXRmb3JtVmFsdWV9KTsKQEAgLTM4MywxMiArMzgxLDEyIEBAIHN1YiBfZ2V0dGVyTmFt
ZQogewogICAgIG15ICgkc2VsZiwgJGF0dHJpYnV0ZSkgPSBAXzsKIAotICAgIHJldHVybiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgcmV0dXJuICRhdHRyaWJ1dGUtPm5hbWU7CiB9
CiAKIHN1YiBfaW5jbHVkZUhlYWRlcnMKIHsKLSAgICBteSAoJHNlbGYsICRoZWFkZXJzLCAkdHlw
ZSwgJHNpZ25hdHVyZSkgPSBAXzsKKyAgICBteSAoJHNlbGYsICRoZWFkZXJzLCAkdHlwZSkgPSBA
XzsKIAogICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCAkdHlwZTsKICAgICByZXR1cm4gaWYgJHR5
cGUtPm5hbWUgZXEgImJvb2xlYW4iOwpAQCAtNDMxLDcgKzQyOSw3IEBAIHN1YiBfcGFyZW50SW50
ZXJmYWNlCiAKIHN1YiBfcGxhdGZvcm1UeXBlCiB7Ci0gICAgbXkgKCRzZWxmLCAkdHlwZSwgJHNp
Z25hdHVyZSkgPSBAXzsKKyAgICBteSAoJHNlbGYsICR0eXBlKSA9IEBfOwogCiAgICAgcmV0dXJu
IHVuZGVmIHVubGVzcyBkZWZpbmVkICR0eXBlOwogCkBAIC00NDQsOSArNDQyLDcgQEAgc3ViIF9w
bGF0Zm9ybVR5cGUKIAogc3ViIF9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3RvcgogewotICAgIG15ICgk
c2VsZiwgJHNpZ25hdHVyZSwgJGFyZ3VtZW50TmFtZSkgPSBAXzsKLQotICAgIG15ICR0eXBlID0g
JHNpZ25hdHVyZS0+dHlwZTsKKyAgICBteSAoJHNlbGYsICR0eXBlLCAkYXJndW1lbnROYW1lKSA9
IEBfOwogCiAgICAgcmV0dXJuICJKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsICRhcmd1bWVudE5h
bWUpIiBpZiAkdHlwZS0+bmFtZSBlcSAiYm9vbGVhbiI7CiAgICAgcmV0dXJuICIkYXJndW1lbnRO
YW1lIiBpZiAkdHlwZS0+bmFtZSBlcSAib2JqZWN0IjsKQEAgLTQ1NywxMCArNDUzLDEwIEBAIHN1
YiBfcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IKIAogc3ViIF9wbGF0Zm9ybVR5cGVWYXJpYWJsZURl
Y2xhcmF0aW9uCiB7Ci0gICAgbXkgKCRzZWxmLCAkc2lnbmF0dXJlLCAkdmFyaWFibGVOYW1lLCAk
YXJndW1lbnROYW1lLCAkY29uZGl0aW9uKSA9IEBfOworICAgIG15ICgkc2VsZiwgJHR5cGUsICR2
YXJpYWJsZU5hbWUsICRhcmd1bWVudE5hbWUsICRjb25kaXRpb24pID0gQF87CiAKLSAgICBteSAk
cGxhdGZvcm1UeXBlID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGUoJHNpZ25hdHVyZS0+dHlwZSwgJHNp
Z25hdHVyZSk7Ci0gICAgbXkgJGNvbnN0cnVjdG9yID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGVDb25z
dHJ1Y3Rvcigkc2lnbmF0dXJlLCAkYXJndW1lbnROYW1lKTsKKyAgICBteSAkcGxhdGZvcm1UeXBl
ID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGUoJHR5cGUpOworICAgIG15ICRjb25zdHJ1Y3RvciA9ICRz
ZWxmLT5fcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IoJHR5cGUsICRhcmd1bWVudE5hbWUpOwogCiAg
ICAgbXkgJW5vblBvaW50ZXJUeXBlcyA9ICgKICAgICAgICAgImJvb2wiID0+IDEsCkBAIC00ODUs
OSArNDgxLDcgQEAgc3ViIF9wbGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uCiAKIHN1YiBf
cmV0dXJuRXhwcmVzc2lvbgogewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwgJGV4cHJlc3Np
b24pID0gQF87Ci0KLSAgICBteSAkcmV0dXJuVHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CisgICAg
bXkgKCRzZWxmLCAkcmV0dXJuVHlwZSwgJGV4cHJlc3Npb24pID0gQF87CiAKICAgICByZXR1cm4g
IkpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAi
dm9pZCI7CiAgICAgcmV0dXJuICJKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgJHtleHByZXNz
aW9ufSkiIGlmICRyZXR1cm5UeXBlLT5uYW1lIGVxICJib29sZWFuIjsKQEAgLTQ5NywxMiArNDkx
LDEyIEBAIHN1YiBfcmV0dXJuRXhwcmVzc2lvbgogICAgIHJldHVybiAidG9KUyhjb250ZXh0LCBX
VEY6OmdldFB0cigke2V4cHJlc3Npb259KSkiOwogfQogCi1zdWIgX3BhcmFtZXRlckV4cHJlc3Np
b24KK3N1YiBfYXJndW1lbnRFeHByZXNzaW9uCiB7Ci0gICAgbXkgKCRzZWxmLCAkcGFyYW1ldGVy
KSA9IEBfOworICAgIG15ICgkc2VsZiwgJGFyZ3VtZW50KSA9IEBfOwogCi0gICAgbXkgJHR5cGUg
PSAkcGFyYW1ldGVyLT50eXBlOwotICAgIG15ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsKKyAg
ICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICBteSAkbmFtZSA9ICRhcmd1bWVudC0+
bmFtZTsKIAogICAgIHJldHVybiAiJHtuYW1lfS5nZXQoKSIgaWYgJCRzZWxme2NvZGVHZW5lcmF0
b3J9LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwogICAgIHJldHVybiAkbmFtZTsKQEAgLTUxMiw3ICs1
MDYsNyBAQCBzdWIgX3NldHRlck5hbWUKIHsKICAgICBteSAoJHNlbGYsICRhdHRyaWJ1dGUpID0g
QF87CiAKLSAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICBt
eSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAKICAgICByZXR1cm4gInNldCIgLiAkJHNlbGZ7
Y29kZUdlbmVyYXRvcn0tPldLX3VjZmlyc3QoJG5hbWUpOwogfQpAQCAtNTIyLDkgKzUxNiw5IEBA
IHN1YiBfc3RhdGljRnVuY3Rpb25zR2V0dGVySW1wbGVtZW50YXRpb24KICAgICBteSAoJHNlbGYs
ICRpbnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkbWFwRnVuY3Rpb24gPSBzdWIgewotICAgICAg
ICBteSAkbmFtZSA9ICRfLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJF8t
Pm5hbWU7CiAgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gcXcoa0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpOwotICAgICAgICBwdXNoKEBh
dHRyaWJ1dGVzLCAia0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb250RW51bSJ9OworICAgICAgICBwdXNoKEBhdHRy
aWJ1dGVzLCAia0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKIAogICAgICAgICByZXR1cm4gICJ7IFwiJG5hbWVcIiwg
JG5hbWUsICIgLiBqb2luKCIgfCAiLCBAYXR0cmlidXRlcykgLiAiIH0iOwogICAgIH07CkBAIC01
NjIsMTQgKzU1NiwxNCBAQCBzdWIgX3N0YXRpY1ZhbHVlc0dldHRlckltcGxlbWVudGF0aW9uCiAg
ICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkgJG1hcEZ1bmN0aW9uID0g
c3ViIHsKLSAgICAgICAgcmV0dXJuIGlmICRfLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJOb0ltcGxlbWVudGF0aW9uIn07CisgICAgICAgIHJldHVybiBpZiAkXy0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Ik5vSW1wbGVtZW50YXRpb24ifTsKIAotICAgICAgICBteSAkYXR0cmlidXRl
TmFtZSA9ICRfLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1lID0g
JF8tPm5hbWU7CiAgICAgICAgIG15ICRnZXR0ZXJOYW1lID0gJHNlbGYtPl9nZXR0ZXJOYW1lKCRf
KTsKICAgICAgICAgbXkgJHNldHRlck5hbWUgPSAkXy0+aXNSZWFkT25seSA/ICIwIiA6ICRzZWxm
LT5fc2V0dGVyTmFtZSgkXyk7CiAgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gcXcoa0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlKTsKICAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkiKSBpZiAkXy0+aXNSZWFkT25seTsKLSAgICAgICAgcHVz
aChAYXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+c2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKKyAgICAgICAgcHVzaChA
YXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07CiAKICAgICAgICAgcmV0dXJuICJ7IFwiJGF0dHJp
YnV0ZU5hbWVcIiwgJGdldHRlck5hbWUsICRzZXR0ZXJOYW1lLCAiIC4gam9pbigiIHwgIiwgQGF0
dHJpYnV0ZXMpIC4gIiB9IjsKICAgICB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293361</attachid>
            <date>2016-10-30 11:41:02 -0700</date>
            <delta_ts>2016-10-30 15:16:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164208-20161030113708.patch</filename>
            <type>text/plain</type>
            <size>201423</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODEyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEwLTMwICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gUmVzdHJ1Y3R1cmUgSURM
UGFyc2VyIHN0cnVjdHMgdG8gYmV0dGVyIG1hdGNoIG1vZGVybiBXZWJJTEQgY29uY2VwdHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIwOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlc3RydWN0dXJl
IElETFBhcnNlcnMgc3RydWN0cyB0byBtYXRjaCBtb2Rlcm4gV2ViSURMIGNvbnZlbnRpb25zOgor
ICAgICAgICAtIFJlbmFtZSBzdHJ1Y3RzIHRvIGhhdmUgbW9yZSBXZWJDb3JlIGxpa2UgbmFtaW5n
LCBjb25zaXN0ZW50bHkgdXNpbmcKKyAgICAgICAgICB0aGUgcHJlZml4IElETC4KKyAgICAgICAg
LSBSZW1vdmUgZG9tU2lnbmF0dXJlLiBTaW5raW5nIGl0J3MgcHJvcGVydGllcyBpbnRvIHRoZSBz
dHJ1Y3RzIHRoYXQKKyAgICAgICAgICBjb250YWluZWQgaXQuCisgICAgICAgIC0gQWRkIElETEFy
Z3VtZW50LCByZXBsYWNpbmcgdGhlIHVzZSBvZiBkb21TaWduYXR1cmVzIGZvciBhcmd1bWVudHMu
CisgICAgICAgICAgSURMQXJndW1lbnQgaXMgdGhlIHN1YnNldCBvZiBkb21TaWduYXR1cmVzIG5l
ZWRlZCBmb3IgYXJndW1lbnRzLgorICAgICAgICAtIFJlbmFtZSBkb21GdW5jdGlvbiB0byBJRExP
cGVyYXRpb24gKG1hdGNoaW5nIFdlYklMRCBub21lbmNsYXR1cmUpLAorICAgICAgICAgIHJlcGxh
Y2Ugc2lnbmF0dXJlIHdpdGggaXRzIG93biBuYW1lLCB0eXBlIChmb3IgcmV0dXJuVHlwZSksIHNw
ZWNpYWxzLAorICAgICAgICAgIGFuZCBleHRlbmRlZCBhdHRyaWJ1dGVzIHByb3BlcnRpZXMuCisg
ICAgICAgIC0gR2l2ZSBJRExBdHRyaWJ1dGUgaXQncyBvd24gbmFtZSwgdHlwZSBhbmQgZXh0ZW5k
ZWQgYXR0cmlidXRlcyBwcm9wZXJ0aWVzLgorICAgICAgICAtIEFkZCBJRExEaWN0aW9uYXJ5TWVt
YmVyLCByZXBsYWNpbmcgdGhlIHVzZSBvZiBkb21TaWduYXR1cmUgYXMgdGhlCisgICAgICAgICAg
dHlwZSBvZiBtZW1iZXJzIGluIElETERpY3Rpb25hcnkuIEdpdmUgaXQgbmFtZSwgdHlwZSwgaXNS
ZXF1aXJlZCwKKyAgICAgICAgICBkZWZhdWx0IGFuZCBleHRlbmRlZEF0dHJpYnV0ZXMgcHJvcGVy
dGllcy4KKyAgICAgICAgLSBSZW5hbWVkIFR5cGVkZWYgdG8gYmUgSURMVHlwZWRlZi4gUmVtb3Zl
IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGVzIAorICAgICAgICAgIHByb3BlcnR5IGFzIHRob3NlIGFy
ZSBub3QgYWxsb3dlZCBpbiB0eXBlZGVmcyBwZXItUGViSURMLgorCisgICAgICAgIEFsc28gZml4
IHNvbWUgcGFyc2luZyBpc3N1ZXM6CisgICAgICAgIC0gU3RvcCBwYXJzaW5nICdpbicgZGlyZWN0
aXZlcyBpbiBmdW5jdGlvbiBhcmd1bWVudHMuCisgICAgICAgIC0gU3RvcCBwYXJzaW5nIGV4dGVu
ZGVkIGF0dHJpYnV0ZXMgaW4gdHlwZWRlZnMuCisgICAgICAgIC0gU3VwcG9ydCBhcHBseWluZyB0
eXBlZGVmcyB0byB0eXBlcyBkZWVwIGluIGFnZ3JlZ2F0ZSB0eXBlcworICAgICAgICAgIChlLmcu
IChzZXF1ZW5jZTwoTE9ORyBvciBTVFJJTkcpPiBvciBET01TdHJpbmcpPykuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9JRExQYXJzZXIucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0
ZS1iaW5kaW5ncy5wbDoKKyAgICAgICAgVXBkYXRlIGZvciBuZXcgc3RydWN0IHR5cGVzLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5cGVkZWZzLmlkbDoKKyAgICAgICAg
UmVtb3ZlIHRlc3Qgd2hpY2ggdGVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgaW4gdHlwZWRlZnMs
CisgICAgICAgIGFuZCBhZGQgYSB0ZXN0IHdoaWNoIHRlc3RzIHR5cGVkZWZzIHVzZWQgaW4gZGVl
cCB0eXBlIHN0cnVjdHVyZXMuCisKKyAgICAgICAgKiBwYWdlL21ha2Vfc2V0dGluZ3MucGw6Cisg
ICAgICAgIERvbid0IGdlbmVyYXRlIHRoZSAnaW4nIHByZWZpeCBmb3IgYXJndW1lbnRzIGluIElE
TCBmaWxlcy4KKwogMjAxNi0xMC0zMCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDIwODEyOSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29y
a2luZyBjb3B5KQpAQCAtOTEsOCArOTEsNiBAQCBteSAldHlwZWRBcnJheVR5cGVzID0gKAogICAg
ICJVaW50OENsYW1wZWRBcnJheSIgPT4gMSwKICk7CiAKLW15ICVub25Qb2ludGVyVHlwZUhhc2gg
PSAoICJET01UaW1lU3RhbXAiID0+IDEgKTsKLQogbXkgJXN2Z0F0dHJpYnV0ZXNJbkhUTUxIYXNo
ID0gKAogICAgICJjbGFzcyIgPT4gMSwKICAgICAiaWQiID0+IDEsCkBAIC0yODgsMjIgKzI4Niw2
IEBAIHN1YiBGb3JBbGxQYXJlbnRzCiAgICAgJiRyZWN1cnNlKCRpbnRlcmZhY2UsICRpbnRlcmZh
Y2UpOwogfQogCi1zdWIgRmluZFN1cGVyTWV0aG9kCi17Ci0gICAgbXkgKCRvYmplY3QsICRpbnRl
cmZhY2UsICRmdW5jdGlvbk5hbWUpID0gQF87Ci0gICAgbXkgJGluZGV4ZXI7Ci0gICAgJG9iamVj
dC0+Rm9yQWxsUGFyZW50cygkaW50ZXJmYWNlLCB1bmRlZiwgc3ViIHsKLSAgICAgICAgbXkgJGN1
cnJlbnRJbnRlcmZhY2UgPSBzaGlmdDsKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7
JGN1cnJlbnRJbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSBlcSAkZnVuY3Rpb25OYW1lKSB7Ci0gICAgICAgICAgICAgICAg
JGluZGV4ZXIgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
J3BydW5lJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotICAgIHJldHVybiAk
aW5kZXhlcjsKLX0KLQogc3ViIElETEZpbGVGb3JJbnRlcmZhY2UKIHsKICAgICBteSAkb2JqZWN0
ID0gc2hpZnQ7CkBAIC0zMzIsNyArMzE0LDcgQEAgc3ViIEdldEF0dHJpYnV0ZUZyb21JbnRlcmZh
Y2UKIAogICAgIG15ICRpbnRlcmZhY2UgPSAkb2JqZWN0LT5QYXJzZUludGVyZmFjZSgkb3V0ZXJJ
bnRlcmZhY2UsICRpbnRlcmZhY2VOYW1lKTsKICAgICBmb3IgbXkgJGF0dHJpYnV0ZSAoQHskaW50
ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICByZXR1cm4gJGF0dHJpYnV0ZSBpZiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPm5hbWUgZXEgJGF0dHJpYnV0ZU5hbWU7CisgICAgICAgIHJldHVy
biAkYXR0cmlidXRlIGlmICRhdHRyaWJ1dGUtPm5hbWUgZXEgJGF0dHJpYnV0ZU5hbWU7CiAgICAg
fQogICAgIGRpZSgiQ291bGQgbm90IGZpbmQgYXR0cmlidXRlICckYXR0cmlidXRlTmFtZScgb24g
aW50ZXJmYWNlICckaW50ZXJmYWNlTmFtZScuIik7CiB9CkBAIC0zOTUsNyArMzc3LDcgQEAgc3Vi
IElzTnVtZXJpY1R5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBh
c3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3Nl
cnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVy
biAxIGlmICRpbnRlZ2VyVHlwZUhhc2h7JHR5cGUtPm5hbWV9OwogICAgIHJldHVybiAxIGlmICRm
bG9hdGluZ1BvaW50VHlwZUhhc2h7JHR5cGUtPm5hbWV9OwpAQCAtNDA2LDcgKzM4OCw3IEBAIHN1
YiBJc1N0cmluZ09yRW51bVR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAg
ICAgCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gMSBpZiAkb2JqZWN0LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwogICAgIHJldHVy
biAxIGlmICRvYmplY3QtPklzRW51bVR5cGUoJHR5cGUpOwpAQCAtNDE3LDcgKzM5OSw3IEBAIHN1
YiBJc0ludGVnZXJUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAg
YXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNz
ZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1
cm4gMSBpZiAkaW50ZWdlclR5cGVIYXNoeyR0eXBlLT5uYW1lfTsKICAgICByZXR1cm4gMDsKQEAg
LTQyNyw3ICs0MDksNyBAQCBzdWIgSXNGbG9hdGluZ1BvaW50VHlwZQogewogICAgIG15ICgkb2Jq
ZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlw
ZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkg
bmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDEgaWYgJGZsb2F0aW5nUG9pbnRUeXBlSGFzaHsk
dHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDA7CkBAIC00MzcsNyArNDE5LDcgQEAgc3ViIElzUHJp
bWl0aXZlVHlwZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2Vy
dCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgi
Tm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIDEg
aWYgJHByaW1pdGl2ZVR5cGVIYXNoeyR0eXBlLT5uYW1lfTsKICAgICByZXR1cm4gMSBpZiAkb2Jq
ZWN0LT5Jc051bWVyaWNUeXBlKCR0eXBlKTsKQEAgLTQ0OSw3ICs0MzEsNyBAQCBzdWIgSXNTdHJp
bmdUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJO
b3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3Qg
YSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBpZiAk
dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBl
cSAiVVNWU3RyaW5nIjsKQEAgLTQ2MCw3ICs0NDIsNyBAQCBzdWIgSXNFbnVtVHlwZQogewogICAg
IG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIGRlZmluZWQoJG9iamVjdC0+R2V0
RW51bUJ5VHlwZSgkdHlwZSkpOwogfQpAQCAtNDY5LDcgKzQ1MSw3IEBAIHN1YiBHZXRFbnVtQnlU
eXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3Qg
YSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0
eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICBteSAkbmFtZSA9ICR0eXBl
LT5uYW1lOwogCkBAIC01MDksNyArNDkxLDcgQEAgc3ViIElzRXh0ZXJuYWxFbnVtVHlwZQogewog
ICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzRW51bVR5
cGUoJHR5cGUpICYmIGRlZmluZWQoJGNhY2hlZEV4dGVybmFsRW51bWVyYXRpb25zLT57JHR5cGUt
Pm5hbWV9KTsKIH0KQEAgLTUxOCw3ICs1MDAsNyBAQCBzdWIgSGFzRW51bUltcGxlbWVudGF0aW9u
TmFtZU92ZXJyaWRlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNz
ZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0
KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4g
MSBpZiBleGlzdHMgJGVudW1UeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5u
YW1lfTsKICAgICByZXR1cm4gMDsKQEAgLTUyOCw3ICs1MTAsNyBAQCBzdWIgR2V0RW51bUltcGxl
bWVudGF0aW9uTmFtZU92ZXJyaWRlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwog
Ci0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7Cisg
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAg
ICByZXR1cm4gJGVudW1UeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5uYW1l
fTsKIH0KQEAgLTUzNyw3ICs1MTksNyBAQCBzdWIgR2V0RGljdGlvbmFyeUJ5VHlwZQogewogICAg
IG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgbXkgJG5hbWUgPSAkdHlwZS0+bmFtZTsKIApA
QCAtNTc2LDcgKzU1OCw3IEBAIHN1YiBJc0RpY3Rpb25hcnlUeXBlCiB7CiAgICAgbXkgKCRvYmpl
Y3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBl
KSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBu
ZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgPX4gL15bQS1aXS8gJiYgZGVm
aW5lZCgkb2JqZWN0LT5HZXREaWN0aW9uYXJ5QnlUeXBlKCR0eXBlKSk7CiB9CkBAIC01ODYsNyAr
NTY4LDcgQEAgc3ViIElzRXh0ZXJuYWxEaWN0aW9uYXJ5VHlwZQogewogICAgIG15ICgkb2JqZWN0
LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkg
bmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUg
IklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzRGljdGlvbmFyeVR5cGUoJHR5cGUp
ICYmIGRlZmluZWQoJGNhY2hlZEV4dGVybmFsRGljdGlvbmFyaWVzLT57JHR5cGUtPm5hbWV9KTsK
IH0KQEAgLTU5NSw3ICs1NzcsNyBAQCBzdWIgSGFzRGljdGlvbmFyeUltcGxlbWVudGF0aW9uTmFt
ZU92ZXJyCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJO
b3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3Qg
YSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAgICByZXR1cm4gMSBpZiBl
eGlzdHMgJGRpY3Rpb25hcnlUeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0eXBlLT5u
YW1lfTsKICAgICByZXR1cm4gMDsKQEAgLTYwNSw3ICs1ODcsNyBAQCBzdWIgR2V0RGljdGlvbmFy
eUltcGxlbWVudGF0aW9uTmFtZU92ZXJyCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBf
OwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gJGRpY3Rpb25hcnlUeXBlSW1wbGVtZW50YXRpb25OYW1lT3ZlcnJpZGVzeyR0
eXBlLT5uYW1lfTsKIH0KQEAgLTYxNCw5ICs1OTYsOCBAQCBzdWIgSXNOb25Qb2ludGVyVHlwZQog
ewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCi0gICAgcmV0dXJuIDEgaWYgJG5vblBvaW50
ZXJUeXBlSGFzaHskdHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+SXNQcmlt
aXRpdmVUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTYyNSw3ICs2MDYsNyBAQCBz
dWIgSXNTVkdUeXBlTmVlZGluZ1RlYXJPZmYKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0g
QF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBl
IjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsK
IAogICAgIHJldHVybiAxIGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0eXBlLT5u
YW1lfTsKICAgICByZXR1cm4gMDsKQEAgLTYzNSw3ICs2MTYsNyBAQCBzdWIgSXNTVkdUeXBlV2l0
aFdyaXRhYmxlUHJvcGVydGllc05lZWRpCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBf
OwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7
CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAK
ICAgICByZXR1cm4gMSBpZiAkc3ZnVHlwZVdpdGhXcml0YWJsZVByb3BlcnRpZXNOZWVkaW5nVGVh
ck9mZnskdHlwZS0+bmFtZX07CiAgICAgcmV0dXJuIDA7CkBAIC02NDUsNyArNjI2LDcgQEAgc3Vi
IElzVHlwZWRBcnJheVR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAg
ICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBh
c3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJl
dHVybiAxIGlmICR0eXBlZEFycmF5VHlwZXN7JHR5cGUtPm5hbWV9OwogICAgIHJldHVybiAwOwpA
QCAtNjU1LDcgKzYzNiw3IEBAIHN1YiBJc1JlZlB0clR5cGUKIHsKICAgICBteSAoJG9iamVjdCwg
JHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5l
ICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJ
RExUeXBlIjsKIAogICAgIHJldHVybiAwIGlmICRvYmplY3QtPklzUHJpbWl0aXZlVHlwZSgkdHlw
ZSk7CiAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNEaWN0aW9uYXJ5VHlwZSgkdHlwZSk7CkBA
IC02NzEsNyArNjUyLDcgQEAgc3ViIEdldFNWR1R5cGVOZWVkaW5nVGVhck9mZgogewogICAgIG15
ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJl
ZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigk
dHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRzdmdUeXBlTmVlZGluZ1RlYXJPZmZ7
JHR5cGUtPm5hbWV9IGlmIGV4aXN0cyAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmeyR0eXBlLT5uYW1l
fTsKICAgICByZXR1cm4gdW5kZWY7CkBAIC02ODEsNyArNjYyLDcgQEAgc3ViIEdldFNWR1dyYXBw
ZWRUeXBlTmVlZGluZ1RlYXJPZmYKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAK
LSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAg
ICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAg
IG15ICRzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPSAkb2JqZWN0LT5HZXRTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJHR5cGUpOwogICAgIHJldHVybiAkc3ZnVHlwZU5lZWRpbmdUZWFyT2ZmIGlmIG5vdCAk
c3ZnVHlwZU5lZWRpbmdUZWFyT2ZmOwpAQCAtNzExLDcgKzY5Miw3IEBAIHN1YiBJc1NWR0FuaW1h
dGVkVHlwZQogewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgi
Tm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90
IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmpl
Y3QtPklzU1ZHQW5pbWF0ZWRUeXBlTmFtZSgkdHlwZS0+bmFtZSk7CiB9CkBAIC03MjAsNyArNzAx
LDcgQEAgc3ViIElzQ29uc3RydWN0b3JUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9
IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlw
ZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7
CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgPX4gL0NvbnN0cnVjdG9yJC87CiB9CkBAIC03Mjks
NyArNzEwLDcgQEAgc3ViIElzU2VxdWVuY2VUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBl
KSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9t
VHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlw
ZSI7CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgInNlcXVlbmNlIjsKIH0KQEAgLTczOCw3
ICs3MTksNyBAQCBzdWIgR2V0U2VxdWVuY2VJbm5lclR5cGUKIHsKICAgICBteSAoJG9iamVjdCwg
JHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5l
ICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJ
RExUeXBlIjsKIAogICAgIHJldHVybiBAeyR0eXBlLT5zdWJ0eXBlc31bMF07CiB9CkBAIC03NDcs
NyArNzI4LDcgQEAgc3ViIElzRnJvemVuQXJyYXlUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0
eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAi
ZG9tVHlwZSI7CisgICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURM
VHlwZSI7CiAKICAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgIkZyb3plbkFycmF5IjsKIH0KQEAg
LTc1Niw3ICs3MzcsNyBAQCBzdWIgR2V0RnJvemVuQXJyYXlJbm5lclR5cGUKIHsKICAgICBteSAo
JG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYo
JHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5
cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiBAeyR0eXBlLT5zdWJ0eXBlc31bMF07CiB9
CkBAIC03NjUsNyArNzQ2LDcgQEAgc3ViIElzU2VxdWVuY2VPckZyb3plbkFycmF5VHlwZQogewog
ICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIpIGlm
IHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRvYmplY3QtPklzU2VxdWVu
Y2VUeXBlKCR0eXBlKSB8fCAkb2JqZWN0LT5Jc0Zyb3plbkFycmF5VHlwZSgkdHlwZSk7CiB9CkBA
IC03NzQsNyArNzU1LDcgQEAgc3ViIEdldFNlcXVlbmNlT3JGcm96ZW5BcnJheUlubmVyVHlwZQog
ewogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlwZSIp
IGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuIEB7JHR5cGUtPnN1YnR5
cGVzfVswXTsKIH0KQEAgLTg1Myw3ICs4MzQsNyBAQCBzdWIgTGlua092ZXJsb2FkZWRGdW5jdGlv
bnMKIAogICAgIG15ICVuYW1lVG9GdW5jdGlvbnNNYXAgPSAoKTsKICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIG15ICRuYW1lID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9u
LT5uYW1lOwogICAgICAgICAkbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfSA9IFtdIGlmICFleGlz
dHMgJG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX07CiAgICAgICAgIHB1c2goQHskbmFtZVRvRnVu
Y3Rpb25zTWFweyRuYW1lfX0sICRmdW5jdGlvbik7CiAgICAgICAgICRmdW5jdGlvbi0+e292ZXJs
b2Fkc30gPSAkbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfTsKQEAgLTg3MiwxMSArODUzLDExIEBA
IHN1YiBBdHRyaWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyCiB7CiAgICAgbXkgKCRnZW5lcmF0
b3IsICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZTsKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9KSB7Ci0gICAgICAgICRhdHRyaWJ1dGVO
YW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRBcyJ9OworICAgIG15ICRhdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKKyAg
ICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQXMifSkg
eworICAgICAgICAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEFzIn07CiAgICAgfQotICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlOworICAgIG15ICRhdHRyaWJ1dGVUeXBlID0gJGF0dHJp
YnV0ZS0+dHlwZTsKIAogICAgICMgU1ZHIGFuaW1hdGVkIHR5cGVzIG5lZWQgdG8gdXNlIGEgc3Bl
Y2lhbCBhdHRyaWJ1dGUgbmFtZS4KICAgICAjIFRoZSByZXN0IG9mIHRoZSBzcGVjaWFsIGNhc2lu
ZyBmb3IgU1ZHIGFuaW1hdGVkIHR5cGVzIGlzIGhhbmRsZWQgaW4gdGhlIGxhbmd1YWdlLXNwZWNp
ZmljIGNvZGUgZ2VuZXJhdG9ycy4KQEAgLTg4OSw3ICs4NzAsNyBAQCBzdWIgQ29udGVudEF0dHJp
YnV0ZU5hbWUKIHsKICAgICBteSAoJGdlbmVyYXRvciwgJGltcGxJbmNsdWRlcywgJGludGVyZmFj
ZU5hbWUsICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICBteSAkY29udGVudEF0dHJpYnV0ZU5hbWUg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In07
CisgICAgbXkgJGNvbnRlbnRBdHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IlJlZmxlY3QifTsKICAgICByZXR1cm4gdW5kZWYgaWYgISRjb250ZW50QXR0cmli
dXRlTmFtZTsKIAogICAgICRjb250ZW50QXR0cmlidXRlTmFtZSA9IGxjICRnZW5lcmF0b3ItPkF0
dHJpYnV0ZU5hbWVGb3JHZXR0ZXJBbmRTZXR0ZXIoJGF0dHJpYnV0ZSkgaWYgJGNvbnRlbnRBdHRy
aWJ1dGVOYW1lIGVxICJWQUxVRV9JU19NSVNTSU5HIjsKQEAgLTkxMCwxMCArODkxLDEwIEBAIHN1
YiBHZXR0ZXJFeHByZXNzaW9uCiAgICAgICAgIHJldHVybiAoJGdlbmVyYXRvci0+V0tfbGNmaXJz
dCgkZ2VuZXJhdG9yLT5BdHRyaWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyKCRhdHRyaWJ1dGUp
KSk7CiAgICAgfQogCi0gICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPnR5cGU7CisgICAgbXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT50eXBlOwogCiAg
ICAgbXkgJGZ1bmN0aW9uTmFtZTsKLSAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiVVJMIn0pIHsKKyAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IlVSTCJ9KSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiZ2V0VVJMQXR0
cmlidXRlIjsKICAgICB9IGVsc2lmICgkYXR0cmlidXRlVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiIp
IHsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJoYXNBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uIjsKQEAgLTk0OCw3ICs5MjksNyBAQCBzdWIgU2V0dGVyRXhwcmVzc2lvbgogICAgICAg
ICByZXR1cm4gKCJzZXQiIC4gJGdlbmVyYXRvci0+V0tfdWNmaXJzdCgkZ2VuZXJhdG9yLT5BdHRy
aWJ1dGVOYW1lRm9yR2V0dGVyQW5kU2V0dGVyKCRhdHRyaWJ1dGUpKSk7CiAgICAgfQogCi0gICAg
bXkgJGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgbXkg
JGF0dHJpYnV0ZVR5cGUgPSAkYXR0cmlidXRlLT50eXBlOwogCiAgICAgbXkgJGZ1bmN0aW9uTmFt
ZTsKICAgICBpZiAoJGF0dHJpYnV0ZVR5cGUtPm5hbWUgZXEgImJvb2xlYW4iKSB7CkBAIC05NzAs
NyArOTUxLDcgQEAgc3ViIElzV3JhcHBlclR5cGUKIHsKICAgICBteSAoJG9iamVjdCwgJHR5cGUp
ID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21U
eXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBl
IjsKIAogICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc1JlZlB0clR5cGUoJHR5cGUpOwogICAg
IHJldHVybiAwIGlmICRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpOwpAQCAtMTAxNyw3
ICs5OTgsNyBAQCBzdWIgQ29tcHV0ZUlzQ2FsbGJhY2tJbnRlcmZhY2UKIHsKICAgICBteSAoJG9i
amVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5
cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUp
IG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiAwIHVubGVzcyAkb2JqZWN0LT5Jc1dyYXBwZXJU
eXBlKCR0eXBlKTsKIApAQCAtMTA0Miw3ICsxMDIzLDcgQEAgc3ViIElzQ2FsbGJhY2tJbnRlcmZh
Y2UKIAogICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKIAotICAgIGFzc2VydCgiTm90IGEg
dHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgImRvbVR5cGUiOworICAgIGFzc2VydCgiTm90IGEgdHlw
ZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOwogCiAgICAgcmV0dXJuICRpc0NhbGxiYWNr
SW50ZXJmYWNleyR0eXBlLT5uYW1lfSBpZiBleGlzdHMgJGlzQ2FsbGJhY2tJbnRlcmZhY2V7JHR5
cGUtPm5hbWV9OwogICAgIG15ICRyZXN1bHQgPSAkb2JqZWN0LT5Db21wdXRlSXNDYWxsYmFja0lu
dGVyZmFjZSgkdHlwZSk7CkBAIC0xMDU3LDcgKzEwMzgsNyBAQCBzdWIgQ29tcHV0ZUlzRnVuY3Rp
b25Pbmx5Q2FsbGJhY2tJbnRlcmZhCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwog
Ci0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7Cisg
ICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYgcmVmKCR0eXBlKSBuZSAiSURMVHlwZSI7CiAKICAg
ICByZXR1cm4gMCB1bmxlc3MgJG9iamVjdC0+SXNDYWxsYmFja0ludGVyZmFjZSgkdHlwZSk7CiAK
QEAgLTEwOTUsNyArMTA3Niw3IEBAIHN1YiBJc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNl
CiAKICAgICBteSAoJG9iamVjdCwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5
cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUi
KSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIHJldHVybiAkaXNGdW5jdGlvbk9u
bHlDYWxsYmFja0ludGVyZmFjZXskdHlwZS0+bmFtZX0gaWYgZXhpc3RzICRpc0Z1bmN0aW9uT25s
eUNhbGxiYWNrSW50ZXJmYWNleyR0eXBlLT5uYW1lfTsKICAgICBteSAkcmVzdWx0ID0gJG9iamVj
dC0+Q29tcHV0ZUlzRnVuY3Rpb25Pbmx5Q2FsbGJhY2tJbnRlcmZhY2UoJHR5cGUpOwpAQCAtMTIy
MCwxMiArMTIwMSwxMSBAQCBzdWIgSW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZQogCiBzdWIgU2hv
dWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZQogewotICAgIG15ICgkb2JqZWN0LCAkcGFyYW1ldGVy
LCAkaW50ZXJmYWNlKSA9IEBfOworICAgIG15ICgkb2JqZWN0LCAkYXJndW1lbnQpID0gQF87CiAK
LSAgICByZXR1cm4gMCBpZiAkcGFyYW1ldGVyLT5pc1ZhcmlhZGljOwotICAgIHJldHVybiAwIGlm
ICRwYXJhbWV0ZXItPnR5cGUtPmlzTnVsbGFibGU7Ci0gICAgcmV0dXJuIDAgaWYgISRvYmplY3Qt
PklzV3JhcHBlclR5cGUoJHBhcmFtZXRlci0+dHlwZSkgJiYgISRvYmplY3QtPklzVHlwZWRBcnJh
eVR5cGUoJHBhcmFtZXRlci0+dHlwZSk7Ci0gICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNTVkdU
eXBlTmVlZGluZ1RlYXJPZmYoJHBhcmFtZXRlci0+dHlwZSk7CisgICAgcmV0dXJuIDAgaWYgJGFy
Z3VtZW50LT50eXBlLT5pc051bGxhYmxlOworICAgIHJldHVybiAwIGlmICEkb2JqZWN0LT5Jc1dy
YXBwZXJUeXBlKCRhcmd1bWVudC0+dHlwZSkgJiYgISRvYmplY3QtPklzVHlwZWRBcnJheVR5cGUo
JGFyZ3VtZW50LT50eXBlKTsKKyAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5Jc1NWR1R5cGVOZWVk
aW5nVGVhck9mZigkYXJndW1lbnQtPnR5cGUpOwogCiAgICAgcmV0dXJuIDE7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bQkocmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE3MywxOSArMTczLDE5IEBAIHN1
YiBBZGRTdHJpbmdpZmllck9wZXJhdGlvbklmTmVlZGVkCiAgICAgZm9yZWFjaCBteSAkYXR0cmli
dXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIG5leHQgdW5sZXNzICRh
dHRyaWJ1dGUtPmlzU3RyaW5naWZpZXI7CiAKLSAgICAgICAgbXkgJHN0cmluZ2lmaWVyID0gZG9t
RnVuY3Rpb24tPm5ldygpOwotICAgICAgICAkc3RyaW5naWZpZXItPnNpZ25hdHVyZShkb21TaWdu
YXR1cmUtPm5ldygpKTsKKyAgICAgICAgbXkgJHN0cmluZ2lmaWVyID0gSURMT3BlcmF0aW9uLT5u
ZXcoKTsKKyAgICAgICAgJHN0cmluZ2lmaWVyLT5uYW1lKCJ0b1N0cmluZyIpOworCiAgICAgICAg
IG15ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QgPSB7fTsKLSAgICAgICAgJGV4dGVuZGVkQXR0cmli
dXRlTGlzdC0+e0ltcGxlbWVudGVkQXN9ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwot
ICAgICAgICAkc3RyaW5naWZpZXItPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICAkc3RyaW5naWZpZXItPnNpZ25hdHVyZS0+bmFt
ZSgidG9TdHJpbmciKTsKLSAgICAgICAgZGllICJzdHJpbmdpZmllciBjYW4gb25seSBiZSB1c2Vk
IG9uIGF0dHJpYnV0ZXMgb2YgU3RyaW5nIHR5cGVzIiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPklz
U3RyaW5nVHlwZSgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOworICAgICAgICAkZXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0LT57SW1wbGVtZW50ZWRBc30gPSAkYXR0cmlidXRlLT5uYW1lOworICAg
ICAgICAkc3RyaW5naWZpZXItPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKKyAgICAgICAgZGllICJzdHJpbmdpZmllciBjYW4gb25seSBiZSB1c2VkIG9uIGF0dHJp
YnV0ZXMgb2YgU3RyaW5nIHR5cGVzIiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlw
ZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICAgICAgCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hv
dWxkIHVzZSBJRExQYXJzZXIncyBjbG9uZVR5cGUuCi0gICAgICAgIG15ICR0eXBlID0gZG9tVHlw
ZS0+bmV3KCk7Ci0gICAgICAgICR0eXBlLT5uYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlw
ZS0+bmFtZSk7CisgICAgICAgIG15ICR0eXBlID0gSURMVHlwZS0+bmV3KCk7CisgICAgICAgICR0
eXBlLT5uYW1lKCRhdHRyaWJ1dGUtPnR5cGUtPm5hbWUpOwogCi0gICAgICAgICRzdHJpbmdpZmll
ci0+c2lnbmF0dXJlLT50eXBlKCR0eXBlKTsKKyAgICAgICAgJHN0cmluZ2lmaWVyLT50eXBlKCR0
eXBlKTsKIAogICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgJHN0cmluZ2lm
aWVyKTsKICAgICAgICAgbGFzdDsKQEAgLTE5NSw3ICsxOTUsNyBAQCBzdWIgQWRkU3RyaW5naWZp
ZXJPcGVyYXRpb25JZk5lZWRlZAogc3ViIEV2ZW50SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZQog
ewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKLSAgICBteSAkZXZlbnRUeXBlID0gJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgbXkgJGV2ZW50VHlwZSA9ICRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRhdHRyaWJ1dGUtPm5h
bWU7CiAKICAgICAjIFJlbW92ZSB0aGUgIm9uIiBwcmVmaXguCiAgICAgJGV2ZW50VHlwZSA9IHN1
YnN0cigkZXZlbnRUeXBlLCAyKTsKQEAgLTMwOCw3ICszMDgsNyBAQCBzdWIgQWRkVG9JbXBsSW5j
bHVkZXMKIHN1YiBJc1JlYWRvbmx5CiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwotICAg
IHJldHVybiAkYXR0cmlidXRlLT5pc1JlYWRPbmx5ICYmICEkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcGxhY2VhYmxlfSAmJiAhJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdXRGb3J3YXJkc307CisgICAgcmV0dXJuICRhdHRy
aWJ1dGUtPmlzUmVhZE9ubHkgJiYgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Jl
cGxhY2VhYmxlfSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHV0Rm9yd2Fy
ZHN9OwogfQogCiBzdWIgQWRkQ2xhc3NGb3J3YXJkSWZOZWVkZWQKQEAgLTM4Miw3ICszODIsNyBA
QCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5CiAgICAgICAgICMgd2hlcmUgdGhl
IGluZGV4IGlzIG91dCBvZiByYW5nZS4KICAgICAgICAgCiAgICAgICAgICMgRklYTUU6IFNob3Vs
ZCB0aGlzIHdvcmsgZm9yIGFsbCBzdHJpbmcgdHlwZXM/Ci0gICAgICAgIGlmICgkaW5kZXhlZEdl
dHRlckZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIpIHsKKyAg
ICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmlu
ZyIpIHsKICAgICAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYg
KG9wdGlvbmFsSW5kZXgpIHtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVz
aChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICBpZiAob3B0aW9uYWxJbmRleCAmJiBvcHRp
b25hbEluZGV4LnZhbHVlKCkgPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHtcbiIp
OwpAQCAtNTM3LDE4ICs1MzcsMTggQEAgc3ViIEdldEF0dHJpYnV0ZUdldHRlck5hbWUKIHsKICAg
ICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSkgPSBAXzsKIAotICAgIHJl
dHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3Rv
ciIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5h
bWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOworICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+
V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdlbmVyYXRvci0+
V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKSBpZiAkYXR0cmlidXRlLT5pc1N0YXRpYzsKICAg
ICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRhdHRyaWJ1dGUp
IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwotICAgIHJldHVybiAianMi
IC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgLiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0
b3JUeXBlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSkgPyAiQ29uc3RydWN0b3IiIDogIiIp
OworICAgIHJldHVybiAianMiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJh
dG9yLT5XS191Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpIC4gKCRjb2RlR2VuZXJhdG9yLT5Jc0Nv
bnN0cnVjdG9yVHlwZSgkYXR0cmlidXRlLT50eXBlKSA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CiB9
CiAKIHN1YiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpID0gQF87CiAKLSAgICByZXR1cm4gInNldCIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkY2xhc3NOYW1lKSAuICJDb25zdHJ1Y3RvciIgLiAkY29kZUdl
bmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWUpIGlmICRhdHRy
aWJ1dGUtPmlzU3RhdGljOworICAgIHJldHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRjbGFzc05hbWUpIC4gIkNvbnN0cnVjdG9yIiAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRhdHRyaWJ1dGUtPm5hbWUpIGlmICRhdHRyaWJ1dGUtPmlzU3RhdGljOwogICAgIHJl
dHVybiAic2V0IiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KEdldEpTQnVpbHRpbkZ1bmN0
aW9uTmFtZSgkY2xhc3NOYW1lLCAkYXR0cmlidXRlKSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFj
ZSwgJGF0dHJpYnV0ZSk7Ci0gICAgcmV0dXJuICJzZXRKUyIgLiAkaW50ZXJmYWNlLT50eXBlLT5u
YW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lKSAuICgkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+c2ln
bmF0dXJlLT50eXBlKSA/ICJDb25zdHJ1Y3RvciIgOiAiIik7CisgICAgcmV0dXJuICJzZXRKUyIg
LiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0
dHJpYnV0ZS0+bmFtZSkgLiAoJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRy
aWJ1dGUtPnR5cGUpID8gIkNvbnN0cnVjdG9yIiA6ICIiKTsKIH0KIAogc3ViIEdldEZ1bmN0aW9u
TmFtZQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHN1YiBHZXRGdW5jdGlvbk5hbWUKIAogICAgIHJldHVy
biBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWUoJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSBpZiBJc0pT
QnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwogCi0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkZnVu
Y3Rpb24tPm5hbWU7CiAgICAgJGZ1bmN0aW9uTmFtZSA9ICJTeW1ib2xJdGVyYXRvciIgaWYgJGZ1
bmN0aW9uTmFtZSBlcSAiW1N5bWJvbC5JdGVyYXRvcl0iOwogCiAgICAgbXkgJGtpbmQgPSAkZnVu
Y3Rpb24tPmlzU3RhdGljID8gIkNvbnN0cnVjdG9yIiA6IChPcGVyYXRpb25TaG91bGRCZU9uSW5z
dGFuY2UoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSA/ICJJbnN0YW5jZSIgOiAiUHJvdG90eXBlIik7
CkBAIC01NzIsMTAgKzU3MiwxMCBAQCBzdWIgR2V0U3BlY2lhbEFjY2Vzc29yRnVuY3Rpb25Gb3JU
eXBlCiAgICAgbXkgJG51bWJlck9mUGFyYW1ldGVycyA9IHNoaWZ0OwogCiAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgQHskaW50ZXJmYWNlLT5hbm9u
eW1vdXNGdW5jdGlvbnN9KSB7Ci0gICAgICAgIG15ICRzcGVjaWFscyA9ICRmdW5jdGlvbi0+c2ln
bmF0dXJlLT5zcGVjaWFsczsKKyAgICAgICAgbXkgJHNwZWNpYWxzID0gJGZ1bmN0aW9uLT5zcGVj
aWFsczsKICAgICAgICAgbXkgJHNwZWNpYWxFeGlzdHMgPSBncmVwIHsgJF8gZXEgJHNwZWNpYWwg
fSBAJHNwZWNpYWxzOwotICAgICAgICBteSAkcGFyYW1ldGVycyA9ICRmdW5jdGlvbi0+cGFyYW1l
dGVyczsKLSAgICAgICAgaWYgKCRzcGVjaWFsRXhpc3RzIGFuZCBzY2FsYXIoQCRwYXJhbWV0ZXJz
KSA9PSAkbnVtYmVyT2ZQYXJhbWV0ZXJzIGFuZCAkcGFyYW1ldGVycy0+WzBdLT50eXBlLT5uYW1l
IGVxICRmaXJzdFBhcmFtZXRlclR5cGUpIHsKKyAgICAgICAgbXkgJGFyZ3VtZW50cyA9ICRmdW5j
dGlvbi0+YXJndW1lbnRzOworICAgICAgICBpZiAoJHNwZWNpYWxFeGlzdHMgYW5kIHNjYWxhcihA
JGFyZ3VtZW50cykgPT0gJG51bWJlck9mUGFyYW1ldGVycyBhbmQgJGFyZ3VtZW50cy0+WzBdLT50
eXBlLT5uYW1lIGVxICRmaXJzdFBhcmFtZXRlclR5cGUpIHsKICAgICAgICAgICAgIHJldHVybiAk
ZnVuY3Rpb247CiAgICAgICAgIH0KICAgICB9CkBAIC02MTUsMTggKzYxNSwxOCBAQCBzdWIgQXR0
cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlCiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwogCiAg
ICAgIyBGSVhNRTogVGhlIGJpbmRpbmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRp
bmcgcnVudGltZS1lbmFibGVkIGF0dHJpYnV0ZXMgb24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0
IGZvciBnbG9iYWwgb2JqZWN0cykuCi0gICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSAmJiAhSXNET01HbG9i
YWxPYmplY3QoJGludGVyZmFjZSk7CisgICAgcmV0dXJuIDAgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0gJiYgIUlzRE9NR2xvYmFsT2JqZWN0KCRp
bnRlcmZhY2UpOwogCiAgICAgcmV0dXJuIDEgaWYgSW50ZXJmYWNlUmVxdWlyZXNBdHRyaWJ1dGVz
T25JbnN0YW5jZSgkaW50ZXJmYWNlKTsKLSAgICByZXR1cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+
SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlKTsKKyAgICByZXR1
cm4gMSBpZiAkY29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlw
ZSk7CiAKICAgICAjIFtVbmZvcmdlYWJsZV0gYXR0cmlidXRlcyBzaG91bGQgYmUgb24gdGhlIGlu
c3RhbmNlLgogICAgICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFi
bGUKICAgICByZXR1cm4gMSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
OwogCiAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJp
dHl9KSB7Ci0gICAgICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fTsKLSAgICAgICAgcmV0dXJuIDAgaWYg
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2Vj
dXJpdHlPbkdldHRlcn07CisgICAgICAgIHJldHVybiAwIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eX07CisgICAgICAgIHJldHVybiAwIGlmICRh
dHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVy
fTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCkBAIC02NDMsNyArNjQzLDcgQEAgc3ViIE9w
ZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZQogICAgIHJldHVybiAxIGlmIElzRE9NR2xvYmFsT2Jq
ZWN0KCRpbnRlcmZhY2UpICYmICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgbmUgIldvcmtlckdsb2Jh
bFNjb3BlIjsKIAogICAgICMgRklYTUU6IFRoZSBiaW5kaW5ncyBnZW5lcmF0b3IgZG9lcyBub3Qg
c3VwcG9ydCBwdXR0aW5nIHJ1bnRpbWUtZW5hYmxlZCBvcGVyYXRpb25zIG9uIHRoZSBpbnN0YW5j
ZSB5ZXQgKGV4Y2VwdCBmb3IgZ2xvYmFsIG9iamVjdHMpLgotICAgIHJldHVybiAwIGlmICRmdW5j
dGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfTsK
KyAgICByZXR1cm4gMCBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRB
dFJ1bnRpbWV9OwogCiAgICAgIyBbVW5mb3JnZWFibGVdIG9wZXJhdGlvbnMgc2hvdWxkIGJlIG9u
IHRoZSBpbnN0YW5jZS4gaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jVW5mb3JnZWFi
bGUKICAgICByZXR1cm4gMSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7
CkBAIC02NjAsMTEgKzY2MCwxMSBAQCBzdWIgR2V0SlNDQXR0cmlidXRlc0ZvckF0dHJpYnV0ZQog
ICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFibGUoJGludGVy
ZmFjZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAjIEFzIHBlciBXZWIgSURMIHNwZWNpZmljYXRpb24s
IGNvbnN0cnVjdG9yIHByb3BlcnRpZXMgb24gdGhlIEVDTUFTY3JpcHQgZ2xvYmFsIG9iamVjdCBz
aG91bGQgbm90IGJlIGVudW1lcmFibGUuCi0gICAgbXkgJGlzR2xvYmFsQ29uc3RydWN0b3IgPSAk
Y29kZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50
eXBlKTsKLSAgICBwdXNoKEBzcGVjaWFscywgIkRvbnRFbnVtIikgaWYgKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX0gfHwgJGlzR2xvYmFs
Q29uc3RydWN0b3IpOworICAgIG15ICRpc0dsb2JhbENvbnN0cnVjdG9yID0gJGNvZGVHZW5lcmF0
b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOworICAgIHB1c2goQHNwZWNp
YWxzLCAiRG9udEVudW0iKSBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90
RW51bWVyYWJsZX0gfHwgJGlzR2xvYmFsQ29uc3RydWN0b3IpOwogICAgIHB1c2goQHNwZWNpYWxz
LCAiUmVhZE9ubHkiKSBpZiBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpOwogICAgIHB1c2goQHNwZWNp
YWxzLCAiQ3VzdG9tQWNjZXNzb3IiKSB1bmxlc3MgJGlzR2xvYmFsQ29uc3RydWN0b3Igb3IgSXNK
U0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7Ci0gICAgcHVzaChAc3BlY2lhbHMsICJE
T01KSVRBdHRyaWJ1dGUiKSBpZiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJET01KSVQifTsKKyAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEF0dHJpYnV0ZSIp
IGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKICAgICBwdXNo
KEBzcGVjaWFscywgIkFjY2Vzc29yIHwgQnVpbHRpbiIpIGlmICBJc0pTQnVpbHRpbigkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKTsKICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwg
IiwgQHNwZWNpYWxzKSA6ICIwIjsKIH0KQEAgLTg0MCw3ICs4NDAsNyBAQCBzdWIgR2V0RW51bWVy
YXRpb25DbGFzc05hbWUKIHsKICAgICBteSAoJHR5cGUsICRpbnRlcmZhY2UpID0gQF87CiAKLSAg
ICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBh
c3NlcnQoIk5vdCBhIHR5cGUiKSBpZiByZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SGFzRW51bUltcGxlbWVudGF0aW9uTmFtZU92ZXJyaWRlKCR0eXBl
KSkgewogICAgICAgICByZXR1cm4gJGNvZGVHZW5lcmF0b3ItPkdldEVudW1JbXBsZW1lbnRhdGlv
bk5hbWVPdmVycmlkZSgkdHlwZSk7CkBAIC0xMDQ0LDMxICsxMDQ0LDI5IEBAIHN1YiBHZXREaWN0
aW9uYXJ5Q2xhc3NOYW1lCiAKIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogewotICAgIG15ICgk
aW50ZXJmYWNlLCAkc2lnbmF0dXJlKSA9IEBfOwotCi0gICAgbXkgJGRlZmF1bHRWYWx1ZSA9ICRz
aWduYXR1cmUtPmRlZmF1bHQ7CisgICAgbXkgKCRpbnRlcmZhY2UsICR0eXBlLCAkZGVmYXVsdFZh
bHVlKSA9IEBfOwogCi0gICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCRzaWduYXR1
cmUtPnR5cGUpKSB7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkg
ewogICAgICAgICAjIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIHJlcG9ydCBhbiBlcnJvciBpZiB0
aGUgdmFsdWUgZG9lcyBub3QgaGF2ZSBxdW90ZSBtYXJrcyBhcm91bmQgaXQuCiAgICAgICAgICMg
RklYTUU6IFdvdWxkIGJlIG5pY2UgdG8gcmVwb3J0IGFuIGVycm9yIGlmIHRoZSB2YWx1ZSBpcyBu
b3Qgb25lIG9mIHRoZSBlbnVtZXJhdGlvbiB2YWx1ZXMuCi0gICAgICAgIG15ICRjbGFzc05hbWUg
PSBHZXRFbnVtZXJhdGlvbkNsYXNzTmFtZSgkc2lnbmF0dXJlLT50eXBlLCAkaW50ZXJmYWNlKTsK
KyAgICAgICAgbXkgJGNsYXNzTmFtZSA9IEdldEVudW1lcmF0aW9uQ2xhc3NOYW1lKCR0eXBlLCAk
aW50ZXJmYWNlKTsKICAgICAgICAgbXkgJGVudW1lcmF0aW9uVmFsdWVOYW1lID0gR2V0RW51bWVy
YXRpb25WYWx1ZU5hbWUoc3Vic3RyKCRkZWZhdWx0VmFsdWUsIDEsIC0xKSk7CiAgICAgICAgIHJl
dHVybiAkY2xhc3NOYW1lIC4gIjo6IiAuICRlbnVtZXJhdGlvblZhbHVlTmFtZTsKICAgICB9CiAg
ICAgaWYgKCRkZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7Ci0gICAgICAgIGlmICgkc2lnbmF0dXJl
LT50eXBlLT5pc1VuaW9uKSB7Ci0gICAgICAgICAgICByZXR1cm4gIk51bGxvcHQiIGlmICRzaWdu
YXR1cmUtPnR5cGUtPmlzTnVsbGFibGU7CisgICAgICAgIGlmICgkdHlwZS0+aXNVbmlvbikgewor
ICAgICAgICAgICAgcmV0dXJuICJOdWxsb3B0IiBpZiAkdHlwZS0+aXNOdWxsYWJsZTsKIAotICAg
ICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICRzaWduYXR1cmUt
PnR5cGUpOworICAgICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2Us
ICR0eXBlKTsKICAgICAgICAgICAgIHJldHVybiAiY29udmVydDwke0lETFR5cGV9PihzdGF0ZSwg
anNOdWxsKCkpOyI7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJqc051bGwoKSIgaWYgJHNp
Z25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiYW55IjsKLSAgICAgICAgcmV0dXJuICJudWxscHRyIiBp
ZiAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkc2lnbmF0dXJlLT50eXBlKSB8fCAkY29k
ZUdlbmVyYXRvci0+SXNUeXBlZEFycmF5VHlwZSgkc2lnbmF0dXJlLT50eXBlKTsKLSAgICAgICAg
cmV0dXJuICJTdHJpbmcoKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkc2lnbmF0
dXJlLT50eXBlKTsKKyAgICAgICAgcmV0dXJuICJqc051bGwoKSIgaWYgJHR5cGUtPm5hbWUgZXEg
ImFueSI7CisgICAgICAgIHJldHVybiAibnVsbHB0ciIgaWYgJGNvZGVHZW5lcmF0b3ItPklzV3Jh
cHBlclR5cGUoJHR5cGUpIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1R5cGVkQXJyYXlUeXBlKCR0eXBl
KTsKKyAgICAgICAgcmV0dXJuICJTdHJpbmcoKSIgaWYgJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5n
VHlwZSgkdHlwZSk7CiAgICAgICAgIHJldHVybiAiTnVsbG9wdCI7CiAgICAgfQogICAgIGlmICgk
ZGVmYXVsdFZhbHVlIGVxICJbXSIpIHsKLSAgICAgICAgbXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRp
dmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJmYWNlLCAkc2lnbmF0dXJlKTsKKyAgICAgICAgbXkg
JG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKICAgICAgICAg
cmV0dXJuICIkbmF0aXZlVHlwZSgpIgogICAgIH0KIApAQCAtMTE4MywxMCArMTE4MSwxMCBAQCBz
dWIgR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25Db250CiAKICAgICAgICAgICAgICMg
VmFsdWUgaXMgdW5kZWZpbmVkLgogICAgICAgICAgICAgIyA1LjQuIE90aGVyd2lzZSwgaWYgdmFs
dWUgaXMgdW5kZWZpbmVkIGJ1dCB0aGUgZGljdGlvbmFyeSBtZW1iZXIgaGFzIGEgZGVmYXVsdCB2
YWx1ZSwgdGhlbjoKLSAgICAgICAgICAgIGlmICgkbWVtYmVyLT5pc09wdGlvbmFsICYmIGRlZmlu
ZWQgJG1lbWJlci0+ZGVmYXVsdCkgeworICAgICAgICAgICAgaWYgKCEkbWVtYmVyLT5pc1JlcXVp
cmVkICYmIGRlZmluZWQgJG1lbWJlci0+ZGVmYXVsdCkgewogICAgICAgICAgICAgICAgICRyZXN1
bHQgLj0gIiAgICB9IGVsc2VcbiI7Ci0gICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAg
ICByZXN1bHQuJGtleSA9ICIgLiBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJmYWNlLCAkbWVt
YmVyKSAuICI7XG4iOwotICAgICAgICAgICAgfSBlbHNpZiAoISRtZW1iZXItPmlzT3B0aW9uYWwp
IHsKKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICIgICAgICAgIHJlc3VsdC4ka2V5ID0gIiAu
IEdlbmVyYXRlRGVmYXVsdFZhbHVlKCRpbnRlcmZhY2UsICRtZW1iZXItPnR5cGUsICRtZW1iZXIt
PmRlZmF1bHQpIC4gIjtcbiI7CisgICAgICAgICAgICB9IGVsc2lmICgkbWVtYmVyLT5pc1JlcXVp
cmVkKSB7CiAgICAgICAgICAgICAgICAgIyA1LjUuIE90aGVyd2lzZSwgaWYgdmFsdWUgaXMgdW5k
ZWZpbmVkIGFuZCB0aGUgZGljdGlvbmFyeSBtZW1iZXIgaXMgYSByZXF1aXJlZCBkaWN0aW9uYXJ5
IG1lbWJlciwgdGhlbiB0aHJvdyBhIFR5cGVFcnJvci4KICAgICAgICAgICAgICAgICAkcmVzdWx0
IC49ICIgICAgfSBlbHNlIHtcbiI7CiAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAiICAgICAg
ICB0aHJvd1JlcXVpcmVkTWVtYmVyVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBcIiIuICRt
ZW1iZXItPm5hbWUgLiJcIiwgXCIkbmFtZVwiLCBcIiIuICR0eXBlLT5uYW1lIC4iXCIpO1xuIjsK
QEAgLTE1MTQsMTkgKzE1MTIsMTkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCRudW1B
dHRyaWJ1dGVzID4gMCkgewogICAgICAgICBmb3JlYWNoIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0
ZXN9KSB7CiAgICAgICAgICAgICBteSAkYXR0cmlidXRlID0gJF87Ci0gICAgICAgICAgICAkbnVt
Q3VzdG9tQXR0cmlidXRlcysrIGlmIEhhc0N1c3RvbUdldHRlcigkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRl
cysrIGlmIEhhc0N1c3RvbVNldHRlcigkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcyk7Ci0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgICRudW1DdXN0b21BdHRyaWJ1
dGVzKysgaWYgSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcyk7
CisgICAgICAgICAgICAkbnVtQ3VzdG9tQXR0cmlidXRlcysrIGlmIEhhc0N1c3RvbVNldHRlcigk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAgICAgaWYgKCRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX0pIHsKKyAgICAgICAgICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7Ci0gICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBtdXRhYmxlIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6VW5rbm93bj4gbV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5uYW1lIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgbXV0YWJsZSBKU0M6OldyaXRlQmFycmllcjxKU0M6OlVua25vd24+IG1fIiAuICRhdHRyaWJ1
dGUtPm5hbWUgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgJG51bUNhY2hlZEF0dHJpYnV0ZXMr
KzsKICAgICAgICAgICAgICAgICAkbmVlZHNWaXNpdENoaWxkcmVuID0gMTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAkaGFzRE9NSklUQXR0cmlidXRlcyA9IDEg
aWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn07
CisgICAgICAgICAgICAkaGFzRE9NSklUQXR0cmlidXRlcyA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJVCJ9OwogCi0gICAgICAgICAgICAkaGFzRm9yd2FyZERl
Y2xhcmluZ0F0dHJpYnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CisgICAgICAgICAgICAkaGFzRm9y
d2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMgPSAxIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
NTQ1LDMxICsxNTQzLDMxIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiXG4gICAgLy8gQ3VzdG9tIGF0dHJpYnV0ZXNcbiIpOwogCiAgICAgICAgIGZv
cmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAg
ICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29u
ZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKLSAgICAgICAgICAgIGlmIChI
YXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMp
KSB7CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+
R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKKyAgICAgICAgICAgIGlmIChI
YXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAg
ICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgICAgICBteSAkbWV0aG9kTmFt
ZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFt
ZSk7CisgICAgICAgICAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgIEpTQzo6SlNWYWx1ZSAiIC4gJG1ldGhvZE5hbWUgLiAiKEpTQzo6RXhlY1N0
YXRlJikgY29uc3Q7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
I2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzKSAmJiAhSXNSZWFkb25seSgkYXR0cmlidXRlKSkgeworICAgICAgICAgICAgaWYg
KEhhc0N1c3RvbVNldHRlcigkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpICYmICFJc1Jl
YWRvbmx5KCRhdHRyaWJ1dGUpKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwot
ICAgICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdm9pZCBzZXQiIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSAuICIo
SlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB2b2lkIHNldCIgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNm
aXJzdCgkYXR0cmlidXRlLT5uYW1lKSAuICIoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUp
O1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewot
ICAgICAgICAkbnVtQ3VzdG9tRnVuY3Rpb25zKysgaWYgSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMpOwotICAgICAgICAkaGFzRm9yd2FyZERl
Y2xhcmluZ0Z1bmN0aW9ucyA9IDEgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OworICAgICAgICAkbnVtQ3VzdG9tRnVu
Y3Rpb25zKysgaWYgSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KTsKKyAgICAgICAgJGhhc0ZvcndhcmREZWNsYXJpbmdGdW5jdGlvbnMgPSAxIGlmICRmdW5jdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgfQog
CiAgICAgaWYgKCRudW1DdXN0b21GdW5jdGlvbnMgPiAwKSB7CiAgICAgICAgIG15ICRpbkFwcGxl
Q29weXJpZ2h0ID0gMDsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuICAgIC8vIEN1
c3RvbSBmdW5jdGlvbnNcbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50
ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgeworICAgICAgICAgICAg
aWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZp
bGVzKTsKICAgICAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwpAQCAtMTU3
OCwxMSArMTU3NiwxMSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAkZW5kQXBwbGVDb3B5cmlnaHQpOwogICAgICAgICAgICAgICAgICRp
bkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5leHQgdW5s
ZXNzIEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKTsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzIEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcyk7CiAgICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+e292
ZXJsb2Fkc30gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gIT0gMTsKLSAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRm
dW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgICAgICAgICBteSAk
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
SW1wbGVtZW50YXRpb25OYW1lID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBs
ZW1lbnRlZEFzfSB8fCAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPm5hbWUp
OwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAiIC4gKCRmdW5jdGlvbi0+
aXNTdGF0aWMgPyAic3RhdGljICIgOiAiIikgLiAiSlNDOjpKU1ZhbHVlICIgLiAkZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWUgLiAiKEpTQzo6RXhlY1N0YXRlJik7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsK
ICAgICAgICAgfQpAQCAtMTY5MSw5ICsxNjg5LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9y
ZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICAg
ICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVy
bG9hZEluZGV4fSA+IDE7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CisgICAg
ICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Zvcndh
cmREZWNsYXJlSW5IZWFkZXJ9OwogCi0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgeworICAgICAgICAgICAg
aWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZp
bGVzKTsKICAgICAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwpAQCAtMTcx
OCw5ICsxNzE2LDkgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCRoYXNGb3J3YXJkRGVj
bGFyaW5nQXR0cmlidXRlcykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCIvLyBBdHRy
aWJ1dGVzXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFj
ZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07Cisg
ICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntG
b3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKIAotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3Ry
aW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUpOwogICAgICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJp
YnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2dldHRl
cn0oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7XG4iKTsKQEAgLTE3MzYsMTAgKzE3MzQsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAg
ICAgICRoZWFkZXJJbmNsdWRlc3siPGRvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaD4ifSA9IDE7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIERPTUpJVCBlbWl0dGVycyBmb3IgYXR0
cmlidXRlc1xuXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZh
Y2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKKyAgICAgICAgICAgIG5l
eHQgdW5sZXNzICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifTsKIAog
ICAgICAgICAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwot
ICAgICAgICAgICAgbXkgJGNsYXNzTmFtZSA9ICRpbnRlcmZhY2VOYW1lIC4gJGNvZGVHZW5lcmF0
b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgICAg
IG15ICRjbGFzc05hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2Zp
cnN0KCRhdHRyaWJ1dGUtPm5hbWUpOwogICAgICAgICAgICAgbXkgJGRvbUpJVENsYXNzTmFtZSA9
ICRjbGFzc05hbWUgLiAiRE9NSklUIjsKIAogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIkpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvciRjbGFz
c05hbWUodm9pZCk7XG4iKTsKQEAgLTE4MjksMTkgKzE4MjcsMTkgQEAgc3ViIEdlbmVyYXRlUHJv
cGVydGllc0hhc2hUYWJsZQogICAgICAgICBuZXh0IGlmIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0
YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSAhPSAkaXNJbnN0YW5jZTsKIAogICAgICAgICAj
IEdsb2JhbCBvYmplY3RzIGFkZCBSdW50aW1lRW5hYmxlZCBhdHRyaWJ1dGVzIGFmdGVyIGNyZWF0
aW9uIHNvIGRvIG5vdCBhZGQgdGhlbSB0byB0aGUgc3RhdGljIHRhYmxlLgotICAgICAgICBpZiAo
SXNET01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkgJiYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgeworICAgICAgICBpZiAoSXNE
T01HbG9iYWxPYmplY3QoJGludGVyZmFjZSkgJiYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RW5hYmxlZEF0UnVudGltZX0pIHsKICAgICAgICAgICAgICRwcm9wZXJ0eUNvdW50IC09
IDE7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJG5hbWUgPSAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0
ZS0+bmFtZTsKICAgICAgICAgcHVzaChAJGhhc2hLZXlzLCAkbmFtZSk7CiAKICAgICAgICAgbXkg
JHNwZWNpYWwgPSBHZXRKU0NBdHRyaWJ1dGVzRm9yQXR0cmlidXRlKCRpbnRlcmZhY2UsICRhdHRy
aWJ1dGUpOwogICAgICAgICBwdXNoKEAkaGFzaFNwZWNpYWxzLCAkc3BlY2lhbCk7CiAKLSAgICAg
ICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJ
VCJ9KSB7Ci0gICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMSwgImRvbUpJVEdldHRlclNldHRl
ckZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmly
c3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lKSk7CisgICAgICAgIGlmICgkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAgICAgICAgIHB1c2goQCRo
YXNoVmFsdWUxLCAiZG9tSklUR2V0dGVyU2V0dGVyRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5h
bWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKSk7CiAgICAg
ICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIjAiKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRhdHRyaWJ1dGUpOwpAQCAtMTg1NSwxMCArMTg1MywxMCBAQCBzdWIgR2VuZXJh
dGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBteSAkY29uZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NvbmRpdGlvbmFsfTsKKyAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwogICAgICAgICAkY29uZGl0aW9u
YWxzLT57JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAotICAgICAgICBp
ZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRS
dW50aW1lfSkgeworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
RW5hYmxlZEF0UnVudGltZX0pIHsKICAgICAgICAgICAgIGRpZSAiV2UgY3VycmVudGx5IGRvIG5v
dCBzdXBwb3J0IFtFbmFibGVkQXRSdW50aW1lXSBhdHRyaWJ1dGVzIG9uIHRoZSBpbnN0YW5jZSAo
ZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cykuIiBpZiAkaXNJbnN0YW5jZTsKICAgICAgICAgICAg
IHB1c2goQCRydW50aW1lRW5hYmxlZEF0dHJpYnV0ZXMsICRhdHRyaWJ1dGUpOwogICAgICAgICB9
CkBAIC0xODY4LDE5ICsxODY2LDE5IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFibGUK
ICAgICBwdXNoKEBmdW5jdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30p
IGlmIElzS2V5VmFsdWVJdGVyYWJsZUludGVyZmFjZSgkaW50ZXJmYWNlKTsKICAgICBwdXNoKEBm
dW5jdGlvbnMsIEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5mdW5jdGlvbnN9KSBpZiAkaW50
ZXJmYWNlLT5zZXJpYWxpemFibGU7CiAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlv
bnMpIHsKLSAgICAgICAgbmV4dCBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7CisgICAgICAgIG5leHQg
aWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFu
ZCBub3QgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7
CiAgICAgICAgIG5leHQgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpOwogICAgICAgICBuZXh0IGlm
ICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9
ID4gMTsKICAgICAgICAgbmV4dCBpZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKSAhPSAkaXNJbnN0YW5jZTsKLSAgICAgICAgbmV4dCBpZiAkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+bmFtZSBlcSAiW1N5bWJvbC5JdGVyYXRvcl0iOworICAgICAgICBuZXh0
IGlmICRmdW5jdGlvbi0+bmFtZSBlcSAiW1N5bWJvbC5JdGVyYXRvcl0iOwogCiAgICAgICAgICMg
R2xvYmFsIG9iamVjdHMgYWRkIFJ1bnRpbWVFbmFibGVkIG9wZXJhdGlvbnMgYWZ0ZXIgY3JlYXRp
b24gc28gZG8gbm90IGFkZCB0aGVtIHRvIHRoZSBzdGF0aWMgdGFibGUuCi0gICAgICAgIGlmIChJ
c0RPTUdsb2JhbE9iamVjdCgkaW50ZXJmYWNlKSAmJiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0pIHsKKyAgICAgICAgaWYgKElzRE9N
R2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpICYmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RW5hYmxlZEF0UnVudGltZX0pIHsKICAgICAgICAgICAgICRwcm9wZXJ0eUNvdW50IC09IDE7
CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJG5hbWUgPSAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPm5h
bWU7CiAgICAgICAgIHB1c2goQCRoYXNoS2V5cywgJG5hbWUpOwogCiAgICAgICAgIG15ICRmdW5j
dGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0
aW9uKTsKQEAgLTE4ODksNyArMTg4Nyw3IEBAIHN1YiBHZW5lcmF0ZVByb3BlcnRpZXNIYXNoVGFi
bGUKICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0
aW9uKTsKIAogICAgICAgICAjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdlIGNhbiBnZXQgcmlk
IG9mIHRoZSBxdWlyayBpbnRyb2R1Y2VkIGluIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM5NjcuCi0gICAgICAgICRmdW5jdGlvbkxlbmd0aCA9IDMgaWYgJGludGVy
ZmFjZU5hbWUgZXEgIkV2ZW50IiBhbmQgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgZXEgImlu
aXRFdmVudCI7CisgICAgICAgICRmdW5jdGlvbkxlbmd0aCA9IDMgaWYgJGludGVyZmFjZU5hbWUg
ZXEgIkV2ZW50IiBhbmQgJGZ1bmN0aW9uLT5uYW1lIGVxICJpbml0RXZlbnQiOwogCiAgICAgICAg
IHB1c2goQCRoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOwogCkBAIC0xODk4LDcgKzE4OTYs
NyBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIG15ICRjb25kaXRp
b25hbCA9IGdldENvbmRpdGlvbmFsRm9yRnVuY3Rpb25Db25zaWRlcmluZ092ZXJsb2FkcygkZnVu
Y3Rpb24pOwogICAgICAgICAkY29uZGl0aW9uYWxzLT57JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlm
ICRjb25kaXRpb25hbDsKIAotICAgICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgIGlmICgkZnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CiAgICAgICAgICAg
ICBkaWUgIldlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBbRW5hYmxlZEF0UnVudGltZV0gb3Bl
cmF0aW9ucyBvbiB0aGUgaW5zdGFuY2UgKGV4Y2VwdCBmb3IgZ2xvYmFsIG9iamVjdHMpLiIgaWYg
JGlzSW5zdGFuY2U7CiAgICAgICAgICAgICBwdXNoKEAkcnVudGltZUVuYWJsZWRGdW5jdGlvbnMs
ICRmdW5jdGlvbik7CiAgICAgICAgIH0KQEAgLTE5MzAsMTUgKzE5MjgsMTUgQEAgc3ViIENvbXB1
dGVFZmZlY3RpdmVPdmVybG9hZFNldAogCiAgICAgbXkgJG0gPSBMZW5ndGhPZkxvbmdlc3RGdW5j
dGlvblBhcmFtZXRlckxpc3QoJG92ZXJsb2Fkcyk7CiAgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQg
KEB7JG92ZXJsb2Fkc30pIHsKLSAgICAgICAgbXkgJG4gPSBAeyRvdmVybG9hZC0+cGFyYW1ldGVy
c307CisgICAgICAgIG15ICRuID0gQHskb3ZlcmxvYWQtPmFyZ3VtZW50c307CiAgICAgICAgIG15
IEB0OwogICAgICAgICBteSBAbzsKICAgICAgICAgbXkgJGlzVmFyaWFkaWMgPSAwOwotICAgICAg
ICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JG92ZXJsb2FkLT5wYXJhbWV0ZXJzfSkgewotICAg
ICAgICAgICAgcHVzaChAdCwgJHBhcmFtZXRlci0+dHlwZSk7Ci0gICAgICAgICAgICBpZiAoJHBh
cmFtZXRlci0+aXNPcHRpb25hbCkgeworICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHsk
b3ZlcmxvYWQtPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgIHB1c2goQHQsICRhcmd1bWVudC0+
dHlwZSk7CisgICAgICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsKSB7CiAgICAgICAg
ICAgICAgICAgcHVzaChAbywgIm9wdGlvbmFsIik7Ci0gICAgICAgICAgICB9IGVsc2lmICgkcGFy
YW1ldGVyLT5pc1ZhcmlhZGljKSB7CisgICAgICAgICAgICB9IGVsc2lmICgkYXJndW1lbnQtPmlz
VmFyaWFkaWMpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBvLCAidmFyaWFkaWMiKTsKICAgICAg
ICAgICAgICAgICAkaXNWYXJpYWRpYyA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTk1
Niw4ICsxOTU0LDggQEAgc3ViIENvbXB1dGVFZmZlY3RpdmVPdmVybG9hZFNldAogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIGZvciAobXkgJGkgPSAkbiAtIDE7ICRpID49IDA7ICRp
LS0pIHsKLSAgICAgICAgICAgIG15ICRwYXJhbWV0ZXIgPSBAeyRvdmVybG9hZC0+cGFyYW1ldGVy
c31bJGldOwotICAgICAgICAgICAgbGFzdCB1bmxlc3MgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwg
fHwgJHBhcmFtZXRlci0+aXNWYXJpYWRpYyk7CisgICAgICAgICAgICBteSAkYXJndW1lbnQgPSBA
eyRvdmVybG9hZC0+YXJndW1lbnRzfVskaV07CisgICAgICAgICAgICBsYXN0IHVubGVzcyAoJGFy
Z3VtZW50LT5pc09wdGlvbmFsIHx8ICRhcmd1bWVudC0+aXNWYXJpYWRpYyk7CiAgICAgICAgICAg
ICBwb3AoQHQpOwogICAgICAgICAgICAgcG9wKEBvKTsKICAgICAgICAgICAgICYkYWRkVHVwbGUo
WyRvdmVybG9hZCwgW0B0XSwgW0BvXV0pOwpAQCAtMjAzOCw3ICsyMDM2LDcgQEAgc3ViIEdldERp
c3Rpbmd1aXNoaW5nQXJndW1lbnRJbmRleAogICAgIGZvciAobXkgJGluZGV4ID0gMDsgJGluZGV4
IDwgc2NhbGFyKEAkZmlyc3RUdXBsZVR5cGVzKTsgJGluZGV4KyspIHsKICAgICAgICAgcmV0dXJu
ICRpbmRleCBpZiBBcmVUeXBlc0Rpc3Rpbmd1aXNoYWJsZUZvck92ZXJsb2FkUmVzb2x1dGlvbihA
eyRmaXJzdFR1cGxlVHlwZXN9WyRpbmRleF0sIEB7JHNlY29uZFR1cGxlVHlwZXN9WyRpbmRleF0p
OwogICAgIH0KLSAgICBkaWUgIlVuZGlzdGluZ3Vpc2hhYmxlIG92ZXJsb2FkcyBmb3Igb3BlcmF0
aW9uICIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIgd2l0aCBsZW5ndGg6ICIgLiBz
Y2FsYXIoQCRmaXJzdFR1cGxlVHlwZXMpOworICAgIGRpZSAiVW5kaXN0aW5ndWlzaGFibGUgb3Zl
cmxvYWRzIGZvciBvcGVyYXRpb24gIiAuICRmdW5jdGlvbi0+bmFtZSAuICIgd2l0aCBsZW5ndGg6
ICIgLiBzY2FsYXIoQCRmaXJzdFR1cGxlVHlwZXMpOwogfQogCiBzdWIgR2V0T3ZlcmxvYWRUaGF0
TWF0Y2hlcwpAQCAtMjA3MywxMSArMjA3MSwxMSBAQCBzdWIgZ2V0Q29uZGl0aW9uYWxGb3JGdW5j
dGlvbkNvbnNpZGVyaW5nCiB7CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAKLSAgICByZXR1
cm4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFs
fSB1bmxlc3MgJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfTsKKyAgICByZXR1cm4gJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0gdW5sZXNzICRmdW5jdGlvbi0+e292ZXJs
b2Fkc307CiAKICAgICBteSAlY29uZGl0aW9uczsKICAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAo
QHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSkgewotICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAk
b3ZlcmxvYWQtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9Owor
ICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkb3ZlcmxvYWQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfTsKICAgICAgICAgcmV0dXJuIHVubGVzcyAkY29uZGl0aW9uYWw7CiAgICAg
ICAgICRjb25kaXRpb25zeyRjb25kaXRpb25hbH0gPSAxOwogICAgIH0KQEAgLTIwOTgsMTMgKzIw
OTYsMTMgQEAgc3ViIEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uT3JDb25zdHJ1YwogICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gImNvbnN0cnVjdCR7Y2xhc3NOYW1lfSI7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgbXkgJGtpbmQgPSAkZnVuY3Rpb24tPmlzU3RhdGljID8gIkNvbnN0cnVjdG9yIiA6
IChPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSA/ICJJ
bnN0YW5jZSIgOiAiUHJvdG90eXBlIik7Ci0gICAgICAgICRmdW5jdGlvbk5hbWUgPSAianMke2lu
dGVyZmFjZU5hbWV9JHtraW5kfUZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJq
cyR7aW50ZXJmYWNlTmFtZX0ke2tpbmR9RnVuY3Rpb24iIC4gJGNvZGVHZW5lcmF0b3ItPldLX3Vj
Zmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsKICAgICB9CiAKICAgICBteSAkZ2VuZXJhdGVPdmVybG9h
ZENhbGxJZk5lY2Vzc2FyeSA9IHN1YiB7CiAgICAgICAgIG15ICgkb3ZlcmxvYWQsICRjb25kaXRp
b24pID0gQF87CiAgICAgICAgIHJldHVybiB1bmxlc3MgJG92ZXJsb2FkOwotICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZygkb3ZlcmxvYWQtPnNpZ25hdHVyZSk7CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvdmVybG9hZCk7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpZiAoJGNvbmRpdGlvbilcbiAgICAiKSBpZiAkY29uZGl0aW9uOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICR7ZnVuY3Rpb25OYW1lfSRvdmVybG9hZC0+
e292ZXJsb2FkSW5kZXh9KHN0YXRlKTtcbiIpOwpAQCAtMjI5MSw4ICsyMjg5LDggQEAgc3ViIEdl
dEZ1bmN0aW9uTGVuZ3RoCiAgICAgICAgIG15ICRmdW5jdGlvbiA9IHNoaWZ0OwogCiAgICAgICAg
IG15ICRsZW5ndGggPSAwOwotICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0
aW9uLT5wYXJhbWV0ZXJzfSkgewotICAgICAgICAgICAgbGFzdCBpZiAkcGFyYW1ldGVyLT5pc09w
dGlvbmFsIHx8ICRwYXJhbWV0ZXItPmlzVmFyaWFkaWM7CisgICAgICAgIGZvcmVhY2ggbXkgJGFy
Z3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgbGFzdCBpZiAk
YXJndW1lbnQtPmlzT3B0aW9uYWwgfHwgJGFyZ3VtZW50LT5pc1ZhcmlhZGljOwogICAgICAgICAg
ICAgJGxlbmd0aCsrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAkbGVuZ3RoOwpAQCAtMjMx
MSw4ICsyMzA5LDggQEAgc3ViIExlbmd0aE9mTG9uZ2VzdEZ1bmN0aW9uUGFyYW1ldGVyTGlzdAog
ICAgIG15ICgkb3ZlcmxvYWRzKSA9IEBfOwogICAgIG15ICRyZXN1bHQgPSAwOwogICAgIGZvcmVh
Y2ggbXkgJG92ZXJsb2FkIChAeyRvdmVybG9hZHN9KSB7Ci0gICAgICAgIG15IEBwYXJhbWV0ZXJz
ID0gQHskb3ZlcmxvYWQtPnBhcmFtZXRlcnN9OwotICAgICAgICAkcmVzdWx0ID0gQHBhcmFtZXRl
cnMgaWYgJHJlc3VsdCA8IEBwYXJhbWV0ZXJzOworICAgICAgICBteSBAYXJndW1lbnRzID0gQHsk
b3ZlcmxvYWQtPmFyZ3VtZW50c307CisgICAgICAgICRyZXN1bHQgPSBAYXJndW1lbnRzIGlmICRy
ZXN1bHQgPCBAYXJndW1lbnRzOwogICAgIH0KICAgICByZXR1cm4gJHJlc3VsdDsKIH0KQEAgLTI0
NTksMTUgKzI0NTcsMTcgQEAgc3ViIFRvTWV0aG9kTmFtZQogfQogCiAjIFJldHVybnMgdGhlIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMgZnVuY3Rpb24gbmFtZSB0aGF0IGlzIGhvb2tlZCB1cCB0byBj
aGVjayBpZiBhIG1ldGhvZC9hdHRyaWJ1dGUgaXMgZW5hYmxlZC4KKyMgTk9URTogUGFyYW1ldGVy
IHBhc3NlZCBpbiBtdXN0IGhhdmUgYm90aCBhbiAnZXh0ZW5kZWRBdHRyaWJ1dGVzJyBwcm9wZXJ0
eS4KKyMgIChlLmcuIERPTUludGVyZmFjZSwgRE9NQXR0cmlidXRlLCBET01PcGVyYXRpb24sIERP
TUl0ZXJhYmxlLCBldGMuKQogc3ViIEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUKIHsKLSAg
ICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7CisgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKIAogICAg
ICMgSWYgYSBwYXJhbWV0ZXIgaXMgZ2l2ZW4gKGUuZy4gIkVuYWJsZWRBdFJ1bnRpbWU9RmVhdHVy
ZU5hbWUiKSByZXR1cm4gdGhlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkue0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBtZXRob2QuCi0gICAgcmV0dXJuICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBUb01ldGhvZE5hbWUoJHNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0pIC4gIkVuYWJsZWQiIGlm
ICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSAmJiAk
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSBuZSAiVkFM
VUVfSVNfTUlTU0lORyIpOworICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntFbmFibGVkQXRSdW50aW1lfSkgLiAiRW5hYmxlZCIgaWYgKCRjb250ZXh0LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfSAmJiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0gbmUgIlZBTFVFX0lTX01JU1NJTkciKTsKIAogICAg
ICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkue21ldGhvZE5hbWV9RW5hYmxlZCgpLgotICAgIHJldHVybiAi
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1l
KCRzaWduYXR1cmUtPm5hbWUpIC4gIkVuYWJsZWQiOworICAgIHJldHVybiAiUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRjb250ZXh0LT5u
YW1lKSAuICJFbmFibGVkIjsKIH0KIAogc3ViIEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0
CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBzdWIgR2V0SW5kZXhlZEdldHRlckV4cHJlc3Npb24KICAg
ICBteSAkaW5kZXhlZEdldHRlckZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgCiAgICAgIyBGSVhNRTog
U2hvdWxkIHRoaXMgd29yayBmb3IgYWxsIHN0cmluZyB0eXBlcz8KLSAgICByZXR1cm4gImpzU3Ry
aW5nT3JVbmRlZmluZWQoc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSki
IGlmICRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiRE9N
U3RyaW5nIjsKKyAgICByZXR1cm4gImpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRoaXNPYmpl
Y3QtPndyYXBwZWQoKS5pdGVtKGluZGV4KSkiIGlmICRpbmRleGVkR2V0dGVyRnVuY3Rpb24tPnR5
cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7CiAgICAgcmV0dXJuICJ0b0pTKHN0YXRlLCB0aGlzT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhpc09iamVjdC0+d3JhcHBlZCgpLml0ZW0oaW5kZXgpKSI7
CiB9CiAKQEAgLTI0OTMsNyArMjQ5Myw3IEBAIHN1YiBhZGRVbnNjb3BhYmxlUHJvcGVydGllcwog
CiAgICAgbXkgQHVuc2NvcGFibGVzOwogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uT3JBdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkg
ewotICAgICAgICBwdXNoKEB1bnNjb3BhYmxlcywgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+bmFtZSkgaWYgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57VW5zY29wYWJsZX07CisgICAgICAgIHB1c2goQHVuc2NvcGFibGVzLCAkZnVu
Y3Rpb25PckF0dHJpYnV0ZS0+bmFtZSkgaWYgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1Vuc2NvcGFibGV9OwogICAgIH0KICAgICByZXR1cm4gaWYgc2NhbGFyKEB1
bnNjb3BhYmxlcykgPT0gMDsKIApAQCAtMjUwNyw5ICsyNTA3LDcgQEAgc3ViIGFkZFVuc2NvcGFi
bGVQcm9wZXJ0aWVzCiAKIHN1YiBHZXRSZXN1bHRUeXBlRmlsdGVyCiB7Ci0gICAgbXkgKCRzaWdu
YXR1cmUpID0gQF87Ci0KLSAgICBteSAkdHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CisgICAgbXkg
KCR0eXBlKSA9IEBfOwogCiAgICAgbXkgJVR5cGVGaWx0ZXJzID0gKAogICAgICAgICAiYW55IiA9
PiAiU3BlY0hlYXBUb3AiLApAQCAtMjU5MiwxMCArMjU5MCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwiLy8gRnVuY3Rpb25zXG5cbiIp
OwogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewogICAgICAgICAg
ICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVy
bG9hZEluZGV4fSA+IDE7Ci0gICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKKyAgICAgICAg
ICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFy
ZUluSGVhZGVyfTsKICAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwg
JGZ1bmN0aW9uKTsKIAotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKKyAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgewogICAgICAgICAg
ICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICRiZWdpbkFwcGxlQ29weXJpZ2h0Rm9ySGVhZGVyRmlsZXMpOwogICAg
ICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDE7CkBAIC0yNjIxLDEwICsyNjE5
LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiLy8gQXR0cmlidXRlc1xuXG4iKTsKIAogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1
dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUlu
SGVhZGVyfTsKKyAgICAgICAgICAgIG5leHQgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CiAgICAgICAgICAgICBuZXh0IGlmIElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogCi0gICAgICAgICAgICBteSAkY29uZGl0
aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygk
YXR0cmlidXRlLT5zaWduYXR1cmUpOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgbXkgJGdldHRlciA9IEdl
dEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgJHtn
ZXR0ZXJ9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpO1xuIik7CkBAIC0yNzAxLDE4ICsyNjk5LDE4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0
dHJpYnV0ZXN9KSB7CiAgICAgICAgICAgICBuZXh0IHVubGVzcyAoJGF0dHJpYnV0ZS0+aXNTdGF0
aWMpOwotICAgICAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAgICAgICAgICAgICBw
dXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCiAgICAgICAgICAgICBteSBAc3BlY2lhbHMgPSAoKTsK
ICAgICAgICAgICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udERlbGV0ZSIpIGlmIElzVW5mb3JnZWFi
bGUoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBzcGVjaWFscywg
IlJlYWRPbmx5IikgaWYgSXNSZWFkb25seSgkYXR0cmlidXRlKTsKLSAgICAgICAgICAgIHB1c2go
QHNwZWNpYWxzLCAiRE9NSklUQXR0cmlidXRlIikgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn07CisgICAgICAgICAgICBwdXNoKEBzcGVjaWFs
cywgIkRPTUpJVEF0dHJpYnV0ZSIpIGlmICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJET01KSVQifTsKICAgICAgICAgICAgIG15ICRzcGVjaWFsID0gKEBzcGVjaWFscyA+IDApID8g
am9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsKICAgICAgICAgICAgIHB1c2goQGhhc2hTcGVj
aWFscywgJHNwZWNpYWwpOwogCi0gICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKLSAgICAgICAgICAgICAgICBwdXNo
KEBoYXNoVmFsdWUxLCAiZG9tSklUR2V0dGVyU2V0dGVyRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5zaWduYXR1cmUt
Pm5hbWUpKTsKKyAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRE9NSklUIn0pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAiZG9tSklU
R2V0dGVyU2V0dGVyRm9yIiAuICRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgLiAkY29kZUdlbmVyYXRv
ci0+V0tfdWNmaXJzdCgkYXR0cmlidXRlLT5uYW1lKSk7CiAgICAgICAgICAgICAgICAgcHVzaChA
aGFzaFZhbHVlMiwgIjAiKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
bXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7CkBAIC0yNzI2LDcgKzI3MjQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25kaXRpb25hbH07CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgICAgICAgICAkY29u
ZGl0aW9uYWxzeyRuYW1lfSA9ICRjb25kaXRpb25hbCBpZiAkY29uZGl0aW9uYWw7CiAKICAgICAg
ICAgICAgICRoYXNoU2l6ZSsrOwpAQCAtMjczNSw3ICsyNzMzLDcgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+
ZnVuY3Rpb25zfSkgewogICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRmdW5jdGlvbi0+aXNTdGF0
aWMpOwogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAk
ZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rp
b24tPm5hbWU7CiAgICAgICAgICAgICBwdXNoKEBoYXNoS2V5cywgJG5hbWUpOwogCiAgICAgICAg
ICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFz
c05hbWUsICRmdW5jdGlvbik7CkBAIC0yNzQ2LDcgKzI3NDQsNyBAQCBzdWIgR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5j
dGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CiAKLSAgICAgICAgICAgIG15ICRj
b25kaXRpb25hbCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
b25kaXRpb25hbH07CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKICAgICAgICAgICAgICRjb25kaXRpb25h
bHN7JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAg
JGhhc2hTaXplKys7CkBAIC0yODIxLDEyICsyODE5LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgIG15IEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMgPSBAcnVudGltZUVu
YWJsZWRGdW5jdGlvbnM7CiAgICAgICAgIHB1c2goQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcywg
QHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcyk7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
T3JBdHRyaWJ1dGUgKEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIG15
ICRzaWduYXR1cmUgPSAkZnVuY3Rpb25PckF0dHJpYnV0ZS0+c2lnbmF0dXJlOwotICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJHNpZ25hdHVyZSk7CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb25P
ckF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRp
dGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIpOwotICAgICAgICAgICAg
bXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJHNpZ25h
dHVyZSk7Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRzaWduYXR1cmUtPm5hbWU7CisgICAgICAg
ICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZSgk
ZnVuY3Rpb25PckF0dHJpYnV0ZSk7CisgICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbk9y
QXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCEke2VuYWJsZV9mdW5jdGlvbn0oKSkge1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0
cmxlbihcIiRuYW1lXCIpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOwpAQCAtMjgzNywxMSArMjgzNCwx
MSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgIG15ICRmaXJzdFByaXZh
dGVGdW5jdGlvbiA9IDE7CiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZh
Y2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzICgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9KTsKKyAgICAg
ICAgICAgIG5leHQgdW5sZXNzICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZh
dGVJZGVudGlmaWVyfSk7CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiV2ViQ29yZUpT
Q2xpZW50RGF0YS5oIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZN
Q2xpZW50RGF0YSYgY2xpZW50RGF0YSA9ICpzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZt
LmNsaWVudERhdGEpO1xuIikgaWYgJGZpcnN0UHJpdmF0ZUZ1bmN0aW9uOwogICAgICAgICAgICAg
JGZpcnN0UHJpdmF0ZUZ1bmN0aW9uID0gMDsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIHB1dERpcmVjdCh2bSwgY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS4iIC4gJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5nKCksICIgLiBHZXRGdW5jdGlvbk5hbWUoJGlu
dGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSAuICIpLCBSZWFkT25seSB8IERvbnRFbnVt
KTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZt
LCBjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiUHJpdmF0
ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QoKSwgMCwgU3RyaW5n
KCksICIgLiBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9u
KSAuICIpLCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKCRpbnRlcmZhY2UtPml0ZXJhYmxlKSB7CkBAIC0yOTE0LDEzICsyOTExLDEzIEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICAgICAgIyBTdXBwb3J0IGZvciBS
dW50aW1lRW5hYmxlZCBhdHRyaWJ1dGVzIG9uIGdsb2JhbCBvYmplY3RzLgogICAgICAgICBmb3Jl
YWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAg
ICAgIG5leHQgdW5sZXNzICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RW5hYmxlZEF0UnVudGltZX07CisgICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQXRSdW50aW1lfTsKIAogICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIpOwotICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
KCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15
ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBH
ZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKCRhdHRyaWJ1dGUpOworICAgICAgICAgICAgbXkg
JGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKICAgICAgICAg
ICAgIG15ICRnZXR0ZXIgPSBHZXRBdHRyaWJ1dGVHZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRjbGFz
c05hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHko
JGF0dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUpOwpAQCAtMjkzMywxMSArMjkzMCwxMSBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICMgU3VwcG9ydCBQcml2YXRlSWRlbnRp
ZmllciBhdHRyaWJ1dGVzIG9uIGdsb2JhbCBvYmplY3RzCiAgICAgICAgIGZvcmVhY2ggbXkgJGF0
dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgbmV4dCB1
bmxlc3MgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRl
SWRlbnRpZmllcn07CisgICAgICAgICAgICBuZXh0IHVubGVzcyAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn07CiAKICAgICAgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCJXZWJDb3JlSlNDbGllbnREYXRhLmgiKTsKLSAgICAgICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25h
bFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRy
aWJ1dGUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1l
OwogICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGF0dHJpYnV0ZSk7CiAKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CkBAIC0yOTQ3LDIxICsyOTQ0LDIxIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAK
ICAgICAgICAgIyBTdXBwb3J0IGZvciBSdW50aW1lRW5hYmxlZCBvcGVyYXRpb25zIG9uIGdsb2Jh
bCBvYmplY3RzLgogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5m
dW5jdGlvbnN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX07CisgICAgICAgICAgICBu
ZXh0IHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRp
bWV9OwogICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAk
ZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CiAKICAgICAgICAgICAgIEFkZFRvSW1wbElu
Y2x1ZGVzKCJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiKTsKLSAgICAgICAgICAgIG15ICRjb25k
aXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5n
KCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5j
dGlvbiA9IEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUp
OwotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5u
YW1lOworICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVFbmFibGVG
dW5jdGlvbk5hbWUoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAk
ZnVuY3Rpb24tPm5hbWU7CiAgICAgICAgICAgICBteSAkaW1wbGVtZW50YXRpb25GdW5jdGlvbiA9
IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOwogICAg
ICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9u
KTsKICAgICAgICAgICAgIG15ICRqc0F0dHJpYnV0ZXMgPSBDb21wdXRlRnVuY3Rpb25TcGVjaWFs
KCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpXG4iKTsKIAogICAgICAgICAgICAgbXkgJHBy
b3BlcnR5TmFtZSA9ICJ2bS5wcm9wZXJ0eU5hbWVzLT4kZnVuY3Rpb25OYW1lIjsKLSAgICAgICAg
ICAgICRwcm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbk5hbWUgLiAiUHJpdmF0ZU5hbWUo
KSIgaWYgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJ
ZGVudGlmaWVyfTsKKyAgICAgICAgICAgICRwcm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlv
bk5hbWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntQcml2YXRlSWRlbnRpZmllcn07CiAgICAgICAgICAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXMsICRwcm9wZXJ0eU5hbWUs
ICRpbXBsZW1lbnRhdGlvbkZ1bmN0aW9uKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSgkanNB
dHRyaWJ1dGVzKSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zMDMyLDcgKzMwMjks
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICBpZiAoJGluZGV4
ZWRHZXR0ZXJGdW5jdGlvbikgewogICAgICAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB0aGlz
IHdvcmsgZm9yIGFsbCBzdHJpbmcgdHlwZXM/Ci0gICAgICAgICAgICAgICAgaWYgKCRpbmRleGVk
R2V0dGVyRnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIikgewor
ICAgICAgICAgICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uLT50eXBlLT5uYW1lIGVx
ICJET01TdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkge1xuIik7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgaWYgKExJS0VMWShpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkp
IHtcbiIpOwpAQCAtMzExMCwyMCArMzEwNywyMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c30pIHsKICAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJp
YnV0ZSk7CiAKLSAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5u
YW1lOwotICAgICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7
CisgICAgICAgICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CisgICAgICAgICAgICBt
eSAkdHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGU7CiAgICAgICAgICAgICBteSAkZ2V0RnVuY3Rpb25O
YW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0
cmlidXRlKTsKLSAgICAgICAgICAgIG15ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVH
ZW5lcmF0b3ItPldLX2xjZmlyc3QoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkbmFtZSk7Ci0gICAgICAgICAgICBteSAkZ2V0dGVy
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0dldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9ufTsKKyAgICAgICAgICAg
IG15ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3Qo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJG5hbWUp
OworICAgICAgICAgICAgbXkgJGdldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uID0gJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb259
OwogCiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2RlLmgifSA9IDEgaWYg
JGdldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uOwogCi0gICAgICAgICAgICBteSAkYXR0cmli
dXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25h
bFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOworICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZUNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmcoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAk
e2F0dHJpYnV0ZUNvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGF0dHJpYnV0ZUNvbmRpdGlvbmFs
U3RyaW5nOwogCiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljIHx8ICRjb2Rl
R2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkdHlwZSkpIHsKICAgICAgICAgICAgICAgICBt
eSAkdGVtcGxhdGVQYXJhbWV0ZXJzID0gIiR7Z2V0RnVuY3Rpb25OYW1lfUdldHRlciI7Ci0gICAg
ICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TGVuaWVudFRoaXN9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0xlbmllbnRUaGlzfSkgewogICAgICAgICAgICAgICAgICAgICAkdGVt
cGxhdGVQYXJhbWV0ZXJzIC49ICIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1cm5FYXJs
eSI7CiAgICAgICAgICAgICAgICAgfSBlbHNpZiAoSXNSZXR1cm5pbmdQcm9taXNlKCRhdHRyaWJ1
dGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2Fz
dGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UiOwpAQCAtMzE1NCwxNyArMzE1MSwx
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIpOwogCiAgICAgICAgICAgICBteSBA
YXJndW1lbnRzID0gKCk7Ci0gICAgICAgICAgICBpZiAoJGdldHRlck1heVRocm93TGVnYWN5RXhj
ZXB0aW9uICYmICFIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMpKSB7CisgICAgICAgICAgICBpZiAoJGdldHRlck1heVRocm93TGVnYWN5RXhj
ZXB0aW9uICYmICFIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KSkgewogICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImVjIik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7XG4iKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgIyBHbG9iYWwgY29uc3RydWN0b3JzIGNhbiBi
ZSBkaXNhYmxlZCBhdCBydW50aW1lLgogICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5J
c0NvbnN0cnVjdG9yVHlwZSgkdHlwZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewor
ICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFi
bGVkQnlTZXR0aW5nfSkgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygi
RnJhbWUuaCIpOwogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGlu
Z3MuaCIpOwotICAgICAgICAgICAgICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRo
b2ROYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxl
ZEJ5U2V0dGluZ30pIC4gIkVuYWJsZWQiOworICAgICAgICAgICAgICAgICAgICBteSAkZW5hYmxl
X2Z1bmN0aW9uID0gVG9NZXRob2ROYW1lKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0VuYWJsZWRCeVNldHRpbmd9KSAuICJFbmFibGVkIjsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCF0aGlzT2JqZWN0LndyYXBwZWQoKS5m
cmFtZSgpKSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gdGhpc09iamVjdC53cmFw
cGVkKCkuZnJhbWUoKS0+c2V0dGluZ3MoKTtcbiIpOwpAQCAtMzE3MywxMSArMzE3MCwxMSBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAgJG5lZWRzVmlzaXRDaGlsZHJlbiA9IDEgaWYgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRyaWJ1dGV9OworICAgICAg
ICAgICAgJG5lZWRzVmlzaXRDaGlsZHJlbiA9IDEgaWYgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q2FjaGVkQXR0cmlidXRlfTsKIAogICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9ICYmCi0gICAgICAgICAgICAgICAg
ISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1Nl
Y3VyaXR5fSAmJgotICAgICAgICAgICAgICAgICEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyfSkgeworICAgICAgICAg
ICAgICAgICEkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJp
dHl9ICYmCisgICAgICAgICAgICAgICAgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0RvTm90Q2hlY2tTZWN1cml0eU9uR2V0dGVyfSkgewogICAgICAgICAgICAgICAgIGlmICgkaW50
ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NU
b0RPTVdpbmRvdygmc3RhdGUsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCBUaHJvd1NlY3VyaXR5RXJy
b3IpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTMxODYsNyArMzE4Myw3IEBA
IHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e05vbmRldGVybWluaXN0aWN9KSB7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm9uZGV0ZXJtaW5pc3RpY30pIHsKICAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiTWVtb2l6ZWRET01SZXN1bHQuaCIsICJXRUJfUkVQTEFZIik7
CiAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxyZXBsYXkvSW5wdXRDdXJzb3Iu
aD4iLCAiV0VCX1JFUExBWSIpOwogICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8
d3RmL05ldmVyRGVzdHJveWVkLmg+IiwgIldFQl9SRVBMQVkiKTsKQEAgLTMyMDIsNyArMzE5OSw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKSB7XG4iKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgJG1lbW9pemVkVHlwZSBtZW1vaXpl
ZFJlc3VsdCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIg
LiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVz
dWx0PCRtZW1vaXplZFR5cGU+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRS
ZXN1bHQsICRleGNlcHRpb25Db2RlKTtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2lu
Z1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAibWVtb2l6
ZWRSZXN1bHQiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFs
dWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgIm1lbW9pemVkUmVz
dWx0IiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgdGhyb3dTY29wZSwgZWMp
O1xuIikgaWYgJGdldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uOwogICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CkBAIC0zMjEyLDcgKzMyMDks
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICBNZW1vaXplZERPTVJlc3VsdEJhc2UqIGlucHV0ID0gY3Vyc29y
LmZldGNoSW5wdXQ8TWVtb2l6ZWRET01SZXN1bHRCYXNlPigpO1xuIik7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC0+Y29udmVy
dFRvPCRtZW1vaXplZFR5cGU+KG1lbW9pemVkUmVzdWx0KSkge1xuIik7CiAgICAgICAgICAgICAg
ICAgIyBGSVhNRTogdGhlIGdlbmVyYXRlZCBjb2RlIHNob3VsZCByZXBvcnQgYW4gZXJyb3IgaWYg
YW4gaW5wdXQgY2Fubm90IGJlIGZldGNoZWQgb3IgY29udmVydGVkLgotICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0
aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGlu
dGVyZmFjZSwgIm1lbW9pemVkUmVzdWx0IiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKKyAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0
ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLCAwLCAkaW50
ZXJmYWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOwogICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KCZzdGF0ZSwgdGhyb3dTY29wZSwgaW5wdXQtPmV4Y2VwdGlvbkNvZGUoKSk7XG4iKSBpZiAkZ2V0
dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIH1cbiIpOwpAQCAtMzIyMCwxNyArMzIxNywxNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2VuZGlmXG4iKTsKICAgICAgICAgICAgIH0gIyBhdHRyaWJ1dGUgTm9uZGV0ZXJt
aW5pc3RpYwogCi0gICAgICAgICAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgeworICAgICAgICAgICAgaWYgKEhhc0N1c3Rv
bUdldHRlcigkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHRoaXNPYmplY3QuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoc3RhdGUpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2lmICgkdHlwZS0+bmFt
ZSBlcSAiRXZlbnRIYW5kbGVyIikgewogICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV2
ZW50TmFtZXMuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhhbmRsZXJ9ID8g
IndpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIKLSAgICAgICAgICAgICAgICAgICAgOiAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvY3VtZW50RXZlbnRIYW5k
bGVyfSA/ICJkb2N1bWVudEV2ZW50SGFuZGxlckF0dHJpYnV0ZSIKKyAgICAgICAgICAgICAgICBt
eSAkZ2V0dGVyID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57V2luZG93RXZlbnRI
YW5kbGVyfSA/ICJ3aW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUiCisgICAgICAgICAgICAgICAg
ICAgIDogJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9jdW1lbnRFdmVudEhhbmRs
ZXJ9ID8gImRvY3VtZW50RXZlbnRIYW5kbGVyQXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAg
ICA6ICJldmVudEhhbmRsZXJBdHRyaWJ1dGUiOwogICAgICAgICAgICAgICAgIG15ICRldmVudE5h
bWUgPSBFdmVudEhhbmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUoJGF0dHJpYnV0ZSk7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRnZXR0ZXIodGhpc09iamVj
dC53cmFwcGVkKCksICRldmVudE5hbWUpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2lmICgkY29k
ZUdlbmVyYXRvci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBl
KSkgewotICAgICAgICAgICAgICAgIG15ICRjb25zdHJ1Y3RvclR5cGUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPnR5cGUtPm5hbWU7CisgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRv
ci0+SXNDb25zdHJ1Y3RvclR5cGUoJGF0dHJpYnV0ZS0+dHlwZSkpIHsKKyAgICAgICAgICAgICAg
ICBteSAkY29uc3RydWN0b3JUeXBlID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZTsKICAgICAgICAg
ICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CiAgICAgICAgICAg
ICAgICAgIyBXaGVuIENvbnN0cnVjdG9yIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IERPTVdpbmRvdy5p
ZGwsIGl0J3MgY29ycmVjdCB0byBwYXNzIHRoaXNPYmplY3QgYXMgdGhlIGdsb2JhbCBvYmplY3QK
ICAgICAgICAgICAgICAgICAjIFdoZW4gSlNET01XcmFwcGVycyBoYXZlIGEgYmFjay1wb2ludGVy
IHRvIHRoZSBnbG9iYWxPYmplY3Qgd2UgY2FuIHBhc3MgdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KCkKQEAgLTMyMzksMzMgKzMyMzYsMzMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAg
ICAgICAgICAgICAgICAgICAgJGNvbnN0cnVjdG9yVHlwZSA9fiBzL05hbWVkJC8vOwogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0
cnVjdG9yVHlwZSAuICI6OmdldCR7bmFtZWR9Q29uc3RydWN0b3Ioc3RhdGUudm0oKSwgJnRoaXNP
YmplY3QpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7Cisg
ICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JU
eXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9
KTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
IiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS52bSgpLCB0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0gZWxzaWYgKCEkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0dldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9ufSkgeworICAgICAgICAgICAgfSBlbHNpZiAo
ISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0dldHRlck1heVRocm93TGVnYWN5RXhj
ZXB0aW9ufSkgewogICAgICAgICAgICAgICAgIG15ICRjYWNoZUluZGV4ID0gMDsKLSAgICAgICAg
ICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
YWNoZWRBdHRyaWJ1dGV9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX0pIHsKICAgICAgICAgICAgICAgICAgICAg
JGNhY2hlSW5kZXggPSAkY3VycmVudENhY2hlZEF0dHJpYnV0ZTsKICAgICAgICAgICAgICAgICAg
ICAgJGN1cnJlbnRDYWNoZWRBdHRyaWJ1dGUrKzsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFsdWUgPSB0aGlzT2JqZWN0Lm1f
IiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIuZ2V0KCkpXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKEpTVmFsdWUgY2FjaGVkVmFs
dWUgPSB0aGlzT2JqZWN0Lm1fIiAuICRhdHRyaWJ1dGUtPm5hbWUgLiAiLmdldCgpKVxuIik7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2Fj
aGVkVmFsdWU7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBteSBA
Y2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRl
LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgXEBpbXBsQ29udGVu
dCwgImpzVW5kZWZpbmVkKCkiKTsKKyAgICAgICAgICAgICAgICBteSBAY2FsbFdpdGhBcmdzID0g
R2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIik7CiAKICAg
ICAgICAgICAgICAgICBpZiAoJHN2Z0xpc3RQcm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2
ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRl
cmZhY2UsICJ0aGlzT2JqZWN0LndyYXBwZWQoKS4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4g
KGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwg
JGludGVyZmFjZSwgInRoaXNPYmplY3Qud3JhcHBlZCgpLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1l
KCIgLiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIpIiwgInRoaXNPYmplY3QiKSAuICI7
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0
eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2
Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCku
cHJvcGVydHlSZWZlcmVuY2UoKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1By
b3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9y
IEpTU1ZHTnVtYmVyCi0gICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMo
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW50ZXJmYWNlLCAiaW1wbCIsICJ0aGlzT2JqZWN0
IikgLiAiO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMo
JGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgImltcGwiLCAidGhpc09iamVjdCIpIC4gIjtcbiIp
OwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1Zh
bHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwg
ImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIChqb2luICIsICIsIEBjYWxsV2l0aEFy
Z3MpIC4gIikiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9K
U1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUsIDAsICRpbnRlcmZhY2UsICJpbXBsLiRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIp
IiwgInRoaXNPYmplY3QiKSAuICI7XG4iKTsKIAogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbXkgKCRmdW5jdGlvbk5h
bWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Npb24oXCVpbXBs
SW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICAg
ICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgICAgICAgICAgICAgICAgICBteSAkaW1wbGVt
ZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9
OwogICAgICAgICAgICAgICAgICAgICBpZiAoJGltcGxlbWVudGVkQnkpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IiR7aW1wbGVtZW50ZWRCeX0uaCJ9ID0gMTsKICAg
ICAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1l
bnRlZEJ5fTo6JHtmdW5jdGlvbk5hbWV9IjsKQEAgLTMyNzcsNyArMzI3NCw3IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOwotICAgICAgICAgICAg
ICAgICAgICBteSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdSZWZlcmVuY2VzKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGludGVyZmFjZSwgIiR7ZnVuY3Rpb25OYW1lfSgiIC4gam9p
bigiLCAiLCBAYXJndW1lbnRzKSAuICIpIiwgInRoaXNPYmplY3QiKTsKKyAgICAgICAgICAgICAg
ICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmli
dXRlLCAwLCAkaW50ZXJmYWNlLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1
bWVudHMpIC4gIikiLCAidGhpc09iamVjdCIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKSBp
ZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdl
bmVyYXRvci0+SXNTVkdBbmltYXRlZFR5cGUoJHR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIG9iaiA9ICRqc1R5cGU7XG4iKTsKQEAg
LTMyODcsMTggKzMyODQsMTggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3QubV8iIC4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5uYW1lIC4gIi5zZXQoc3RhdGUudm0oKSwgJnRoaXNPYmplY3QsIHJlc3VsdCk7XG4iKSBpZiAk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0
ZX07CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdGhpc09iamVjdC5t
XyIgLiAkYXR0cmlidXRlLT5uYW1lIC4gIi5zZXQoc3RhdGUudm0oKSwgJnRoaXNPYmplY3QsIHJl
c3VsdCk7XG4iKSBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWNoZWRBdHRy
aWJ1dGV9OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBy
ZXN1bHQ7XG4iKTsKIAogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1bnNo
aWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRl
bnQsICJqc1VuZGVmaW5lZCgpIiwgMCkpOworICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3Vt
ZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIiwg
MCkpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlw
ZSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkc3ZnUHJv
cGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgaW1wbCgqdGhpc09iamVjdC53cmFwcGVkKCkpO1xuIik7
Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVz
dWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWdu
YXR1cmUsIDAsICRpbnRlcmZhY2UsICJpbXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBq
b2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9
ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVy
ZmFjZSwgImltcGwuJGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3Vt
ZW50cykgLiAiKSIsICJ0aGlzT2JqZWN0IikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpO1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1
ZVVzaW5nUmVmZXJlbmNlcygkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbnRlcmZhY2UsICJp
bXBsLiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4g
IikiLCAidGhpc09iamVjdCIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2lu
Z1JlZmVyZW5jZXMoJGF0dHJpYnV0ZSwgMCwgJGludGVyZmFjZSwgImltcGwuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSIsICJ0aGlzT2JqZWN0
IikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgc2V0RE9NRXhjZXB0aW9uKCZzdGF0ZSwgdGhyb3dTY29wZSwgZWMp
O1xuIik7CkBAIC0zMzA4LDE1ICszMzA1LDE1IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAotICAgICAgICAg
ICAgaWYgKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRPTUpJ
VCJ9KSB7CisgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkRPTUpJVCJ9KSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPiJ9ID0gMTsKICAgICAgICAgICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRp
bnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUg
PSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgICAgICAgICAgbXkgJGdlbmVy
YXRvck5hbWUgPSAkaW50ZXJmYWNlTmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICAgICAgbXkgJGF0dHJpYnV0
ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRnZW5lcmF0b3JO
YW1lID0gJGludGVyZmFjZU5hbWUgLiAkY29kZUdlbmVyYXRvci0+V0tfdWNmaXJzdCgkYXR0cmli
dXRlLT5uYW1lKTsKICAgICAgICAgICAgICAgICBteSAkZG9tSklUQ2xhc3NOYW1lID0gJGdlbmVy
YXRvck5hbWUgLiAiRE9NSklUIjsKICAgICAgICAgICAgICAgICBteSAkZ2V0dGVyID0gR2V0QXR0
cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7
CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9ubHkoJGF0dHJpYnV0ZSkgPyAi
bnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRlcmZhY2UsICRnZW5lcmF0b3JO
YW1lLCAkYXR0cmlidXRlKTsKLSAgICAgICAgICAgICAgICBteSAkcmVzdWx0VHlwZSA9IEdldFJl
c3VsdFR5cGVGaWx0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgICAgICBt
eSAkcmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGF0dHJpYnV0ZS0+dHlwZSk7CiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9t
SklUQ2xhc3NOYW1lKClcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNz
TmFtZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIntcbiIpOwpAQCAtMzQyNiwyMSArMzQyMywyMSBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICBpZiAoIUlzUmVhZG9ubHkoJGF0dHJpYnV0ZSkpIHsKICAg
ICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAK
LSAgICAgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOwotICAg
ICAgICAgICAgbXkgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAg
ICAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CisgICAgICAgICAgICBteSAkdHlwZSA9
ICRhdHRyaWJ1dGUtPnR5cGU7CiAgICAgICAgICAgICBteSAkcHV0RnVuY3Rpb25OYW1lID0gR2V0
QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsK
ICAgICAgICAgICAgIG15ICRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3It
PldLX3VjZmlyc3QoJG5hbWUpOwotICAgICAgICAgICAgbXkgJHNldHRlck1heVRocm93TGVnYWN5
RXhjZXB0aW9uID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntT
ZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CisgICAgICAgICAgICBteSAkc2V0dGVyTWF5
VGhyb3dMZWdhY3lFeGNlcHRpb24gPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntT
ZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CiAKICAgICAgICAgICAgICRpbXBsSW5jbHVk
ZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMSBpZiAkc2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b247CiAKLSAgICAgICAgICAgIG15ICRhdHRyaWJ1dGVDb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSk7CisgICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmd9
XG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7CiAKICAgICAgICAgICAgIGlmICgh
JGF0dHJpYnV0ZS0+aXNTdGF0aWMpIHsKICAgICAgICAgICAgICAgICBteSAkc2V0dGVyRnVuY3Rp
b24gPSAiJHtwdXRGdW5jdGlvbk5hbWV9RnVuY3Rpb24iOwogICAgICAgICAgICAgICAgIG15ICR0
ZW1wbGF0ZVBhcmFtZXRlcnMgPSAkc2V0dGVyRnVuY3Rpb247Ci0gICAgICAgICAgICAgICAgJHRl
bXBsYXRlUGFyYW1ldGVycyAuPSAiLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmV0dXJuRWFy
bHkiIGlmICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TGVuaWVu
dFRoaXN9OworICAgICAgICAgICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVk
VGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5IiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntMZW5pZW50VGhpc307CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgInN0YXRpYyBpbmxpbmUgYm9vbCAke3NldHRlckZ1bmN0aW9ufShFeGVjU3RhdGUmLCAk
e2NsYXNzTmFtZX0mLCBKU1ZhbHVlLCBUaHJvd1Njb3BlJik7XG5cbiIpOwogCkBAIC0zNDYyLDE0
ICszNDU5LDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpO1xuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25zfSkgeworICAg
ICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25z
fSkgewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmIEVOQUJMRShDVVNU
T01fRUxFTUVOVFMpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztc
biIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5o
In0gPSAxOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gJiYgISRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHlPblNl
dHRlcn0pIHsKKyAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9O
b3RDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9O
b3RDaGVja1NlY3VyaXR5T25TZXR0ZXJ9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9N
V2luZG93KCZzdGF0ZSwgdGhpc09iamVjdC53cmFwcGVkKCksIFRocm93U2VjdXJpdHlFcnJvcikp
XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzQ3OCw3ICszNDc1LDcgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIGZhbHNlO1xuIik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChIYXNDdXN0b21TZXR0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMpKSB7CisgICAgICAgICAgICBpZiAoSGFzQ3VzdG9tU2V0dGVyKCRhdHRyaWJ1dGUt
PmV4dGVuZGVkQXR0cmlidXRlcykpIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICB0aGlzT2JqZWN0LnNldCRpbXBsU2V0dGVyRnVuY3Rpb25OYW1lKHN0YXRlLCB2YWx1
ZSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4g
dHJ1ZTtcbiIpOwogICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUtPm5hbWUgZXEgIkV2ZW50SGFu
ZGxlciIpIHsKQEAgLTM0OTAsOCArMzQ4Nyw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHRoaXNPYmplY3Qu
d3JhcHBlZCgpLnNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoJGV2ZW50TmFtZSwgY3JlYXRlSlNF
cnJvckhhbmRsZXIoJnN0YXRlLCB2YWx1ZSwgJnRoaXNPYmplY3QpKTtcbiIpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZl
bnRMaXN0ZW5lci5oIn0gPSAxOwotICAgICAgICAgICAgICAgICAgICBteSAkc2V0dGVyID0gJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhhbmRs
ZXJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIDogJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb2N1
bWVudEV2ZW50SGFuZGxlcn0gPyAic2V0RG9jdW1lbnRFdmVudEhhbmRsZXJBdHRyaWJ1dGUiCisg
ICAgICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntXaW5kb3dFdmVudEhhbmRsZXJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJp
YnV0ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIDogJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RG9jdW1lbnRFdmVudEhhbmRsZXJ9ID8gInNldERvY3VtZW50RXZlbnRIYW5kbGVy
QXR0cmlidXRlIgogICAgICAgICAgICAgICAgICAgICAgICAgOiAic2V0RXZlbnRIYW5kbGVyQXR0
cmlidXRlIjsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHNl
dHRlcihzdGF0ZSwgdGhpc09iamVjdCwgdGhpc09iamVjdC53cmFwcGVkKCksICRldmVudE5hbWUs
IHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTM1MDMsMTEgKzM1MDAsMTEgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAjIFdlIGRvIG5vdCBn
ZW5lcmF0ZSB0aGUgaGVhZGVyIGZpbGUgZm9yIE5hbWVkQ29uc3RydWN0b3Igb2YgY2xhc3MgWFhY
WCwKICAgICAgICAgICAgICAgICAjIHNpbmNlIHdlIGdlbmVyYXRlIHRoZSBOYW1lZENvbnN0cnVj
dG9yIGRlY2xhcmF0aW9uIGludG8gdGhlIGhlYWRlciBmaWxlIG9mIGNsYXNzIFhYWFguCiAgICAg
ICAgICAgICAgICAgaWYgKCRjb25zdHJ1Y3RvclR5cGUgbmUgImFueSIgYW5kICRjb25zdHJ1Y3Rv
clR5cGUgIX4gL05hbWVkJC8pIHsKLSAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJp
YnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgLy8gU2hhZG93aW5n
IGEgYnVpbHQtaW4gY29uc3RydWN0b3IuXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICByZXR1cm4gdGhpc09iamVjdC5wdXREaXJlY3Qoc3RhdGUudm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVlKTtcbiIpOwotICAg
ICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntSZXBsYWNlYWJsZX0pIHsKKyAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e1JlcGxhY2VhYmxlfSkgewogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIHByb3BlcnR5LlxuIik7
CiAgICAgICAgICAgICAgICAgaWYgKEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKSkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gcmVwbGFjZVN0YXRpY1Byb3BlcnR5U2xvdChzdGF0ZS52bSgpLCAmdGhp
c09iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsIFwiJG5hbWVcIiksIHZhbHVl
KTtcbiIpOwpAQCAtMzUxNiwxMiArMzUxMywxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgaWYgKCEkYXR0cmlidXRlLT5pc1N0YXRpYykgewotICAgICAgICAgICAgICAgICAgICBteSAk
cHV0Rm9yd2FyZHMgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1B1dEZvcndhcmRzfTsKKyAgICAgICAgICAgICAgICAgICAgbXkgJHB1dEZvcndhcmRzID0gJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHV0Rm9yd2FyZHN9OwogICAgICAgICAgICAg
ICAgICAgICBpZiAoJHB1dEZvcndhcmRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBteSAk
aW1wbEdldHRlckZ1bmN0aW9uTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwg
JG5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxHZXR0ZXJGdW5jdGlvbk5h
bWUgPSAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBteSAkZm9yd2FyZGVkQXR0cmlidXRlID0gJGNvZGVHZW5lcmF0b3ItPkdldEF0dHJpYnV0ZUZy
b21JbnRlcmZhY2UoJGludGVyZmFjZSwgJHR5cGUtPm5hbWUsICRwdXRGb3J3YXJkcyk7CiAKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkZm9yd2FyZGVkQXR0cmlidXRlLT5zaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25zfSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCRmb3J3YXJkZWRBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVh
Y3Rpb25zfSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztcbiIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKTsKQEAgLTM1MzksNyArMzUzNiw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGZvcndhcmRlZEltcGwuZ2V0
KCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICRhdHRyaWJ1dGUgPSAkZm9yd2FyZGVkQXR0cmlidXRlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgJHR5cGUgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGU7CisgICAgICAgICAgICAg
ICAgICAgICAgICAkdHlwZSA9ICRhdHRyaWJ1dGUtPnR5cGU7CiAgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgfQpAQCAtMzU0NywxMiArMzU0NCwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7XG4iKSBpZiAkc2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAKLSAgICAg
ICAgICAgICAgICBteSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gU2hvdWxkUGFzc1dyYXBwZXJC
eVJlZmVyZW5jZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICRpbnRlcmZhY2UpOworICAgICAgICAg
ICAgICAgIG15ICRzaG91bGRQYXNzQnlSZWZlcmVuY2UgPSBTaG91bGRQYXNzV3JhcHBlckJ5UmVm
ZXJlbmNlKCRhdHRyaWJ1dGUsICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICAgICAgbXkgKCRu
YXRpdmVWYWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIsICRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9LCAiJnN0YXRlIiwgInN0YXRlIiwg
InRoaXNPYmplY3QiKTsKKyAgICAgICAgICAgICAgICBteSAoJG5hdGl2ZVZhbHVlLCAkbWF5VGhy
b3dFeGNlcHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUsICJ2
YWx1ZSIsICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSwgIiZz
dGF0ZSIsICJzdGF0ZSIsICJ0aGlzT2JqZWN0Iik7CiAgICAgICAgICAgICAgICAgaWYgKCEkc2hv
dWxkUGFzc0J5UmVmZXJlbmNlICYmICgkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlw
ZSkgfHwgJGNvZGVHZW5lcmF0b3ItPklzVHlwZWRBcnJheVR5cGUoJHR5cGUpKSkgewogICAgICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0gMTsKLSAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgIiAuIEdldE5hdGl2ZVR5
cGVGcm9tU2lnbmF0dXJlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZSkgLiAiIG5h
dGl2ZVZhbHVlID0gbnVsbHB0cjtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAiIC4gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlLT50
eXBlKSAuICIgbmF0aXZlVmFsdWUgPSBudWxscHRyO1xuIik7CiAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkg
e1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBu
YXRpdmVWYWx1ZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBm
YWxzZSk7XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CkBAIC0zNTkzLDcgKzM1OTAsNyBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGZ1
bmN0aW9uU3RyaW5nID0gInBvZEltcGwuc2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUobmF0aXZl
VmFsdWUiOwogICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nIC49ICIsIGVj
IiBpZiAkc2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAgICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25TdHJpbmcgLj0gIikiOwotICAgICAgICAgICAgICAgICAgICAgICAgJGZ1
bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1
bmN0aW9uU3RyaW5nKSIgaWYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn07CisgICAgICAgICAgICAgICAgICAgICAgICAk
ZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCAk
ZnVuY3Rpb25TdHJpbmcpIiBpZiAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0
ZXJNYXlUaHJvd0V4Y2VwdGlvbn07CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkZnVuY3Rpb25TdHJpbmc7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIHRocm93
U2NvcGUsIGVjKTtcbiIpIGlmICRzZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbjsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMzYxNiw5ICszNjEzLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHNob3VsZFBhc3NCeVJlZmVyZW5jZSA/ICIqbmF0aXZl
VmFsdWUiIDogIldURk1vdmUobmF0aXZlVmFsdWUpIik7CiAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgbXkgJGltcGxlbWVudGVkQnkgPSAkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgICAgICAgICAg
ICAgICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0ltcGxlbWVudGVkQnl9OwogICAgICAgICAgICAgICAgICAgICBpZiAoJGltcGxlbWVudGVk
QnkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxl
bWVudGVkQnl9LmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRl
cygiJHtpbXBsZW1lbnRlZEJ5fS5oIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q29uZGl0aW9uYWx9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50
cywgImltcGwiKSBpZiAhJGF0dHJpYnV0ZS0+aXNTdGF0aWM7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVtZW50ZWRCeX06OiR7ZnVuY3Rp
b25OYW1lfSI7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRhdHRyaWJ1dGUtPmlzU3Rh
dGljKSB7CkBAIC0zNjI3LDEzICszNjI0LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcGwuJHtmdW5jdGlv
bk5hbWV9IjsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIHVu
c2hpZnQoQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUmVmZXJlbmNlcygkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NldHRlckNhbGxXaXRofSwgXEBp
bXBsQ29udGVudCwgImZhbHNlIikpOwotICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1
bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAaW1wbENvbnRlbnQsICJmYWxz
ZSIpKTsKKyAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNh
bGxXaXRoVXNpbmdSZWZlcmVuY2VzKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Nl
dHRlckNhbGxXaXRofSwgXEBpbXBsQ29udGVudCwgImZhbHNlIikpOworICAgICAgICAgICAgICAg
ICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCBcQGltcGxDb250ZW50
LCAiZmFsc2UiKSk7CiAKICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiZWMi
KSBpZiAkc2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAKICAgICAgICAgICAgICAgICAg
ICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRmdW5jdGlvbk5hbWUoIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKSI7Ci0gICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJw
cm9wYWdhdGVFeGNlcHRpb24oc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlm
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyTWF5VGhy
b3dFeGNlcHRpb259OworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJv
cGFnYXRlRXhjZXB0aW9uKHN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiAk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn07
CiAKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGZ1bmN0aW9u
U3RyaW5nO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IHNldERPTUV4Y2VwdGlvbigmc3RhdGUsIHRocm93U2NvcGUsIGVjKTtcbiIpIGlmICRzZXR0ZXJN
YXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbjsKQEAgLTM2ODMsNyArMzY4MCw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAg
ICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAg
ICAgICAgICAgbmV4dCBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwotICAg
ICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntB
cHBsZUNvcHlyaWdodH0pIHsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgewogICAgICAgICAgICAgICAgIGlmICghJGluQXBw
bGVDb3B5cmlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRi
ZWdpbkFwcGxlQ29weXJpZ2h0Rm9yU291cmNlRmlsZXMpOwogICAgICAgICAgICAgICAgICAgICAk
aW5BcHBsZUNvcHlyaWdodCA9IDE7CkBAIC0zNjkzLDE4ICszNjkwLDE4IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBteSAkaXNDdXN0b20gPSBIYXNDdXN0b21NZXRo
b2QoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcyk7CisgICAgICAgICAg
ICBteSAkaXNDdXN0b20gPSBIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMpOwogICAgICAgICAgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5jdGlvbi0+e292ZXJs
b2Fkc30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7CiAKLSAgICAgICAgICAgIG15
ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn07CisgICAgICAgICAgICBteSAk
bWF5VGhyb3dMZWdhY3lFeGNlcHRpb24gPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e01heVRocm93TGVnYWN5RXhjZXB0aW9ufTsKIAogICAgICAgICAgICAgbmV4dCBpZiAkaXNDdXN0
b20gJiYgJGlzT3ZlcmxvYWRlZCAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CiAK
LSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+dHlwZSkgdW5sZXNzICRpc0N1c3RvbSBvciBJc1JldHVybmluZ1Byb21pc2UoJGZ1bmN0
aW9uKTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkZnVuY3Rpb24t
PnR5cGUpIHVubGVzcyAkaXNDdXN0b20gb3IgSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbik7
CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKIAotICAgICAgICAgICAgbXkgJGNvbmRpdGlv
bmFsID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlv
bmFsfTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwogICAgICAgICAgICAgaWYgKCRjb25kaXRpb25hbCkg
ewogICAgICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25h
bCk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25h
bFN0cmluZ31cbiIpOwpAQCAtMzcxOCw3ICszNzE1LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgICAgICAgICAkZnVuY3Rpb25SZXR1cm4gPSAic3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25JbXBsZW1l
bnRhdGlvbk5hbWUgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVk
QXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CiAKICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTVByb21pc2UuaCIpIGlmIElzUmV0dXJu
aW5nUHJvbWlzZSgkZnVuY3Rpb24pOwogCkBAIC0zNzUwLDcgKzM3NDcsNyBAQCBFTkQKIAogICAg
ICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAKLSAgICAg
ICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q0VS
ZWFjdGlvbnN9KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDRVJlYWN0aW9uc30pIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVu
dFJlYWN0aW9uU3RhY2s7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiNlbmRpZlxuIik7CkBAIC0zNzc0LDEwICszNzcxLDEwIEBAIEVORAogICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRmdW5jdGlvbiwgJGZ1bmN0
aW9uU3RyaW5nLCAiICAgICIsICRzdmdQcm9wZXJ0eVR5cGUsICRpbnRlcmZhY2UpOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbXkgJG1l
dGhvZE5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgICAgICBt
eSAkbWV0aG9kTmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKICAgICAgICAgICAgICAgICBpZiAoSXNS
ZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbikgJiYgISRpc0N1c3RvbSkgewogICAgICAgICAgICAg
ICAgICAgICBteSAkdGVtcGxhdGVQYXJhbWV0ZXJzID0gIiR7ZnVuY3Rpb25OYW1lfUNhbGxlciI7
Ci0gICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydCIgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIG5vdCAkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0pOworICAgICAgICAg
ICAgICAgICAgICAkdGVtcGxhdGVQYXJhbWV0ZXJzIC49ICIsIENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQiIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJ
ZGVudGlmaWVyfSBhbmQgbm90ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGlj
SWRlbnRpZmllcn0pOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gQmluZGluZ0NhbGxlcjwkY2xhc3NOYW1lPjo6Y2FsbFByb21pc2VPcGVyYXRpb248
JHt0ZW1wbGF0ZVBhcmFtZXRlcnN9PihzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSwgXCIke21ldGhv
ZE5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
fVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKQEAg
LTM3ODUsNyArMzc4Miw3IEBAIEVORAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgIG15ICRjbGFzc1BhcmFtZXRlclR5cGUgPSAkY2xhc3NOYW1lIGVxICJKU0V2
ZW50VGFyZ2V0IiA/ICJKU0V2ZW50VGFyZ2V0V3JhcHBlcioiIDogIiR7Y2xhc3NOYW1lfSoiOwog
ICAgICAgICAgICAgICAgICAgICBteSAkdGVtcGxhdGVQYXJhbWV0ZXJzID0gIiR7ZnVuY3Rpb25O
YW1lfUNhbGxlciI7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJGZ1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KSB7
CisgICAgICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57UHVibGljSWRlbnRpZmllcn0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICR0ZW1wbGF0
ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCI7CiAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKElzUmV0dXJuaW5nUHJvbWlzZSgkZnVuY3Rpb24pKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIHRoaXMgc3BlY2lmaWMg
aGFuZGxpbmcgZm9yIGN1c3RvbSBwcm9taXNlLXJldHVybmluZyBmdW5jdGlvbnMuCkBAIC0zODAz
LDcgKzM4MDAsNyBAQCBFTkQKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CiAKLSAgICAgICAgICAg
ICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0g
YW5kICEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVj
a1NlY3VyaXR5fSkgeworICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSBhbmQgISRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCksIFRocm93U2VjdXJp
dHlFcnJvcikpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM4NzAsOCAr
Mzg2Nyw4IEBAIEVORAogICAgICAgICBpZiAoJG51bUNhY2hlZEF0dHJpYnV0ZXMgPiAwKSB7CiAg
ICAgICAgICAgICBmb3JlYWNoIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZSA9ICRfOwotICAgICAgICAgICAgICAgIGlmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhY2hlZEF0dHJpYnV0ZX0pIHsK
LSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdmlzaXRvci5hcHBl
bmQoJnRoaXNPYmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSAuICIpO1xu
Iik7CisgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NhY2hlZEF0dHJpYnV0ZX0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fIiAuICRhdHRyaWJ1dGUtPm5h
bWUgLiAiKTtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMzg5Myw3ICszODkwLDcgQEAgRU5ECiAKICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5j
dGlvbikgewogICAgICAgICAjIEZJWE1FOiBTaG91bGQgdGhpcyB3b3JrIGZvciBhbGwgc3RyaW5n
IHR5cGVzLgotICAgICAgICAkaW1wbEluY2x1ZGVzeyJVUkwuaCJ9ID0gMSBpZiAkaW5kZXhlZEdl
dHRlckZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7CisgICAg
ICAgICRpbXBsSW5jbHVkZXN7IlVSTC5oIn0gPSAxIGlmICRpbmRleGVkR2V0dGVyRnVuY3Rpb24t
PnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9
fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxp
c3QiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAg
ICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKQEAgLTQwODYsMjEgKzQwODMsMjEg
QEAgc3ViIEdlbmVyYXRlU2VyaWFsaXplckZ1bmN0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiIpOwogCiAgICAgbXkgQHNlcmlhbGl6ZWRBdHRyaWJ1dGVzID0gKCk7Ci0gICAgZm9yZWFj
aCBteSAkYXR0cmlidXRlX25hbWUgKEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5hdHRyaWJ1
dGVzfSkgewotICAgICAgICBteSAkZm91bmRfYXR0cmlidXRlID0gMDsKKyAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGVOYW1lIChAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+YXR0cmlidXRlc30p
IHsKKyAgICAgICAgbXkgJGZvdW5kQXR0cmlidXRlID0gMDsKICAgICAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBpZiAo
JGF0dHJpYnV0ZV9uYW1lIGVxICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSkgeworICAgICAg
ICAgICAgaWYgKCRhdHRyaWJ1dGVOYW1lIGVxICRhdHRyaWJ1dGUtPm5hbWUpIHsKICAgICAgICAg
ICAgICAgICBwdXNoIEBzZXJpYWxpemVkQXR0cmlidXRlcywgJGF0dHJpYnV0ZTsKLSAgICAgICAg
ICAgICAgICAkZm91bmRfYXR0cmlidXRlID0gMTsKKyAgICAgICAgICAgICAgICAkZm91bmRBdHRy
aWJ1dGUgPSAxOwogICAgICAgICAgICAgICAgIGxhc3Q7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIGRpZSAiRmFpbGVkIHRvIGZpbmQgXCJzZXJpYWxpemVyXCIg
YXR0cmlidXRlIFwiJGF0dHJpYnV0ZV9uYW1lXCIgaW4gJGludGVyZmFjZU5hbWUiIGlmICEkZm91
bmRfYXR0cmlidXRlOworICAgICAgICBkaWUgIkZhaWxlZCB0byBmaW5kIFwic2VyaWFsaXplclwi
IGF0dHJpYnV0ZSBcIiRhdHRyaWJ1dGVOYW1lXCIgaW4gJGludGVyZmFjZU5hbWUiIGlmICEkZm91
bmRBdHRyaWJ1dGU7CiAgICAgfQogCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAc2VyaWFs
aXplZEF0dHJpYnV0ZXMpIHsKLSAgICAgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0gJGF0dHJpYnV0ZS0+bmFtZTsKIAogICAgICAg
ICBteSAkZ2V0RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgYXV0byAke25hbWV9VmFsdWUgPSAke2dldEZ1bmN0aW9uTmFtZX1HZXR0ZXIoKnN0YXRlLCAq
dGhpc09iamVjdCwgdGhyb3dTY29wZSk7XG4iKTsKQEAgLTQxNzgsNyArNDE3NSw3IEBAIHN1YiBH
ZW5lcmF0ZUNhbGxXaXRoCiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgIipkb2N1bWVudCIp
OwogICAgIH0KICAgICBpZiAoJGZ1bmN0aW9uIGFuZCAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRB
dHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJTY3JpcHRBcmd1bWVudHMiKSkgewotICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1l
bnRzPiBzY3JpcHRBcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoJHN0
YXRlUG9pbnRlciwgIiAuIEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSAuICIpKTtcbiIpOworICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmUHRyPEluc3BlY3Rvcjo6U2NyaXB0QXJn
dW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMo
JHN0YXRlUG9pbnRlciwgIiAuIEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9IC4gIikpO1xuIik7CiAg
ICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmg+In0gPSAx
OwogICAgICAgICAkaW1wbEluY2x1ZGVzeyI8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3Rv
cnkuaD4ifSA9IDE7CiAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgIldURk1vdmUoc2NyaXB0
QXJndW1lbnRzKSIpOwpAQCAtNDE5NiwxNyArNDE5MywxNiBAQCBzdWIgR2VuZXJhdGVBcmd1bWVu
dHNDb3VudENoZWNrCiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFj
ZSA9IHNoaWZ0OwogCi0gICAgbXkgJG51bU1hbmRhdG9yeVBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5w
YXJhbWV0ZXJzfTsKLSAgICBmb3JlYWNoIG15ICRwYXJhbSAocmV2ZXJzZShAeyRmdW5jdGlvbi0+
cGFyYW1ldGVyc30pKSB7Ci0gICAgICAgIGlmICgkcGFyYW0tPmlzT3B0aW9uYWwgb3IgJHBhcmFt
LT5pc1ZhcmlhZGljKSB7Ci0gICAgICAgICAgICAkbnVtTWFuZGF0b3J5UGFyYW1zLS07CisgICAg
bXkgJG51bU1hbmRhdG9yeUFyZ3VtZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9OworICAg
IGZvcmVhY2ggbXkgJGFyZ3VtZW50IChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSkg
eworICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsIG9yICRhcmd1bWVudC0+aXNWYXJp
YWRpYykgeworICAgICAgICAgICAgJG51bU1hbmRhdG9yeUFyZ3VtZW50cy0tOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbGFzdDsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoJG51
bU1hbmRhdG9yeVBhcmFtcyA+PSAxKQotICAgIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgJG51bU1hbmRhdG9y
eVBhcmFtcykpXG4iKTsKKyAgICBpZiAoJG51bU1hbmRhdG9yeUFyZ3VtZW50cyA+PSAxKSB7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3Vt
ZW50Q291bnQoKSA8ICRudW1NYW5kYXRvcnlBcmd1bWVudHMpKVxuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOwogICAgIH0K
IH0KQEAgLTQyNTksOSArNDI1NSw5IEBAIHN1YiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0
aW9uQ2FsbAogewogICAgIG15ICgkZnVuY3Rpb24pID0gQF87CiAKLSAgICByZXR1cm4gMCB1bmxl
c3MgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhj
ZXB0aW9ufTsKKyAgICByZXR1cm4gMCB1bmxlc3MgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CiAKLSAgICByZXR1cm4gMSBpZiAkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+dHlwZSAmJiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAidm9p
ZCI7CisgICAgcmV0dXJuIDEgaWYgJGZ1bmN0aW9uLT50eXBlICYmICRmdW5jdGlvbi0+dHlwZS0+
bmFtZSBlcSAidm9pZCI7CiAgICAgcmV0dXJuIDEgaWYgSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5j
dGlvbik7CiAKICAgICByZXR1cm4gMDsKQEAgLTQyNzUsMTEgKzQyNzEsMTEgQEAgc3ViIEdlbmVy
YXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gJGNvZGVH
ZW5lcmF0b3ItPkdldFZpc2libGVJbnRlcmZhY2VOYW1lKCRpbnRlcmZhY2UpOwogICAgIG15IEBh
cmd1bWVudHM7CiAgICAgbXkgJGZ1bmN0aW9uTmFtZTsKLSAgICBteSAkaW1wbGVtZW50ZWRCeSA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5
fTsKLSAgICBteSAkbnVtUGFyYW1ldGVycyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsKKyAg
ICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1w
bGVtZW50ZWRCeX07CisgICAgbXkgJG51bUFyZ3VtZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVu
dHN9OwogCiAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIiR7
aW1wbGVtZW50ZWRCeX0uaCIsICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0
aW9uYWx9KTsKICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlmICEkZnVuY3Rp
b24tPmlzU3RhdGljOwogICAgICAgICAkZnVuY3Rpb25OYW1lID0gIldlYkNvcmU6OiR7aW1wbGVt
ZW50ZWRCeX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKICAgICB9IGVsc2lmICgk
ZnVuY3Rpb24tPmlzU3RhdGljKSB7CkBAIC00MjkxLDEwICs0Mjg3LDEwIEBAIHN1YiBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjawogICAgIH0KIAogICAgIG15ICRxdW90ZWRGdW5jdGlvbk5hbWU7Ci0g
ICAgaWYgKCEkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3Ry
dWN0b3J9KSB7Ci0gICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7
CisgICAgaWYgKCEkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yfSkg
eworICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKICAgICAgICAgJHF1b3RlZEZ1
bmN0aW9uTmFtZSA9ICJcIiRuYW1lXCIiOwotICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVy
YXRlQ2FsbFdpdGhVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAJG91dHB1dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpIiwgJGZ1bmN0aW9uKSk7CisgICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2Vu
ZXJhdGVDYWxsV2l0aFVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDYWxsV2l0aH0sIFxAJG91dHB1dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpIiwgJGZ1bmN0aW9uKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgJHF1b3RlZEZ1bmN0aW9u
TmFtZSA9ICJudWxscHRyIjsKICAgICB9CkBAIC00MzAzLDM4ICs0Mjk5LDM4IEBAIHN1YiBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmluZGluZy5oIn0g
PSAxOwogCiAgICAgbXkgJGFyZ3VtZW50SW5kZXggPSAwOwotICAgIGZvcmVhY2ggbXkgJHBhcmFt
ZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgIG15ICR0eXBlID0gJHBh
cmFtZXRlci0+dHlwZTsKKyAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskZnVuY3Rpb24tPmFy
Z3VtZW50c30pIHsKKyAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CiAKLSAgICAg
ICAgZGllICJPcHRpb25hbCBwYXJhbWV0ZXJzIG9mIG5vbi1udWxsYWJsZSB3cmFwcGVyIHR5cGVz
IGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICEkdHlwZS0+
aXNOdWxsYWJsZSAmJiAkY29kZUdlbmVyYXRvci0+SXNXcmFwcGVyVHlwZSgkdHlwZSk7Ci0gICAg
ICAgIGRpZSAiT3B0aW9uYWwgcGFyYW1ldGVycyBwcmVjZWRpbmcgdmFyaWFkaWMgcGFyYW1ldGVy
cyBhcmUgbm90IHN1cHBvcnRlZCIgaWYgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwgJiYgIEB7JGZ1
bmN0aW9uLT5wYXJhbWV0ZXJzfVskbnVtUGFyYW1ldGVycyAtIDFdLT5pc1ZhcmlhZGljKTsKKyAg
ICAgICAgZGllICJPcHRpb25hbCBhcmd1bWVudHMgb2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlw
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmICRhcmd1bWVudC0+aXNPcHRpb25hbCAmJiAhJHR5cGUt
PmlzTnVsbGFibGUgJiYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOworICAg
ICAgICBkaWUgIk9wdGlvbmFsIGFyZ3VtZW50cyBwcmVjZWRpbmcgdmFyaWFkaWMgYXJndW1lbnRz
IGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICBAeyRmdW5j
dGlvbi0+YXJndW1lbnRzfVskbnVtQXJndW1lbnRzIC0gMV0tPmlzVmFyaWFkaWMpOwogCi0gICAg
ICAgIGlmICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRl
ZmF1bHQpKSB7Ci0gICAgICAgICAgICAjIEFzIHBlciBXZWIgSURMLCBvcHRpb25hbCBkaWN0aW9u
YXJ5IHBhcmFtZXRlcnMgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGhhdmUgYSBkZWZhdWx0IHZh
bHVlIG9mIGFuIGVtcHR5IGRpY3Rpb25hcnksIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgot
ICAgICAgICAgICAgJHBhcmFtZXRlci0+ZGVmYXVsdCgiW10iKSBpZiAkdHlwZS0+bmFtZSBlcSAi
RGljdGlvbmFyeSIgb3IgJGNvZGVHZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUoJHR5cGUpOwor
ICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVudC0+
ZGVmYXVsdCkpIHsKKyAgICAgICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rp
b25hcnkgYXJndW1lbnRzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBoYXZlIGEgZGVmYXVsdCB2
YWx1ZSBvZiBhbiBlbXB0eSBkaWN0aW9uYXJ5LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4K
KyAgICAgICAgICAgICRhcmd1bWVudC0+ZGVmYXVsdCgiW10iKSBpZiAkdHlwZS0+bmFtZSBlcSAi
RGljdGlvbmFyeSIgb3IgJGNvZGVHZW5lcmF0b3ItPklzRGljdGlvbmFyeVR5cGUoJHR5cGUpOwog
Ci0gICAgICAgICAgICAjIFdlIHVzZSB1bmRlZmluZWQgYXMgZGVmYXVsdCB2YWx1ZSBmb3Igb3B0
aW9uYWwgcGFyYW1ldGVycyBvZiB0eXBlICdhbnknIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNl
LgotICAgICAgICAgICAgJHBhcmFtZXRlci0+ZGVmYXVsdCgidW5kZWZpbmVkIikgaWYgJHR5cGUt
Pm5hbWUgZXEgImFueSI7CisgICAgICAgICAgICAjIFdlIHVzZSB1bmRlZmluZWQgYXMgZGVmYXVs
dCB2YWx1ZSBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIG9mIHR5cGUgJ2FueScgdW5sZXNzIHNwZWNp
ZmllZCBvdGhlcndpc2UuCisgICAgICAgICAgICAkYXJndW1lbnQtPmRlZmF1bHQoInVuZGVmaW5l
ZCIpIGlmICR0eXBlLT5uYW1lIGVxICJhbnkiOwogCi0gICAgICAgICAgICAjIFdlIHVzZSB0aGUg
bnVsbCBzdHJpbmcgYXMgZGVmYXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVycyBvZiB0eXBlIERPTVN0
cmluZyB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZS4KLSAgICAgICAgICAgICRwYXJhbWV0ZXIt
PmRlZmF1bHQoIm51bGwiKSBpZiAkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsK
KyAgICAgICAgICAgICMgV2UgdXNlIHRoZSBudWxsIHN0cmluZyBhcyBkZWZhdWx0IHZhbHVlIGZv
ciBhcmd1bWVudHMgb2YgdHlwZSBET01TdHJpbmcgdW5sZXNzIHNwZWNpZmllZCBvdGhlcndpc2Uu
CisgICAgICAgICAgICAkYXJndW1lbnQtPmRlZmF1bHQoIm51bGwiKSBpZiAkY29kZUdlbmVyYXRv
ci0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKIAotICAgICAgICAgICAgIyBBcyBwZXIgV2ViIElETCwg
cGFzc2luZyB1bmRlZmluZWQgZm9yIGEgbnVsbGFibGUgcGFyYW1ldGVyIGlzIHRyZWF0ZWQgYXMg
bnVsbC4gVGhlcmVmb3JlLCB1c2UgbnVsbCBhcwotICAgICAgICAgICAgIyBkZWZhdWx0IHZhbHVl
IGZvciBudWxsYWJsZSBwYXJhbWV0ZXJzIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgotICAg
ICAgICAgICAgJHBhcmFtZXRlci0+ZGVmYXVsdCgibnVsbCIpIGlmICR0eXBlLT5pc051bGxhYmxl
OworICAgICAgICAgICAgIyBBcyBwZXIgV2ViIElETCwgcGFzc2luZyB1bmRlZmluZWQgZm9yIGEg
bnVsbGFibGUgYXJndW1lbnQgaXMgdHJlYXRlZCBhcyBudWxsLiBUaGVyZWZvcmUsIHVzZSBudWxs
IGFzCisgICAgICAgICAgICAjIGRlZmF1bHQgdmFsdWUgZm9yIG51bGxhYmxlIGFyZ3VtZW50cyB1
bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4KKyAgICAgICAgICAgICRhcmd1bWVudC0+ZGVmYXVs
dCgibnVsbCIpIGlmICR0eXBlLT5pc051bGxhYmxlOwogCi0gICAgICAgICAgICAjIEZvciBjYWxs
YmFjayBwYXJhbWV0ZXJzLCB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzIHRyZWF0IHVuZGVmaW5lZCBh
cyBudWxsLCBzbyB1c2UgbnVsbCBhcyBpbXBsaWNpdCBkZWZhdWx0IHZhbHVlLgotICAgICAgICAg
ICAgJHBhcmFtZXRlci0+ZGVmYXVsdCgibnVsbCIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxi
YWNrSW50ZXJmYWNlKCR0eXBlKTsKKyAgICAgICAgICAgICMgRm9yIGNhbGxiYWNrIGFyZ3VtZW50
cywgdGhlIGdlbmVyYXRlZCBiaW5kaW5ncyB0cmVhdCB1bmRlZmluZWQgYXMgbnVsbCwgc28gdXNl
IG51bGwgYXMgaW1wbGljaXQgZGVmYXVsdCB2YWx1ZS4KKyAgICAgICAgICAgICRhcmd1bWVudC0+
ZGVmYXVsdCgibnVsbCIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0NhbGxiYWNrSW50ZXJmYWNlKCR0
eXBlKTsKICAgICAgICAgfQogCi0gICAgICAgIG15ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsK
KyAgICAgICAgbXkgJG5hbWUgPSAkYXJndW1lbnQtPm5hbWU7CiAgICAgICAgIG15ICR2YWx1ZSA9
ICRuYW1lOwogCiAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNDYWxsYmFja0ludGVyZmFj
ZSgkdHlwZSkpIHsKICAgICAgICAgICAgIG15ICRjYWxsYmFja0NsYXNzTmFtZSA9IEdldENhbGxi
YWNrQ2xhc3NOYW1lKCR0eXBlLT5uYW1lKTsKICAgICAgICAgICAgIG15ICR0eXBlTmFtZSA9ICR0
eXBlLT5uYW1lOwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJGNhbGxiYWNrQ2xhc3NOYW1l
LmgifSA9IDE7Ci0gICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCkgeworICAg
ICAgICAgICAgaWYgKCRhcmd1bWVudC0+aXNPcHRpb25hbCkgewogICAgICAgICAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBSZWZQdHI8JHR5cGVOYW1lPiAkbmFtZTtcbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIXN0YXRlLT5hcmd1bWVu
dCgkYXJndW1lbnRJbmRleCkuaXNVbmRlZmluZWRPck51bGwoKSkge1xuIik7CiAgICAgICAgICAg
ICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNl
KCR0eXBlKSkgewpAQCAtNDM1MSw3ICs0MzQ3LDcgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0No
ZWNrCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZGll
ICJDYWxsYmFja0ludGVyZmFjZSBkb2VzIG5vdCBzdXBwb3J0IFZhcmlhZGljIHBhcmFtZXRlciIg
aWYgJHBhcmFtZXRlci0+aXNWYXJpYWRpYzsKKyAgICAgICAgICAgICAgICBkaWUgIkNhbGxiYWNr
SW50ZXJmYWNlIGRvZXMgbm90IHN1cHBvcnQgVmFyaWFkaWMgYXJndW1lbnRzIiBpZiAkYXJndW1l
bnQtPmlzVmFyaWFkaWM7CiAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Z1
bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNlKCR0eXBlKSkgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoJGFyZ3VtZW50SW5kZXgpLmlzRnVuY3Rpb24oKSkpXG4iKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewpAQCAtNDM2Niw5ICs0MzYyLDkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVy
c0NoZWNrCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgJHZh
bHVlID0gIldURk1vdmUoJG5hbWUpIjsKLSAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNW
YXJpYWRpYykgeworICAgICAgICB9IGVsc2lmICgkYXJndW1lbnQtPmlzVmFyaWFkaWMpIHsKICAg
ICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQ29udmVydC5oIn0gPSAxOwotICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCR0eXBlLCAkZnVuY3Rpb24tPnNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkdHlwZSwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25kaXRpb25hbH0pOwogICAgICAgICAKICAgICAgICAgICAgIG15ICRtZXRhVHlwZSA9
IEdldElETFR5cGUoJGludGVyZmFjZSwgJHR5cGUpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIGF1dG8gJG5hbWUgPSBjb252ZXJ0VmFyaWFkaWNBcmd1bWVudHM8JG1ldGFU
eXBlPigqc3RhdGUsICRhcmd1bWVudEluZGV4KTtcbiIpOwpAQCAtNDM4NiwxMCArNDM4MiwxMCBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgIG15ICRkZWZpbmVPcHRp
b25hbFZhbHVlID0gImF1dG8gb3B0aW9uYWxWYWx1ZSI7CiAgICAgICAgICAgICBteSAkaW5kZW50
ID0gIiI7CiAKLSAgICAgICAgICAgIGRpZSAiVmFyaWFkaWMgcGFyYW1ldGVyIGlzIGFscmVhZHkg
aGFuZGxlZCBoZXJlIiBpZiAkcGFyYW1ldGVyLT5pc1ZhcmlhZGljOwotICAgICAgICAgICAgbXkg
JGFyZ3VtZW50TG9va3VwTWV0aG9kID0gJHBhcmFtZXRlci0+aXNPcHRpb25hbCA/ICJhcmd1bWVu
dCIgOiAidW5jaGVja2VkQXJndW1lbnQiOworICAgICAgICAgICAgZGllICJWYXJpYWRpYyBhcmd1
bWVudCBpcyBhbHJlYWR5IGhhbmRsZWQgaGVyZSIgaWYgJGFyZ3VtZW50LT5pc1ZhcmlhZGljOwor
ICAgICAgICAgICAgbXkgJGFyZ3VtZW50TG9va3VwTWV0aG9kID0gJGFyZ3VtZW50LT5pc09wdGlv
bmFsID8gImFyZ3VtZW50IiA6ICJ1bmNoZWNrZWRBcmd1bWVudCI7CiAKLSAgICAgICAgICAgIGlm
ICgkcGFyYW1ldGVyLT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRwYXJhbWV0ZXItPmRlZmF1bHQp
KSB7CisgICAgICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRh
cmd1bWVudC0+ZGVmYXVsdCkpIHsKICAgICAgICAgICAgICAgICAkbmF0aXZlVHlwZSA9ICJPcHRp
b25hbDwkY2xhc3NOYW1lPiI7CiAgICAgICAgICAgICAgICAgJG9wdGlvbmFsVmFsdWUgPSAkbmFt
ZTsKICAgICAgICAgICAgICAgICAkZGVmaW5lT3B0aW9uYWxWYWx1ZSA9ICRuYW1lOwpAQCAtNDM5
OCwxMiArNDM5NCwxMiBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICR7bmFtZX1WYWx1ZSA9IHN0YXRlLT4kYXJn
dW1lbnRMb29rdXBNZXRob2QoJGFyZ3VtZW50SW5kZXgpO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgJG5hdGl2ZVR5cGUgJG5hbWU7XG4iKTsKIAotICAgICAgICAg
ICAgaWYgKCRwYXJhbWV0ZXItPmlzT3B0aW9uYWwpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWRl
ZmluZWQgJHBhcmFtZXRlci0+ZGVmYXVsdCkgeworICAgICAgICAgICAgaWYgKCRhcmd1bWVudC0+
aXNPcHRpb25hbCkgeworICAgICAgICAgICAgICAgIGlmICghZGVmaW5lZCAkYXJndW1lbnQtPmRl
ZmF1bHQpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghJHtuYW1lfVZhbHVlLmlzVW5kZWZpbmVkKCkpIHtcbiIpOwogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAo
JHtuYW1lfVZhbHVlLmlzVW5kZWZpbmVkKCkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9ICIgLiBHZW5lcmF0ZURlZmF1bHRWYWx1
ZSgkaW50ZXJmYWNlLCAkcGFyYW1ldGVyKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkbmFtZSA9ICIgLiBHZW5lcmF0ZURlZmF1bHRW
YWx1ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUsICRhcmd1bWVudC0+ZGVmYXVsdCkgLiAi
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBlbHNl
IHtcbiIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAkaW5kZW50ID0gIiAg
ICAiOwpAQCAtNDQyMCwxOCArNDQxNiwxOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG15ICRvdXRlcjsKICAgICAgICAgICAgIG15
ICRpbm5lcjsKLSAgICAgICAgICAgIG15ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZUZyb21T
aWduYXR1cmUoJGludGVyZmFjZSwgJHBhcmFtZXRlcik7CisgICAgICAgICAgICBteSAkbmF0aXZl
VHlwZSA9IEdldE5hdGl2ZVR5cGUoJGludGVyZmFjZSwgJGFyZ3VtZW50LT50eXBlKTsKICAgICAg
ICAgICAgIG15ICRpc1RlYXJPZmYgPSAkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJHR5cGUpICYmICRpbnRlcmZhY2VOYW1lICF+IC9MaXN0JC87Ci0gICAgICAgICAgICBt
eSAkc2hvdWxkUGFzc0J5UmVmZXJlbmNlID0gJGlzVGVhck9mZiB8fCBTaG91bGRQYXNzV3JhcHBl
ckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIsICRpbnRlcmZhY2UpOworICAgICAgICAgICAgbXkgJHNo
b3VsZFBhc3NCeVJlZmVyZW5jZSA9ICRpc1RlYXJPZmYgfHwgU2hvdWxkUGFzc1dyYXBwZXJCeVJl
ZmVyZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICBkaWUgIlZhcmlh
ZGljIHBhcmFtZXRlciBpcyBhbHJlYWR5IGhhbmRsZWQgaGVyZSIgaWYgJHBhcmFtZXRlci0+aXNW
YXJpYWRpYzsKLSAgICAgICAgICAgIG15ICRhcmd1bWVudExvb2t1cE1ldGhvZCA9ICRwYXJhbWV0
ZXItPmlzT3B0aW9uYWwgPyAiYXJndW1lbnQiIDogInVuY2hlY2tlZEFyZ3VtZW50IjsKKyAgICAg
ICAgICAgIGRpZSAiVmFyaWFkaWMgYXJndW1lbnQgaXMgYWxyZWFkeSBoYW5kbGVkIGhlcmUiIGlm
ICRhcmd1bWVudC0+aXNWYXJpYWRpYzsKKyAgICAgICAgICAgIG15ICRhcmd1bWVudExvb2t1cE1l
dGhvZCA9ICRhcmd1bWVudC0+aXNPcHRpb25hbCA/ICJhcmd1bWVudCIgOiAidW5jaGVja2VkQXJn
dW1lbnQiOwogCiAgICAgICAgICAgICBpZiAoISRzaG91bGRQYXNzQnlSZWZlcmVuY2UgJiYgKCRj
b2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCR0eXBlKSB8fCAkY29kZUdlbmVyYXRvci0+SXNU
eXBlZEFycmF5VHlwZSgkdHlwZSkpKSB7CiAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
PHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJGNoZWNrZWRBcmd1
bWVudCA9ICJzdGF0ZS0+JGFyZ3VtZW50TG9va3VwTWV0aG9kKCRhcmd1bWVudEluZGV4KSI7CiAg
ICAgICAgICAgICAgICAgbXkgJHVuY2hlY2tlZEFyZ3VtZW50ID0gInN0YXRlLT51bmNoZWNrZWRB
cmd1bWVudCgkYXJndW1lbnRJbmRleCkiOwotICAgICAgICAgICAgICAgIG15ICgkbmF0aXZlVmFs
dWUsICRtYXlUaHJvd0V4Y2VwdGlvbikgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJHBh
cmFtZXRlciwgJHVuY2hlY2tlZEFyZ3VtZW50LCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICBteSAoJG5hdGl2
ZVZhbHVlLCAkbWF5VGhyb3dFeGNlcHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2Us
ICRhcmd1bWVudCwgJHVuY2hlY2tlZEFyZ3VtZW50LCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NvbmRpdGlvbmFsfSk7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICRuYXRpdmVUeXBlICRuYW1lID0gbnVsbHB0cjtcbiIpOwogICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISRjaGVja2VkQXJndW1lbnQuaXNVbmRlZmlu
ZWRPck51bGwoKSkge1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICAkbmFtZSA9ICRuYXRpdmVWYWx1ZTtcbiIpOwpAQCAtNDQ0MSwxMiArNDQzNywxMiBA
QCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAgICAgICAgICAgICAgJHZhbHVlID0gIldURk1vdmUo
JG5hbWUpIjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCRwYXJh
bWV0ZXItPmlzT3B0aW9uYWwgJiYgZGVmaW5lZCgkcGFyYW1ldGVyLT5kZWZhdWx0KSAmJiAhV2ls
bENvbnZlcnRVbmRlZmluZWRUb0RlZmF1bHRQYXJhbWV0ZXJWYWx1ZSgkdHlwZSwgJHBhcmFtZXRl
ci0+ZGVmYXVsdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGRlZmF1bHRWYWx1ZSA9ICRw
YXJhbWV0ZXItPmRlZmF1bHQ7CisgICAgICAgICAgICAgICAgaWYgKCRhcmd1bWVudC0+aXNPcHRp
b25hbCAmJiBkZWZpbmVkKCRhcmd1bWVudC0+ZGVmYXVsdCkgJiYgIVdpbGxDb252ZXJ0VW5kZWZp
bmVkVG9EZWZhdWx0UGFyYW1ldGVyVmFsdWUoJHR5cGUsICRhcmd1bWVudC0+ZGVmYXVsdCkpIHsK
KyAgICAgICAgICAgICAgICAgICAgbXkgJGRlZmF1bHRWYWx1ZSA9ICRhcmd1bWVudC0+ZGVmYXVs
dDsKIAogICAgICAgICAgICAgICAgICAgICAjIFN0cmluZy1yZWxhdGVkIG9wdGltaXphdGlvbnMu
CiAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0
eXBlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbXkgJHVzZUF0b21pY1N0cmluZyA9ICRw
YXJhbWV0ZXItPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21pY1N0cmluZ307CisgICAgICAgICAg
ICAgICAgICAgICAgICBteSAkdXNlQXRvbWljU3RyaW5nID0gJGFyZ3VtZW50LT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntBdG9taWNTdHJpbmd9OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRk
ZWZhdWx0VmFsdWUgZXEgIm51bGwiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRl
ZmF1bHRWYWx1ZSA9ICR1c2VBdG9taWNTdHJpbmcgPyAibnVsbEF0b20iIDogIlN0cmluZygpIjsK
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRkZWZhdWx0VmFsdWUgZXEgIlwiXCIi
KSB7CkBAIC00NDU1LDEzICs0NDUxLDEzIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSAkdXNlQXRvbWljU3Ry
aW5nID8gIkF0b21pY1N0cmluZygkZGVmYXVsdFZhbHVlLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSIgOiAiQVNDSUlMaXRlcmFsKCRkZWZhdWx0VmFsdWUpIjsKICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICRkZWZhdWx0VmFsdWUgPSBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50
ZXJmYWNlLCAkcGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICRkZWZhdWx0VmFs
dWUgPSBHZW5lcmF0ZURlZmF1bHRWYWx1ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQtPnR5cGUsICRh
cmd1bWVudC0+ZGVmYXVsdCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ICAgICAgICAkb3V0ZXIgPSAic3RhdGUtPiRhcmd1bWVudExvb2t1cE1ldGhvZCgkYXJndW1lbnRJ
bmRleCkuaXNVbmRlZmluZWQoKSA/ICRkZWZhdWx0VmFsdWUgOiAiOwogICAgICAgICAgICAgICAg
ICAgICAkaW5uZXIgPSAic3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4KSI7
Ci0gICAgICAgICAgICAgICAgfSBlbHNpZiAoJHBhcmFtZXRlci0+aXNPcHRpb25hbCAmJiAhZGVm
aW5lZCgkcGFyYW1ldGVyLT5kZWZhdWx0KSkgewotICAgICAgICAgICAgICAgICAgICAjIFVzZSBX
VEY6Ok9wdGlvbmFsPD4oKSBmb3Igb3B0aW9uYWwgcGFyYW1ldGVycyB0aGF0IGFyZSBtaXNzaW5n
IG9yIHVuZGVmaW5lZCBhbmQgdGhhdCBkbyBub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgaW4gdGhl
IElETC4KKyAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXJndW1lbnQtPmlzT3B0aW9uYWwgJiYg
IWRlZmluZWQoJGFyZ3VtZW50LT5kZWZhdWx0KSkgeworICAgICAgICAgICAgICAgICAgICAjIFVz
ZSBXVEY6Ok9wdGlvbmFsPD4oKSBmb3Igb3B0aW9uYWwgYXJndW1lbnRzIHRoYXQgYXJlIG1pc3Np
bmcgb3IgdW5kZWZpbmVkIGFuZCB0aGF0IGRvIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBpbiB0
aGUgSURMLgogICAgICAgICAgICAgICAgICAgICAkb3V0ZXIgPSAic3RhdGUtPiRhcmd1bWVudExv
b2t1cE1ldGhvZCgkYXJndW1lbnRJbmRleCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPCRuYXRp
dmVUeXBlPigpIDogIjsKICAgICAgICAgICAgICAgICAgICAgJGlubmVyID0gInN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgkYXJndW1lbnRJbmRleCkiOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC00NDY5LDcgKzQ0NjUsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgICAgICAgICAgJGlubmVyID0gInN0YXRlLT4kYXJndW1lbnRMb29rdXBNZXRob2QoJGFy
Z3VtZW50SW5kZXgpIjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBteSAo
JG5hdGl2ZVZhbHVlLCAkbWF5VGhyb3dFeGNlcHRpb24pID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRl
cmZhY2UsICRwYXJhbWV0ZXIsICRpbm5lciwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICAgICAgbXkgKCRuYXRpdmVW
YWx1ZSwgJG1heVRocm93RXhjZXB0aW9uKSA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAk
YXJndW1lbnQsICRpbm5lciwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRp
b25hbH0pOwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvICRu
YW1lID0gJHtvdXRlcn0ke25hdGl2ZVZhbHVlfTtcbiIpOwogICAgICAgICAgICAgICAgICR2YWx1
ZSA9ICJXVEZNb3ZlKCRuYW1lKSI7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
XG4iKSBpZiAkbWF5VGhyb3dFeGNlcHRpb247CkBAIC00NDkzLDcgKzQ0ODksNyBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICB9CiAKICAgICBwdXNoKEBhcmd1bWVudHMsICJXVEZN
b3ZlKHByb21pc2UpIikgaWYgSXNSZXR1cm5pbmdQcm9taXNlKCRmdW5jdGlvbik7Ci0gICAgcHVz
aChAYXJndW1lbnRzLCAiZWMiKSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57TWF5VGhyb3dMZWdhY3lFeGNlcHRpb259OworICAgIHB1c2goQGFyZ3VtZW50cywg
ImVjIikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbn07CiAKICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJGZ1bmN0aW9uTmFtZSgiIC4g
am9pbigiLCAiLCBAYXJndW1lbnRzKSAuICIpIjsKICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJv
cGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgJGZ1bmN0aW9uU3RyaW5nKSIgaWYg
TmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwoJGZ1bmN0aW9uKTsKQEAgLTQ1OTIs
MTAgKzQ1ODgsMTAgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXIKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIlxuICAgIC8vIEZ1bmN0aW9uc1xuIik7CiAgICAgICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKICAgICAgICAgICAgIG15
IEBhcmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHsk
ZnVuY3Rpb24tPnBhcmFtZXRlcnN9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAYXJndW1lbnRz
LCBHZXROYXRpdmVUeXBlRm9yQ2FsbGJhY2tzKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXItPnR5cGUp
IC4gIiAiIC4gJHBhcmFtZXRlci0+bmFtZSk7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1
bWVudCAoQHskZnVuY3Rpb24tPmFyZ3VtZW50c30pIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBh
cmd1bWVudHMsIEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MoJGludGVyZmFjZSwgJGFyZ3VtZW50
LT50eXBlKSAuICIgIiAuICRhcmd1bWVudC0+bmFtZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHZpcnR1YWwgIiAuIEdldE5hdGl2ZVR5cGVG
b3JDYWxsYmFja3MoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUpIC4gIiAi
IC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBhcmd1bWVu
dHMpIC4gIik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgdmly
dHVhbCAiIC4gR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcygkaW50ZXJmYWNlLCAkZnVuY3Rpb24t
PnR5cGUpIC4gIiAiIC4gJGZ1bmN0aW9uLT5uYW1lIC4gIigiIC4gam9pbigiLCAiLCBAYXJndW1l
bnRzKSAuICIpO1xuIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ3MjQsMTQgKzQ3MjAsMTQg
QEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgIGlmICgkbnVtRnVuY3Rp
b25zID4gMCkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuLy8gRnVuY3Rpb25zXG4i
KTsKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25z
fSkgewotICAgICAgICAgICAgbXkgQHBhcmFtcyA9IEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfTsK
LSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tfSB8fCBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT50eXBlKSBuZSAiYm9vbCIpIHsKKyAgICAgICAgICAgIG15IEBwYXJhbXMgPSBAeyRmdW5j
dGlvbi0+YXJndW1lbnRzfTsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbX0gfHwgR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24t
PnR5cGUpIG5lICJib29sIikgewogICAgICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkZnVuY3Rpb24tPnNp
Z25hdHVyZS0+dHlwZSk7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9u
LT5zaWduYXR1cmUtPm5hbWU7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIiAu
IEdldE5hdGl2ZVR5cGVGb3JDYWxsYmFja3MoJGludGVyZmFjZSwgJGZ1bmN0aW9uLT5zaWduYXR1
cmUtPnR5cGUpIC4gIiAke2NsYXNzTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSgiKTsKKyAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkZnVuY3Rpb24tPnR5cGUpOworICAgICAg
ICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG4iIC4gR2V0TmF0aXZlVHlwZUZvckNhbGxiYWNrcygkaW50ZXJm
YWNlLCAkZnVuY3Rpb24tPnR5cGUpIC4gIiAke2NsYXNzTmFtZX06OiR7ZnVuY3Rpb25OYW1lfSgi
KTsKIAogICAgICAgICAgICAgbXkgQGFyZ3MgPSAoKTsKICAgICAgICAgICAgIG15IEBhcmdzQ2hl
Y2sgPSAoKTsKQEAgLTQ4MDMsMTAgKzQ3OTksMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25GdW5jdGlvbkNhbGwoKQogewogICAgIG15ICgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywg
JGluZGVudCwgJHN2Z1Byb3BlcnR5VHlwZSwgJGludGVyZmFjZSkgPSBAXzsKIAotICAgIG15ICRu
b25kZXRlcm1pbmlzdGljID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e05vbmRldGVybWluaXN0aWN9OwotICAgIG15ICRtYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbiA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbn07CisgICAgbXkgJG5vbmRldGVybWluaXN0aWMgPSAkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e05vbmRldGVybWluaXN0aWN9OworICAgIG15ICRtYXlUaHJvd0xlZ2Fj
eUV4Y2VwdGlvbiA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb259OwogCi0gICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlLT5uYW1l
IGVxICJ2b2lkIiB8fCBJc1JldHVybmluZ1Byb21pc2UoJGZ1bmN0aW9uKSkgeworICAgIGlmICgk
ZnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8IElzUmV0dXJuaW5nUHJvbWlzZSgkZnVu
Y3Rpb24pKSB7CiAgICAgICAgIGlmICgkbm9uZGV0ZXJtaW5pc3RpYykgewogICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIjxyZXBsYXkvSW5wdXRDdXJzb3IuaD4iLCAiV0VCX1JFUExBWSIp
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgRU5BQkxFKFdFQl9SRVBMQVkp
XG4iKTsKQEAgLTQ4NDEsOSArNDgzNyw5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVu
Y3Rpb25DYWxsKCkKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cmVwbGF5L0lucHV0
Q3Vyc29yLmg+IiwgIldFQl9SRVBMQVkiKTsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCI8d3RmL05ldmVyRGVzdHJveWVkLmg+IiwgIldFQl9SRVBMQVkiKTsKIAotICAgICAgICAgICAg
bXkgJG5hdGl2ZVR5cGUgPSBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJmYWNlLCAk
ZnVuY3Rpb24tPnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICBteSAkbWVtb2l6ZWRUeXBlID0gR2V0
TmF0aXZlVHlwZUZvck1lbW9pemF0aW9uKCRpbnRlcmZhY2UsICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT50eXBlKTsKLSAgICAgICAgICAgIG15ICRiaW5kaW5nTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWUgLiAiLiIgLiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKKyAgICAgICAgICAgIG15
ICRuYXRpdmVUeXBlID0gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUp
OworICAgICAgICAgICAgbXkgJG1lbW9pemVkVHlwZSA9IEdldE5hdGl2ZVR5cGVGb3JNZW1vaXph
dGlvbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAgICAgICAgbXkgJGJpbmRp
bmdOYW1lID0gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICIuIiAuICRmdW5jdGlvbi0+bmFtZTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIkpTVmFsdWUgcmVzdWx0
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiBFTkFCTEUoV0VCX1JF
UExBWSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiSW5w
dXRDdXJzb3ImIGN1cnNvciA9IHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmlucHV0Q3Vy
c29yKCk7XG4iKTsKQEAgLTQ4NTIsMjggKzQ4NDgsMjggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb25GdW5jdGlvbkNhbGwoKQogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAiICAgICRuYXRpdmVUeXBlIG1lbW9pemVkUmVzdWx0ID0gJGZ1bmN0aW9uU3RyaW5nO1xu
Iik7CiAgICAgICAgICAgICBteSAkZXhjZXB0aW9uQ29kZSA9ICRtYXlUaHJvd0xlZ2FjeUV4Y2Vw
dGlvbiA/ICJlYyIgOiAiMCI7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVu
dCAuICIgICAgY3Vyc29yLmFwcGVuZElucHV0PE1lbW9pemVkRE9NUmVzdWx0PCRtZW1vaXplZFR5
cGU+PihiaW5kaW5nTmFtZS5nZXQoKS5zdHJpbmcoKSwgbWVtb2l6ZWRSZXN1bHQsICRleGNlcHRp
b25Db2RlKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
ICAgIHJlc3VsdCA9ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLCAxLCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAkdGhpc09iamVjdCkg
LiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAg
cmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAk
aW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAkdGhpc09iamVjdCkgLiAiO1xuIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJ9IGVsc2UgaWYgKGN1cnNvci5p
c1JlcGxheWluZygpKSB7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5k
ZW50IC4gIiAgICBNZW1vaXplZERPTVJlc3VsdEJhc2UqIGlucHV0ID0gY3Vyc29yLmZldGNoSW5w
dXQ8TWVtb2l6ZWRET01SZXN1bHRCYXNlPigpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGluZGVudCAuICIgICAgJG1lbW9pemVkVHlwZSBtZW1vaXplZFJlc3VsdDtcbiIp
OwogICAgICAgICAgICAgIyBGSVhNRTogdGhlIGdlbmVyYXRlZCBjb2RlIHNob3VsZCByZXBvcnQg
YW4gZXJyb3IgaWYgYW4gaW5wdXQgY2Fubm90IGJlIGZldGNoZWQgb3IgY29udmVydGVkLgogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgIGlmIChpbnB1dCAmJiBp
bnB1dC0+Y29udmVydFRvPCRtZW1vaXplZFR5cGU+KG1lbW9pemVkUmVzdWx0KSkge1xuIik7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAgIHJlc3VsdCA9
ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAx
LCAkaW50ZXJmYWNlLCAibWVtb2l6ZWRSZXN1bHQiLCAkdGhpc09iamVjdCkgLiAiO1xuIik7Cisg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgICAgIHJlc3VsdCA9
ICIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbiwgMSwgJGludGVyZmFj
ZSwgIm1lbW9pemVkUmVzdWx0IiwgJHRoaXNPYmplY3QpIC4gIjtcbiIpOwogICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgICAgICBlYyA9IGlucHV0LT5leGNlcHRp
b25Db2RlKCk7XG4iKSBpZiAkbWF5VGhyb3dMZWdhY3lFeGNlcHRpb247CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgfSBlbHNlXG4iKTsKLSAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiAgICAgICAgcmVzdWx0ID0gIiAuIE5hdGl2
ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbnRlcmZh
Y2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiICAgICAgICByZXN1bHQgPSAiIC4gTmF0aXZl
VG9KU1ZhbHVlVXNpbmdQb2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRmdW5jdGlv
blN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICRpbmRlbnQgLiAifSBlbHNlXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAkaW5kZW50IC4gIiAgICByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2lu
dGVycygkZnVuY3Rpb24tPnNpZ25hdHVyZSwgMSwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5n
LCAkdGhpc09iamVjdCkgLiAiO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
JGluZGVudCAuICIgICAgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMo
JGZ1bmN0aW9uLCAxLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICR0aGlzT2JqZWN0KSAu
ICI7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2Vsc2VcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAicmVzdWx0ID0gIiAuIE5hdGl2
ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbnRlcmZh
Y2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAicmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1
ZVVzaW5nUG9pbnRlcnMoJGZ1bmN0aW9uLCAxLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcs
ICR0aGlzT2JqZWN0KSAuICI7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2VuZGlmXG4iKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAkaW5kZW50IC4gIkpTVmFsdWUgcmVzdWx0ID0gIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5n
UG9pbnRlcnMoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0
cmluZywgJHRoaXNPYmplY3QpIC4gIjtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICRpbmRlbnQgLiAiSlNWYWx1ZSByZXN1bHQgPSAiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQ
b2ludGVycygkZnVuY3Rpb24sIDEsICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJHRoaXNP
YmplY3QpIC4gIjtcbiIpOwogICAgICAgICB9CiAKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiIgLiAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlvbihzdGF0ZSwgdGhyb3dTY29wZSwgZWMp
O1xuIikgaWYgJG1heVRocm93TGVnYWN5RXhjZXB0aW9uOwogCi0gICAgICAgIGlmICgkY29kZUdl
bmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkZnVuY3Rpb24tPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAiU2NyaXB0U3RhdGUiKSkgeworICAgICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sICJTY3JpcHRTdGF0ZSIpKSB7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIik7CiAgICAgICAgIH0KIApAQCAtNDkz
OCw3ICs0OTM0LDcgQEAgY29uc3QgSlNDOjpDbGFzc0luZm8gJHtpdGVyYXRvclByb3RvdHlwZQog
RU5ECiAKICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+
ZnVuY3Rpb25zfSkgewotICAgICAgICBteSAkcHJvcGVydHlOYW1lID0gJGZ1bmN0aW9uLT5zaWdu
YXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAkZnVuY3Rpb24tPm5hbWU7
CiAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKIAogICAgICAgICBpZiAoJHByb3BlcnR5TmFtZSBlcSAi
Zm9yRWFjaCIpIHsKQEAgLTQ5OTMsMTMgKzQ5ODksNiBAQCBzdWIgYWRkSXRlcmFibGVQcm9wZXJ0
aWVzKCkKICAgICB9CiB9CiAKLXN1YiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZQotewotICAg
IG15ICgkaW50ZXJmYWNlLCAkc2lnbmF0dXJlKSA9IEBfOwotCi0gICAgcmV0dXJuIEdldE5hdGl2
ZVR5cGUoJGludGVyZmFjZSwgJHNpZ25hdHVyZS0+dHlwZSk7Ci19Ci0KIG15ICVuYXRpdmVUeXBl
ID0gKAogICAgICJET01TdHJpbmciID0+ICJTdHJpbmciLAogICAgICJVU1ZTdHJpbmciID0+ICJT
dHJpbmciLApAQCAtNTEzNSw3ICs1MTI0LDcgQEAgc3ViIEdldE5hdGl2ZVR5cGUKIHsKICAgICBt
eSAoJGludGVyZmFjZSwgJHR5cGUpID0gQF87CiAKLSAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBp
ZiByZWYoJHR5cGUpIG5lICJkb21UeXBlIjsKKyAgICBhc3NlcnQoIk5vdCBhIHR5cGUiKSBpZiBy
ZWYoJHR5cGUpIG5lICJJRExUeXBlIjsKIAogICAgIG15ICR0eXBlTmFtZSA9ICR0eXBlLT5uYW1l
OwogCkBAIC01MTU3LDcgKzUxNDYsNyBAQCBzdWIgU2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5j
ZQogICAgIG15ICgkcGFyYW1ldGVyLCAkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkgJG5hdGl2
ZVR5cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICRwYXJhbWV0ZXItPnR5cGUpOwotICAg
IHJldHVybiAkY29kZUdlbmVyYXRvci0+U2hvdWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkcGFy
YW1ldGVyLCAkaW50ZXJmYWNlKSAmJiAoc3Vic3RyKCRuYXRpdmVUeXBlLCAtMSkgZXEgJyonIHx8
ICRuYXRpdmVUeXBlID1+IC9eUmVmUHRyLyk7CisgICAgcmV0dXJuICRjb2RlR2VuZXJhdG9yLT5T
aG91bGRQYXNzV3JhcHBlckJ5UmVmZXJlbmNlKCRwYXJhbWV0ZXIpICYmIChzdWJzdHIoJG5hdGl2
ZVR5cGUsIC0xKSBlcSAnKicgfHwgJG5hdGl2ZVR5cGUgPX4gL15SZWZQdHIvKTsKIH0KIAogc3Vi
IEdldE5hdGl2ZVZlY3RvcklubmVyVHlwZQpAQCAtNTIzNCwyNiArNTIyMywyNiBAQCBzdWIgSXNO
YXRpdmVUeXBlCiAKIHN1YiBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIHsKLSAg
ICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7CisgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKIAotICAg
IHJldHVybiAiSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpFbmZvcmNlUmFuZ2UiIGlm
ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuZm9yY2VSYW5nZX07Ci0gICAgcmV0
dXJuICJJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OkNsYW1wIiBpZiAkc2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDbGFtcH07CisgICAgcmV0dXJuICJJbnRlZ2VyQ29udmVy
c2lvbkNvbmZpZ3VyYXRpb246OkVuZm9yY2VSYW5nZSIgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0VuZm9yY2VSYW5nZX07CisgICAgcmV0dXJuICJJbnRlZ2VyQ29udmVyc2lvbkNv
bmZpZ3VyYXRpb246OkNsYW1wIiBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2xh
bXB9OwogICAgIHJldHVybiAiSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uOjpOb3JtYWwi
OwogfQogCiBzdWIgR2V0U3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24KIHsKLSAgICBteSAk
c2lnbmF0dXJlID0gc2hpZnQ7CisgICAgbXkgJGNvbnRleHQgPSBzaGlmdDsKIAotICAgIHJldHVy
biAiU3RyaW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb246OlRyZWF0TnVsbEFzRW1wdHlTdHJpbmci
IGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1RyZWF0TnVsbEFzfSAmJiAkc2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVtcHR5U3RyaW5n
IjsKKyAgICByZXR1cm4gIlN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpUcmVhdE51bGxB
c0VtcHR5U3RyaW5nIiBpZiAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VHJlYXROdWxs
QXN9ICYmICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntUcmVhdE51bGxBc30gZXEgIkVt
cHR5U3RyaW5nIjsKICAgICByZXR1cm4gIlN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uOjpO
b3JtYWwiOwogfQogCiBzdWIgSlNWYWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01Db252ZXJ0CiB7
Ci0gICAgbXkgKCR0eXBlLCAkc2lnbmF0dXJlKSA9IEBfOworICAgIG15ICgkdHlwZSwgJGNvbnRl
eHQpID0gQF87CiAKLSAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIiAm
JiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVxdWlyZXNFeGlzdGluZ0F0b21p
Y1N0cmluZ30gfHwgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXRvbWljU3RyaW5n
fSk7CisgICAgcmV0dXJuIDAgaWYgJHR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIgJiYgKCRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5nfSB8
fCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXRvbWljU3RyaW5nfSk7CiAKICAgICBy
ZXR1cm4gMSBpZiAkdHlwZS0+aXNVbmlvbjsKICAgICByZXR1cm4gMSBpZiAkdHlwZS0+bmFtZSBl
cSAiYW55IjsKQEAgLTUyNjgsMjAgKzUyNTcsMjkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZUlzSGFu
ZGxlZEJ5RE9NQ29udmVydAogICAgIHJldHVybiAwOwogfQogCitzdWIgSXNWYWxpZENvbnRleHRG
b3JKU1ZhbHVlVG9OYXRpdmUKK3sKKyAgICBteSAkY29udGV4dCA9IHNoaWZ0OworICAgIAorICAg
IHJldHVybiByZWYoJGNvbnRleHQpIGVxICJJRExBdHRyaWJ1dGUiIHx8IHJlZigkY29udGV4dCkg
ZXEgIklETE9wZXJhdGlvbiIgfHwgcmVmKCRjb250ZXh0KSBlcSAiSURMQXJndW1lbnQiOworfQor
CiAjIFJldHVybnMgKGNvbnZlcnRTdHJpbmcsIG1heVRocm93RXhjZXB0aW9uKS4KIAogc3ViIEpT
VmFsdWVUb05hdGl2ZQogewotICAgIG15ICgkaW50ZXJmYWNlLCAkc2lnbmF0dXJlLCAkdmFsdWUs
ICRjb25kaXRpb25hbCwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkdGhpc09iamVj
dFJlZmVyZW5jZSkgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGNvbnRleHQsICR2YWx1ZSwg
JGNvbmRpdGlvbmFsLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR0aGlzT2JqZWN0
UmVmZXJlbmNlKSA9IEBfOworCisgICAgYXNzZXJ0KCJJbnZhbGlkIGNvbnRleHQgdHlwZSIpIGlm
ICFJc1ZhbGlkQ29udGV4dEZvckpTVmFsdWVUb05hdGl2ZSgkY29udGV4dCk7CiAKLSAgICBteSAk
dHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CisgICAgbXkgJHR5cGUgPSAkY29udGV4dC0+dHlwZTsK
IAogICAgICMgRklYTUU6IFJlbW92ZSB0aGVzZSAzIHZhcmlhYmxlcyB3aGVuIGFsbCBKU1ZhbHVl
VG9OYXRpdmUgdXNlIHJlZmVyZW5jZXMuCiAgICAgJHN0YXRlUG9pbnRlciA9ICJzdGF0ZSIgdW5s
ZXNzICRzdGF0ZVBvaW50ZXI7CiAgICAgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSIgdW5sZXNz
ICRzdGF0ZVJlZmVyZW5jZTsKICAgICAkdGhpc09iamVjdFJlZmVyZW5jZSA9ICIqY2FzdGVkVGhp
cyIgdW5sZXNzICR0aGlzT2JqZWN0UmVmZXJlbmNlOwogCi0gICAgaWYgKEpTVmFsdWVUb05hdGl2
ZUlzSGFuZGxlZEJ5RE9NQ29udmVydCgkdHlwZSwgJHNpZ25hdHVyZSkpIHsKKyAgICBpZiAoSlNW
YWx1ZVRvTmF0aXZlSXNIYW5kbGVkQnlET01Db252ZXJ0KCR0eXBlLCAkY29udGV4dCkpIHsKICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NQ29udmVydC5oIik7CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkdHlwZSwgJGNvbmRpdGlvbmFsKTsKIApAQCAtNTI5MCwx
NSArNTI4OCwxNSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAgICAgICAgIG15IEBjb252ZXJzaW9u
QXJndW1lbnRzID0gKCk7CiAgICAgICAgIHB1c2goQGNvbnZlcnNpb25Bcmd1bWVudHMsICIkc3Rh
dGVSZWZlcmVuY2UiKTsKICAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgIiR2YWx1
ZSIpOwotICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRzLCBHZXRJbnRlZ2VyQ29udmVy
c2lvbkNvbmZpZ3VyYXRpb24oJHNpZ25hdHVyZSkpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc0ludGVn
ZXJUeXBlKCR0eXBlKTsKLSAgICAgICAgcHVzaChAY29udmVyc2lvbkFyZ3VtZW50cywgR2V0U3Ry
aW5nQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJHNpZ25hdHVyZSkpIGlmICRjb2RlR2VuZXJhdG9y
LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOworICAgICAgICBwdXNoKEBjb252ZXJzaW9uQXJndW1lbnRz
LCBHZXRJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24oJGNvbnRleHQpKSBpZiAkY29kZUdl
bmVyYXRvci0+SXNJbnRlZ2VyVHlwZSgkdHlwZSk7CisgICAgICAgIHB1c2goQGNvbnZlcnNpb25B
cmd1bWVudHMsIEdldFN0cmluZ0NvbnZlcnNpb25Db25maWd1cmF0aW9uKCRjb250ZXh0KSkgaWYg
JGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSk7CiAKICAgICAgICAgcmV0dXJuICgi
Y29udmVydDwkSURMVHlwZT4oIiAuIGpvaW4oIiwgIiwgQGNvbnZlcnNpb25Bcmd1bWVudHMpIC4g
IikiLCAxKTsKICAgICB9CiAKICAgICBpZiAoJHR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyIpIHsK
LSAgICAgICAgcmV0dXJuICgiQXRvbWljU3RyaW5nKCR2YWx1ZS50b1N0cmluZygkc3RhdGVQb2lu
dGVyKS0+dG9FeGlzdGluZ0F0b21pY1N0cmluZygkc3RhdGVQb2ludGVyKSkiLCAxKSBpZiAkc2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXF1aXJlc0V4aXN0aW5nQXRvbWljU3RyaW5n
fTsKLSAgICAgICAgcmV0dXJuICgiJHZhbHVlLnRvU3RyaW5nKCRzdGF0ZVBvaW50ZXIpLT50b0F0
b21pY1N0cmluZygkc3RhdGVQb2ludGVyKSIsIDEpIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0F0b21pY1N0cmluZ307CisgICAgICAgIHJldHVybiAoIkF0b21pY1N0cmluZygk
dmFsdWUudG9TdHJpbmcoJHN0YXRlUG9pbnRlciktPnRvRXhpc3RpbmdBdG9taWNTdHJpbmcoJHN0
YXRlUG9pbnRlcikpIiwgMSkgaWYgJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcXVp
cmVzRXhpc3RpbmdBdG9taWNTdHJpbmd9OworICAgICAgICByZXR1cm4gKCIkdmFsdWUudG9TdHJp
bmcoJHN0YXRlUG9pbnRlciktPnRvQXRvbWljU3RyaW5nKCRzdGF0ZVBvaW50ZXIpIiwgMSkgaWYg
JGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0F0b21pY1N0cmluZ307CiAgICAgICAgIGFz
c2VydCgiVW5oYW5kbGVkIHN0cmluZyBjb252ZXJzaW9uLiIpOwogICAgIH0KIApAQCAtNTM2OSw0
NCArNTM2Nyw1MyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlRE9NQ29udmVydE5lZWRzR2xvYmFsCiAK
IHN1YiBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5jZXMKIHsKLSAgICBteSAoJHNpZ25hdHVy
ZSwgJGluRnVuY3Rpb25DYWxsLCAkaW50ZXJmYWNlLCAkdmFsdWUsICR0aGlzVmFsdWUpID0gQF87
CisgICAgbXkgKCRjb250ZXh0LCAkaW5GdW5jdGlvbkNhbGwsICRpbnRlcmZhY2UsICR2YWx1ZSwg
JHRoaXNWYWx1ZSkgPSBAXzsKICAgICBteSAkc3RhdGVQb2ludGVyID0gIiZzdGF0ZSI7CiAgICAg
bXkgJHN0YXRlUmVmZXJlbmNlID0gInN0YXRlIjsKICAgICBteSAkd3JhcHBlZCA9ICIkdGhpc1Zh
bHVlLndyYXBwZWQoKSI7CiAgICAgbXkgJGdsb2JhbE9iamVjdCA9ICR0aGlzVmFsdWUgPyAiJHRo
aXNWYWx1ZS5nbG9iYWxPYmplY3QoKSIgOiAianNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3Rh
dGUubGV4aWNhbEdsb2JhbE9iamVjdCgpKSI7CiAKLSAgICByZXR1cm4gTmF0aXZlVG9KU1ZhbHVl
KCRzaWduYXR1cmUsICRpbkZ1bmN0aW9uQ2FsbCwgJGludGVyZmFjZSwgJHZhbHVlLCAkc3RhdGVQ
b2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR3cmFwcGVkLCAkZ2xvYmFsT2JqZWN0KTsKKyAgICBy
ZXR1cm4gTmF0aXZlVG9KU1ZhbHVlKCRjb250ZXh0LCAkaW5GdW5jdGlvbkNhbGwsICRpbnRlcmZh
Y2UsICR2YWx1ZSwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkd3JhcHBlZCwgJGds
b2JhbE9iamVjdCk7CiB9CiAKICMgRklYTUU6IFdlIHNob3VsZCByZW1vdmUgTmF0aXZlVG9KU1Zh
bHVlVXNpbmdQb2ludGVycyBhbmQgY29tYmluZSBOYXRpdmVUb0pTVmFsdWVVc2luZ1JlZmVyZW5j
ZXMgYW5kIE5hdGl2ZVRvSlNWYWx1ZQogc3ViIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMK
IHsKLSAgICBteSAoJHNpZ25hdHVyZSwgJGluRnVuY3Rpb25DYWxsLCAkaW50ZXJmYWNlLCAkdmFs
dWUsICR0aGlzVmFsdWUpID0gQF87CisgICAgbXkgKCRjb250ZXh0LCAkaW5GdW5jdGlvbkNhbGws
ICRpbnRlcmZhY2UsICR2YWx1ZSwgJHRoaXNWYWx1ZSkgPSBAXzsKICAgICBteSAkc3RhdGVQb2lu
dGVyID0gInN0YXRlIjsKICAgICBteSAkc3RhdGVSZWZlcmVuY2UgPSAiKnN0YXRlIjsKICAgICBt
eSAkd3JhcHBlZCA9ICIkdGhpc1ZhbHVlLT53cmFwcGVkKCkiOwogICAgIG15ICRnbG9iYWxPYmpl
Y3QgPSAkdGhpc1ZhbHVlID8gIiR0aGlzVmFsdWUtPmdsb2JhbE9iamVjdCgpIiA6ICJqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSI7CiAKLSAg
ICByZXR1cm4gTmF0aXZlVG9KU1ZhbHVlKCRzaWduYXR1cmUsICRpbkZ1bmN0aW9uQ2FsbCwgJGlu
dGVyZmFjZSwgJHZhbHVlLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICR3cmFwcGVk
LCAkZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gTmF0aXZlVG9KU1ZhbHVlKCRjb250ZXh0LCAk
aW5GdW5jdGlvbkNhbGwsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHN0YXRlUG9pbnRlciwgJHN0YXRl
UmVmZXJlbmNlLCAkd3JhcHBlZCwgJGdsb2JhbE9iamVjdCk7Cit9CisKK3N1YiBJc1ZhbGlkQ29u
dGV4dEZvck5hdGl2ZVRvSlNWYWx1ZQoreworICAgIG15ICRjb250ZXh0ID0gc2hpZnQ7CisgICAg
CisgICAgcmV0dXJuIHJlZigkY29udGV4dCkgZXEgIklETEF0dHJpYnV0ZSIgfHwgcmVmKCRjb250
ZXh0KSBlcSAiSURMT3BlcmF0aW9uIiB8fCByZWYoJGNvbnRleHQpIGVxICJJRExBcmd1bWVudCI7
CiB9CiAKIHN1YiBOYXRpdmVUb0pTVmFsdWUKIHsKLSAgICBteSAoJHNpZ25hdHVyZSwgJGluRnVu
Y3Rpb25DYWxsLCAkaW50ZXJmYWNlLCAkdmFsdWUsICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVy
ZW5jZSwgJHdyYXBwZWQsICRnbG9iYWxPYmplY3QpID0gQF87CisgICAgbXkgKCRjb250ZXh0LCAk
aW5GdW5jdGlvbkNhbGwsICRpbnRlcmZhY2UsICR2YWx1ZSwgJHN0YXRlUG9pbnRlciwgJHN0YXRl
UmVmZXJlbmNlLCAkd3JhcHBlZCwgJGdsb2JhbE9iamVjdCkgPSBAXzsKKworICAgIGFzc2VydCgi
SW52YWxpZCBjb250ZXh0IHR5cGUiKSBpZiAhSXNWYWxpZENvbnRleHRGb3JOYXRpdmVUb0pTVmFs
dWUoJGNvbnRleHQpOwogCi0gICAgbXkgJGNvbmRpdGlvbmFsID0gJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwotICAgIG15ICR0eXBlID0gJHNpZ25hdHVyZS0+
dHlwZTsKLSAgICBteSAkbWF5VGhyb3dFeGNlcHRpb24gPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbn0gfHwgJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259OworICAgIG15ICRjb25kaXRpb25hbCA9
ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CisgICAgbXkgJHR5
cGUgPSAkY29udGV4dC0+dHlwZTsKKyAgICBteSAkbWF5VGhyb3dFeGNlcHRpb24gPSAkY29udGV4
dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2V0dGVyTWF5VGhyb3dFeGNlcHRpb259IHx8ICRjb250
ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CiAKICAgICAjIFdl
IGNvdWxkIGluc3RlYWQgb3ZlcmxvYWQgYSBmdW5jdGlvbiB0byB3b3JrIHdpdGggb3B0aW9uYWwg
YXMgd2VsbCBhcyBub24tb3B0aW9uYWwgbnVtYmVycywgYnV0IHRoaXMKICAgICAjIGlzIHNsaWdo
dGx5IGJldHRlciBiZWNhdXNlIGl0IGd1YXJhbnRlZXMgd2Ugd2lsbCBmYWlsIHRvIGNvbXBpbGUg
aWYgdGhlIElETCBmaWxlIGRvZXNuJ3QgbWF0Y2ggdGhlIEMrKy4KLSAgICBpZiAoJHNpZ25hdHVy
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVmbGVjdH0gYW5kICgkdHlwZS0+bmFtZSBlcSAidW5z
aWduZWQgbG9uZyIgb3IgJHR5cGUtPm5hbWUgZXEgInVuc2lnbmVkIHNob3J0IikpIHsKKyAgICBp
ZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlZmxlY3R9IGFuZCAoJHR5cGUtPm5h
bWUgZXEgInVuc2lnbmVkIGxvbmciIG9yICR0eXBlLT5uYW1lIGVxICJ1bnNpZ25lZCBzaG9ydCIp
KSB7CiAgICAgICAgICR2YWx1ZSA9fiBzL2dldFVuc2lnbmVkSW50ZWdyYWxBdHRyaWJ1dGUvZ2V0
SW50ZWdyYWxBdHRyaWJ1dGUvZzsKICAgICAgICAgJHZhbHVlID0gInN0ZDo6bWF4KDAsICR2YWx1
ZSkiOwogICAgIH0KIAogICAgIGlmICgkdHlwZS0+bmFtZSBlcSAiYW55IikgewotICAgICAgICBt
eSAkcmV0dXJuVHlwZSA9ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVu
dGF0aW9uUmV0dXJuVHlwZX07CisgICAgICAgIG15ICRyZXR1cm5UeXBlID0gJGNvbnRleHQtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGF0aW9uUmV0dXJuVHlwZX07CiAgICAgICAgIGlm
IChkZWZpbmVkICRyZXR1cm5UeXBlIGFuZCAoJHJldHVyblR5cGUgZXEgIklEQktleVBhdGgiIG9y
ICRyZXR1cm5UeXBlIGVxICJJREJLZXkiKSkgewogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIklEQkJpbmRpbmdVdGlsaXRpZXMuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICBy
ZXR1cm4gInRvSlMoJHN0YXRlUmVmZXJlbmNlLCAqJGdsb2JhbE9iamVjdCwgJHZhbHVlKSI7CkBA
IC01NDQ1LDcgKzU0NTIsNyBAQCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgICR2YWx1ZSA9
ICJzdGF0aWNfY2FzdDwiIC4gR2V0TmF0aXZlVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSkgLiAiPigk
dmFsdWUpIjsKICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNTVkdUeXBlTmVlZGluZ1Rl
YXJPZmYoJHR5cGUpIGFuZCBub3QgJGludGVyZmFjZS0+dHlwZS0+bmFtZSA9fiAvTGlzdCQvKSB7
CiAgICAgICAgIG15ICR0ZWFyT2ZmVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRTVkdUeXBlTmVl
ZGluZ1RlYXJPZmYoJHR5cGUpOwotICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPklzU1ZHVHlw
ZVdpdGhXcml0YWJsZVByb3BlcnRpZXNOZWVkaW5nVGVhck9mZigkdHlwZSkgYW5kICEkaW5GdW5j
dGlvbkNhbGwgYW5kIG5vdCBkZWZpbmVkICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0ltbXV0YWJsZX0pIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1NWR1R5cGVXaXRo
V3JpdGFibGVQcm9wZXJ0aWVzTmVlZGluZ1RlYXJPZmYoJHR5cGUpIGFuZCAhJGluRnVuY3Rpb25D
YWxsIGFuZCBub3QgZGVmaW5lZCAkY29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1tdXRh
YmxlfSkgewogICAgICAgICAgICAgbXkgJGdldHRlciA9ICR2YWx1ZTsKICAgICAgICAgICAgICRn
ZXR0ZXIgPX4gcy9pbXBsXC4vLzsKICAgICAgICAgICAgICRnZXR0ZXIgPX4gcy9pbXBsLT4vLzsK
QEAgLTU0NzAsMTAgKzU0NzcsMTAgQEAgc3ViIE5hdGl2ZVRvSlNWYWx1ZQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgJHZhbHVlID0gIkJpbmRpbmdTZWN1cml0eTo6Y2hlY2tTZWN1cml0eUZvck5v
ZGUoJHN0YXRlUmVmZXJlbmNlLCAkdmFsdWUpIiBpZiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDaGVja1NlY3VyaXR5Rm9yTm9kZX07CisgICAgJHZhbHVlID0gIkJpbmRpbmdTZWN1
cml0eTo6Y2hlY2tTZWN1cml0eUZvck5vZGUoJHN0YXRlUmVmZXJlbmNlLCAkdmFsdWUpIiBpZiAk
Y29udGV4dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eUZvck5vZGV9OwogCiAg
ICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICJ0b0pTIjsKLSAgICAkZnVuY3Rpb25OYW1lID0gInRvSlNO
ZXdseUNyZWF0ZWQiIGlmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e05ld09iamVj
dH07CisgICAgJGZ1bmN0aW9uTmFtZSA9ICJ0b0pTTmV3bHlDcmVhdGVkIiBpZiAkY29udGV4dC0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TmV3T2JqZWN0fTsKIAogICAgIG15ICRhcmd1bWVudHMgPSAi
JHN0YXRlUG9pbnRlciwgJGdsb2JhbE9iamVjdCwgJHZhbHVlIjsKICAgICAkYXJndW1lbnRzID0g
IiRzdGF0ZVJlZmVyZW5jZSwgKiRnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsICR2YWx1ZSIgaWYg
JG1heVRocm93RXhjZXB0aW9uOwpAQCAtNTg4Nyw3ICs1ODk0LDcgQEAgc3ViIEdlbmVyYXRlQ29u
c3RydWN0b3JEZWZpbml0aW9uCiAKICAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRD
aGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICAgICAgICAg
IGlmICgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dM
ZWdhY3lFeGNlcHRpb259IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0
cnVjdG9yTWF5VGhyb3dMZWdhY3lFeGNlcHRpb259KSB7CisgICAgICAgICAgICBpZiAoJGZ1bmN0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbn0gfHwgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbn0pIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFeGNlcHRpb25Db2Rl
LmgifSA9IDE7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwO1xuIik7CiAgICAgICAgICAgICB9CkBAIC01OTE4LDEyICs1OTI1LDEy
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgcHVzaChA
Y29uc3RydWN0b3JBcmdMaXN0LCAiKmNhc3RlZFRoaXMtPmRvY3VtZW50KCkiKSBpZiAkZ2VuZXJh
dGluZ05hbWVkQ29uc3RydWN0b3I7CiAKICAgICAgICAgICAgIG15ICRpbmRleCA9IDA7Ci0gICAg
ICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0ZXJzfSkg
eworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVu
dHN9KSB7CiAgICAgICAgICAgICAgICAgbGFzdCBpZiAkaW5kZXggZXEgJHBhcmFtSW5kZXg7Ci0g
ICAgICAgICAgICAgICAgaWYgKFNob3VsZFBhc3NXcmFwcGVyQnlSZWZlcmVuY2UoJHBhcmFtZXRl
ciwgJGludGVyZmFjZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JB
cmdMaXN0LCAiKiIgLiAkcGFyYW1ldGVyLT5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoU2hv
dWxkUGFzc1dyYXBwZXJCeVJlZmVyZW5jZSgkYXJndW1lbnQsICRpbnRlcmZhY2UpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIioiIC4gJGFyZ3VtZW50
LT5uYW1lKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBw
dXNoKEBjb25zdHJ1Y3RvckFyZ0xpc3QsICJXVEZNb3ZlKCIgLiAkcGFyYW1ldGVyLT5uYW1lIC4g
IikiKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAY29uc3RydWN0b3JBcmdMaXN0LCAiV1RG
TW92ZSgiIC4gJGFyZ3VtZW50LT5uYW1lIC4gIikiKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgJGluZGV4Kys7CiAgICAgICAgICAgICB9CkBAIC02MDgxLDcgKzYwODgsNyBA
QCBzdWIgTmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5CiBzdWIgSXNSZXR1cm5pbmdQcm9taXNlCiB7
CiAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7Ci0gICAgcmV0dXJuICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT50eXBlICYmICRmdW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlLT5uYW1lIGVxICJQcm9taXNl
IjsKKyAgICByZXR1cm4gJGZ1bmN0aW9uLT50eXBlICYmICRmdW5jdGlvbi0+dHlwZS0+bmFtZSBl
cSAiUHJvbWlzZSI7CiB9CiAKIHN1YiBJc0NvbnN0cnVjdGFibGUKQEAgLTYxMDMsNyArNjExMCw3
IEBAIHN1YiBJc1VuZm9yZ2VhYmxlCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAg
IG15ICRwcm9wZXJ0eSA9IHNoaWZ0OwotICAgIHJldHVybiAkcHJvcGVydHktPnNpZ25hdHVyZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5mb3JnZWFibGV9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1VuZm9yZ2VhYmxlfTsKKyAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntVbmZvcmdlYWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57VW5mb3JnZWFibGV9OwogfQogCiBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbApAQCAt
NjExMyw3ICs2MTIwLDcgQEAgc3ViIENvbXB1dGVGdW5jdGlvblNwZWNpYWwKIAogICAgIG15IEBz
cGVjaWFscyA9ICgpOwogICAgIHB1c2goQHNwZWNpYWxzLCAoIkRvbnREZWxldGUiLCAiUmVhZE9u
bHkiKSkgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwotICAgIHB1c2go
QHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX07CisgICAgcHVzaChAc3BlY2lhbHMsICJEb250RW51
bSIpIGlmICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Tm90RW51bWVyYWJsZX07CiAg
ICAgaWYgKElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbikpIHsKICAgICAgICAgcHVz
aChAc3BlY2lhbHMsICJKU0M6OkJ1aWx0aW4iKTsKICAgICB9CkBAIC02MTI3LDExICs2MTM0LDEx
IEBAIHN1YiBJc0pTQnVpbHRpbgogewogICAgIG15ICgkaW50ZXJmYWNlLCAkb2JqZWN0KSA9IEBf
OwogCi0gICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDdXN0b219OwotICAgIHJldHVybiAwIGlmICRvYmplY3QtPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q3VzdG9tR2V0dGVyfTsKLSAgICByZXR1cm4gMCBpZiAkb2JqZWN0LT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVNldHRlcn07CisgICAgcmV0dXJu
IDAgaWYgJG9iamVjdC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tfTsKKyAgICByZXR1cm4g
MCBpZiAkb2JqZWN0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXR0ZXJ9OworICAgIHJl
dHVybiAwIGlmICRvYmplY3QtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbVNldHRlcn07CiAK
LSAgICByZXR1cm4gMSBpZiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0pTQnVpbHRpbn07CisgICAgcmV0dXJuIDEgaWYgJG9iamVjdC0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57SlNCdWlsdGlufTsKICAgICByZXR1cm4gMSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntKU0J1aWx0aW59OwogCiAgICAgcmV0dXJuIDA7CkBAIC02MTUwLDkgKzYxNTcsOSBA
QCBzdWIgSXNKU0J1aWx0aW5Db25zdHJ1Y3Rvcgogc3ViIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFt
ZQogewogICAgIG15ICgkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87Ci0gICAgbXkgJHNjb3Bl
TmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1l
bnRlZEJ5fTsKKyAgICBteSAkc2NvcGVOYW1lID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntJbXBsZW1lbnRlZEJ5fTsKICAgICAkc2NvcGVOYW1lID0gc3Vic3RyICRjbGFzc05hbWUs
IDIgdW5sZXNzICRzY29wZU5hbWU7Ci0gICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFt
ZUZyb21TdHJpbmcoJHNjb3BlTmFtZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUpOworICAg
IHJldHVybiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3RyaW5nKCRzY29wZU5hbWUsICRm
dW5jdGlvbi0+bmFtZSk7CiB9CiAKIHN1YiBHZXRKU0J1aWx0aW5GdW5jdGlvbk5hbWVGcm9tU3Ry
aW5nCkBAIC02MTY0LDcgKzYxNzEsNyBAQCBzdWIgR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJv
bVN0cmluZwogc3ViIEdldEpTQnVpbHRpblNjb3BlTmFtZQogewogICAgIG15ICgkaW50ZXJmYWNl
LCAkb2JqZWN0KSA9IEBfOwotICAgIHJldHVybiAkb2JqZWN0LT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9IHx8ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Cisg
ICAgcmV0dXJuICRvYmplY3QtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9IHx8
ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7CiB9CiAKIHN1YiBBZGRKU0J1aWx0aW5JbmNsdWRlc0lm
TmVlZGVkKCkKQEAgLTYxNzcsMTEgKzYxODQsMTEgQEAgc3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVz
SWZOZWVkZWQoKQogICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZh
Y2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0SlNCdWlsdGlu
U2NvcGVOYW1lKCRpbnRlcmZhY2UsICRmdW5jdGlvbikgLiAiQnVpbHRpbnMuaCIsICRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pIGlmIElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pIC4gIkJ1aWx0aW5z
LmgiLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkgaWYgSXNK
U0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKICAgICB9CiAKICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoR2V0SlNCdWlsdGluU2NvcGVOYW1lKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUp
IC4gIkJ1aWx0aW5zLmgiLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbmRpdGlvbmFsfSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7
CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJm
YWNlLCAkYXR0cmlidXRlKSAuICJCdWlsdGlucy5oIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q29uZGl0aW9uYWx9KSBpZiBJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkYXR0cmli
dXRlKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
SURMUGFyc2VyLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMUGFyc2VyLnBtCShyZXZpc2lvbiAyMDgxMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0lETFBhcnNlci5wbQkod29ya2luZyBjb3B5KQpAQCAtMzcsNzYgKzM3LDgx
IEBAIHVzZSBjb25zdGFudCBPdGhlclRva2VuID0+IDQ7CiB1c2UgY29uc3RhbnQgRW1wdHlUb2tl
biA9PiA1OwogCiAjIFVzZWQgdG8gcmVwcmVzZW50IGEgcGFyc2VkIElETCBkb2N1bWVudAotc3Ry
dWN0KCBpZGxEb2N1bWVudCA9PiB7Ci0gICAgaW50ZXJmYWNlcyA9PiAnQCcsICMgTGlzdCBvZiAn
ZG9tSW50ZXJmYWNlJwotICAgIGVudW1lcmF0aW9ucyA9PiAnQCcsICMgTGlzdCBvZiAnZG9tRW51
bScKLSAgICBkaWN0aW9uYXJpZXMgPT4gJ0AnLCAjIExpc3Qgb2YgJ2RvbURpY3Rpb25hcnknCitz
dHJ1Y3QoIElETERvY3VtZW50ID0+IHsKKyAgICBpbnRlcmZhY2VzID0+ICdAJywgIyBMaXN0IG9m
ICdJRExJbnRlcmZhY2UnCisgICAgZW51bWVyYXRpb25zID0+ICdAJywgIyBMaXN0IG9mICdJRExF
bnVtJworICAgIGRpY3Rpb25hcmllcyA9PiAnQCcsICMgTGlzdCBvZiAnSURMRGljdGlvbmFyeScK
ICAgICBmaWxlTmFtZSA9PiAnJCcsCiB9KTsKIAotc3RydWN0KCBkb21UeXBlID0+IHsKKyMgaHR0
cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLXR5cGVzCitzdHJ1Y3QoIElETFR5cGUg
PT4gewogICAgIG5hbWUgPT4gICAgICAgICAnJCcsICMgVHlwZSBpZGVudGlmaWVyCiAgICAgaXNO
dWxsYWJsZSA9PiAgICckJywgIyBJcyB0aGUgdHlwZSBOdWxsYWJsZSAoVD8pCiAgICAgaXNVbmlv
biA9PiAgICAgICckJywgIyBJcyB0aGUgdHlwZSBhIHVuaW9uIChUIG9yIFUpCiAgICAgc3VidHlw
ZXMgPT4gICAgICdAJywgIyBBcnJheSBvZiBzdWJ0eXBlcywgb25seSB2YWxpZCBpZiBpc1VuaW9u
IG9yIHNlcXVlbmNlCiB9KTsKIAotIyBVc2VkIHRvIHJlcHJlc2VudCBhIG1hcCBvZiAndmFyaWFi
bGUgbmFtZScgPC0+ICd2YXJpYWJsZSB0eXBlJwotc3RydWN0KCBkb21TaWduYXR1cmUgPT4gewot
ICAgIGRpcmVjdGlvbiA9PiAnJCcsICAgIyBWYXJpYWJsZSBkaXJlY3Rpb24gKGluIG9yIG91dCkK
LSAgICBuYW1lID0+ICckJywgICAgICAgICMgVmFyaWFibGUgbmFtZQotICAgIHR5cGUgPT4gJ2Rv
bVR5cGUnLCAgIyBWYXJpYWJsZSB0eXBlCi0gICAgc3BlY2lhbHMgPT4gJ0AnLCAgICAjIFNwZWNp
YWxzCi0gICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVz
Ci0gICAgaXNWYXJpYWRpYyA9PiAnJCcsICAjIElzIHZhcmlhYmxlIHZhcmlhZGljIChsb25nLi4u
IG51bWJlcnMpCi0gICAgaXNPcHRpb25hbCA9PiAnJCcsICAjIElzIHZhcmlhYmxlIG9wdGlvbmFs
IChvcHRpb25hbCBUKQotICAgIGRlZmF1bHQgPT4gJyQnLCAgICAgIyBEZWZhdWx0IHZhbHVlIGZv
ciBwYXJhbWV0ZXJzCi19KTsKLQogIyBVc2VkIHRvIHJlcHJlc2VudCAnaW50ZXJmYWNlJyBibG9j
a3MKLXN0cnVjdCggZG9tSW50ZXJmYWNlID0+IHsKLSAgICB0eXBlID0+ICdkb21UeXBlJywgIyBD
bGFzcyB0eXBlCi0gICAgcGFyZW50VHlwZSA9PiAnZG9tVHlwZScsICMgUGFyZW50IGNsYXNzIHR5
cGUKLSAgICBjb25zdGFudHMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ2RvbUNvbnN0YW50JwotICAg
IGZ1bmN0aW9ucyA9PiAnQCcsICAgICMgTGlzdCBvZiAnZG9tRnVuY3Rpb24nCi0gICAgYW5vbnlt
b3VzRnVuY3Rpb25zID0+ICdAJywgIyBMaXN0IG9mICdkb21GdW5jdGlvbicKLSAgICBhdHRyaWJ1
dGVzID0+ICdAJywgICAgIyBMaXN0IG9mICdkb21BdHRyaWJ1dGUnICAgIAotICAgIGV4dGVuZGVk
QXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcwotICAgIGNvbnN0cnVjdG9y
cyA9PiAnQCcsICMgQ29uc3RydWN0b3JzLCBsaXN0IG9mICdkb21GdW5jdGlvbicKLSAgICBjdXN0
b21Db25zdHJ1Y3RvcnMgPT4gJ0AnLCAjIEN1c3RvbSBjb25zdHJ1Y3RvcnMsIGxpc3Qgb2YgJ2Rv
bUZ1bmN0aW9uJworc3RydWN0KCBJRExJbnRlcmZhY2UgPT4geworICAgIHR5cGUgPT4gJ0lETFR5
cGUnLAorICAgIHBhcmVudFR5cGUgPT4gJ0lETFR5cGUnLAorICAgIGNvbnN0YW50cyA9PiAnQCcs
ICAgICMgTGlzdCBvZiAnSURMQ29uc3RhbnQnCisgICAgZnVuY3Rpb25zID0+ICdAJywgICAgIyBM
aXN0IG9mICdJRExPcGVyYXRpb24nCisgICAgYW5vbnltb3VzRnVuY3Rpb25zID0+ICdAJywgIyBM
aXN0IG9mICdJRExPcGVyYXRpb24nCisgICAgYXR0cmlidXRlcyA9PiAnQCcsICAgICMgTGlzdCBv
ZiAnSURMQXR0cmlidXRlJyAgICAKKyAgICBjb25zdHJ1Y3RvcnMgPT4gJ0AnLCAjIENvbnN0cnVj
dG9ycywgbGlzdCBvZiAnSURMT3BlcmF0aW9uJworICAgIGN1c3RvbUNvbnN0cnVjdG9ycyA9PiAn
QCcsICMgQ3VzdG9tIGNvbnN0cnVjdG9ycywgbGlzdCBvZiAnSURMT3BlcmF0aW9uJwogICAgIGlz
RXhjZXB0aW9uID0+ICckJywgIyBVc2VkIGZvciBleGNlcHRpb24gaW50ZXJmYWNlcwogICAgIGlz
Q2FsbGJhY2sgPT4gJyQnLCAjIFVzZWQgZm9yIGNhbGxiYWNrIGludGVyZmFjZXMKICAgICBpc1Bh
cnRpYWwgPT4gJyQnLCAjIFVzZWQgZm9yIHBhcnRpYWwgaW50ZXJmYWNlcwogICAgIGl0ZXJhYmxl
ID0+ICckJywgIyBVc2VkIGZvciBpdGVyYWJsZSBpbnRlcmZhY2VzCiAgICAgc2VyaWFsaXphYmxl
ID0+ICckJywgIyBVc2VkIGZvciBzZXJpYWxpemFibGUgaW50ZXJmYWNlcworICAgIGV4dGVuZGVk
QXR0cmlidXRlcyA9PiAnJCcsCiB9KTsKIAotIyBVc2VkIHRvIHJlcHJlc2VudCBkb21JbnRlcmZh
Y2UgY29udGVudHMgKG5hbWUgb2YgbWV0aG9kLCBzaWduYXR1cmUpCi1zdHJ1Y3QoIGRvbUZ1bmN0
aW9uID0+IHsKKyMgVXNlZCB0byByZXByZXNlbnQgYW4gYXJndW1lbnQgdG8gYSBJRExPcGVyYXRp
b24uCitzdHJ1Y3QoIElETEFyZ3VtZW50ID0+IHsKKyAgICBuYW1lID0+ICckJywKKyAgICB0eXBl
ID0+ICdJRExUeXBlJywKKyAgICBpc1ZhcmlhZGljID0+ICckJywKKyAgICBpc09wdGlvbmFsID0+
ICckJywKKyAgICBkZWZhdWx0ID0+ICckJywKKyAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQn
LAorfSk7CisKKyMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jaWRsLW9wZXJhdGlv
bnMKK3N0cnVjdCggSURMT3BlcmF0aW9uID0+IHsKKyAgICBuYW1lID0+ICckJywKKyAgICB0eXBl
ID0+ICdJRExUeXBlJywgIyBSZXR1cm4gdHlwZQorICAgIGFyZ3VtZW50cyA9PiAnQCcsICMgTGlz
dCBvZiAnSURMQXJndW1lbnQnCiAgICAgaXNTdGF0aWMgPT4gJyQnLAotICAgIHNpZ25hdHVyZSA9
PiAnZG9tU2lnbmF0dXJlJywgIyBSZXR1cm4gdHlwZS9PYmplY3QgbmFtZS9leHRlbmRlZCBhdHRy
aWJ1dGVzCi0gICAgcGFyYW1ldGVycyA9PiAnQCcsICMgTGlzdCBvZiAnZG9tU2lnbmF0dXJlJwor
ICAgIHNwZWNpYWxzID0+ICdAJywKKyAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAogfSk7
CiAKLSMgVXNlZCB0byByZXByZXNlbnQgZG9tSW50ZXJmYWNlIGNvbnRlbnRzIChuYW1lIG9mIGF0
dHJpYnV0ZSwgc2lnbmF0dXJlKQotc3RydWN0KCBkb21BdHRyaWJ1dGUgPT4geworCisjIGh0dHBz
Oi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1hdHRyaWJ1dGVzCitzdHJ1Y3QoIElETEF0
dHJpYnV0ZSA9PiB7CisgICAgbmFtZSA9PiAnJCcsCisgICAgdHlwZSA9PiAnSURMVHlwZScsCiAg
ICAgaXNTdGF0aWMgPT4gJyQnLAogICAgIGlzU3RyaW5naWZpZXIgPT4gJyQnLAogICAgIGlzUmVh
ZE9ubHkgPT4gJyQnLAotICAgIHNpZ25hdHVyZSA9PiAnZG9tU2lnbmF0dXJlJywgIyBBdHRyaWJ1
dGUgc2lnbmF0dXJlCisgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywKIH0pOwogCi0jIFVz
ZWQgdG8gcmVwcmVzZW50IEl0ZXJhYmxlIGludGVyZmFjZXMKLXN0cnVjdCggZG9tSXRlcmFibGUg
PT4gewotICAgIGlzS2V5VmFsdWUgPT4gJyQnLCMgSXMgbWFwIGl0ZXJhYmxlIG9yIHNldCBpdGVy
YWJsZQotICAgIGtleVR5cGUgPT4gJ2RvbVR5cGUnLCAjIEtleSB0eXBlIGZvciBtYXAgaXRlcmFi
bGVzCi0gICAgdmFsdWVUeXBlID0+ICdkb21UeXBlJywgIyBWYWx1ZSB0eXBlIGZvciBtYXAgb3Ig
c2V0IGl0ZXJhYmxlcworIyBodHRwczovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtaXRl
cmFibGUKK3N0cnVjdCggSURMSXRlcmFibGUgPT4geworICAgIGlzS2V5VmFsdWUgPT4gJyQnLAor
ICAgIGtleVR5cGUgPT4gJ0lETFR5cGUnLAorICAgIHZhbHVlVHlwZSA9PiAnSURMVHlwZScsCiAg
ICAgZnVuY3Rpb25zID0+ICdAJywgIyBJdGVyYWJsZSBmdW5jdGlvbnMgKGVudHJpZXMsIGtleXMs
IHZhbHVlcywgW1N5bWJvbC5JdGVyYXRvcl0sIGZvckVhY2gpCi0gICAgZXh0ZW5kZWRBdHRyaWJ1
dGVzID0+ICckJywgIyBFeHRlbmRlZCBhdHRyaWJ1dGVzCisgICAgZXh0ZW5kZWRBdHRyaWJ1dGVz
ID0+ICckJywKIH0pOwogCi0jIFVzZWQgdG8gcmVwcmVzZW50IHNlcmlhbGl6YWJsZSBpbnRlcmZh
Y2UKLXN0cnVjdCggZG9tU2VyaWFsaXphYmxlID0+IHsKKyMgaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jaWRsLXNlcmlhbGl6ZXJzCitzdHJ1Y3QoIElETFNlcmlhbGl6YWJsZSA9PiB7
CiAgICAgYXR0cmlidXRlcyA9PiAnQCcsICMgTGlzdCBvZiBhdHRyaWJ1dGVzIHRvIHNlcmlhbGl6
ZQogICAgIGhhc0F0dHJpYnV0ZSA9PiAnJCcsICMgc2VyaWFsaXplciA9IHsgYXR0cmlidXRlIH0K
ICAgICBoYXNJbmhlcml0ID0+ICckJywgIyBzZXJpYWxpemVyID0geyBpbmhlcml0IH0KQEAgLTEx
NCwzOSArMTE5LDUwIEBAIHN0cnVjdCggZG9tU2VyaWFsaXphYmxlID0+IHsKICAgICBmdW5jdGlv
bnMgPT4gJ0AnLCAjIHRvSlNPTiBmdW5jdGlvbgogfSk7CiAKLSMgVXNlZCB0byByZXByZXNlbnQg
c3RyaW5nIGNvbnN0YW50cwotc3RydWN0KCBkb21Db25zdGFudCA9PiB7Ci0gICAgbmFtZSA9PiAn
JCcsICMgRE9NIENvbnN0YW50IGlkZW50aWZpZXIKLSAgICB0eXBlID0+ICdkb21UeXBlJywgIyBU
eXBlIG5hbWUgb2YgZGF0YQotICAgIHZhbHVlID0+ICckJywgIyBDb25zdGFudCB2YWx1ZQotICAg
IGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsICMgRXh0ZW5kZWQgYXR0cmlidXRlcworIyBodHRw
czovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNpZGwtY29uc3RhbnRzCitzdHJ1Y3QoIElETENv
bnN0YW50ID0+IHsKKyAgICBuYW1lID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywKKyAg
ICB2YWx1ZSA9PiAnJCcsCisgICAgZXh0ZW5kZWRBdHRyaWJ1dGVzID0+ICckJywKK30pOworCisj
IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1lbnVtcworc3RydWN0KCBJRExF
bnVtID0+IHsKKyAgICBuYW1lID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBlJywKKyAgICB2
YWx1ZXMgPT4gJ0AnLAorICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsCiB9KTsKIAotIyBV
c2VkIHRvIHJlcHJlc2VudCAnZW51bScgZGVmaW5pdGlvbnMKLXN0cnVjdCggZG9tRW51bSA9PiB7
Ci0gICAgbmFtZSA9PiAnJCcsICMgRW51bWVyYXRpb24gaWRlbnRpZmllcgotICAgIHR5cGUgPT4g
J2RvbVR5cGUnLCAjIEVudW1lcmF0aW9uIHR5cGUKLSAgICB2YWx1ZXMgPT4gJ0AnLCAjIEVudW1l
cmF0aW9uIHZhbHVlcyAobGlzdCBvZiB1bmlxdWUgc3RyaW5ncykKKworc3RydWN0KCBJRExEaWN0
aW9uYXJ5TWVtYmVyID0+IHsKKyAgICBuYW1lID0+ICckJywKKyAgICB0eXBlID0+ICdJRExUeXBl
JywKKyAgICBpc1JlcXVpcmVkID0+ICckJywKKyAgICBkZWZhdWx0ID0+ICckJywKICAgICBleHRl
bmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAogfSk7CiAKLXN0cnVjdCggZG9tRGljdGlvbmFyeSA9PiB7
Ci0gICAgdHlwZSA9PiAnZG9tVHlwZScsICMgRGljdGlvbmFyeSB0eXBlCi0gICAgcGFyZW50VHlw
ZSA9PiAnZG9tVHlwZScsICAjIFBhcmVudCB0eXBlIGlkZW50aWZpZXIKLSAgICBtZW1iZXJzID0+
ICdAJywgIyBMaXN0IG9mICdkb21TaWduYXR1cmUnCisKKyMgaHR0cHM6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jaWRsLWRpY3Rpb25hcmllcworc3RydWN0KCBJRExEaWN0aW9uYXJ5ID0+IHsK
KyAgICB0eXBlID0+ICdJRExUeXBlJywKKyAgICBwYXJlbnRUeXBlID0+ICdJRExUeXBlJywKKyAg
ICBtZW1iZXJzID0+ICdAJywgIyBMaXN0IG9mICdJRExEaWN0aW9uYXJ5TWVtYmVyJwogICAgIGV4
dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsCiB9KTsKIAorIyBodHRwczovL2hleWNhbS5naXRodWIu
aW8vd2ViaWRsLyNpZGwtZW51bXMKK3N0cnVjdCggSURMVHlwZWRlZiA9PiB7CisgICAgdHlwZSA9
PiAnSURMVHlwZScsCit9KTsKKwogc3RydWN0KCBUb2tlbiA9PiB7CiAgICAgdHlwZSA9PiAnJCcs
ICMgdHlwZSBvZiB0b2tlbgogICAgIHZhbHVlID0+ICckJyAjIHZhbHVlIG9mIHRva2VuCiB9KTsK
IAotc3RydWN0KCBUeXBlZGVmID0+IHsKLSAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLCAj
IEV4dGVuZGVkIGF0dHJpYnV0ZXMKLSAgICB0eXBlID0+ICdkb21UeXBlJywgIyBUeXBlIG9mIGRh
dGEKLX0pOwotCiAjIE1hcHMgJ3R5cGVkZWYgbmFtZScgLT4gVHlwZWRlZgogbXkgJXR5cGVkZWZz
ID0gKCk7CiAKQEAgLTI1MSwxNCArMjY3LDE0IEBAIHN1YiBQYXJzZQogICAgIH07CiAgICAgYXNz
ZXJ0ICRAIC4gIiBpbiAkZmlsZU5hbWUiIGlmICRAOwogCi0gICAgbXkgJGRvY3VtZW50ID0gaWRs
RG9jdW1lbnQtPm5ldygpOworICAgIG15ICRkb2N1bWVudCA9IElETERvY3VtZW50LT5uZXcoKTsK
ICAgICAkZG9jdW1lbnQtPmZpbGVOYW1lKCRmaWxlTmFtZSk7CiAgICAgZm9yZWFjaCBteSAkZGVm
aW5pdGlvbiAoQGRlZmluaXRpb25zKSB7Ci0gICAgICAgIGlmIChyZWYoJGRlZmluaXRpb24pIGVx
ICJkb21JbnRlcmZhY2UiKSB7CisgICAgICAgIGlmIChyZWYoJGRlZmluaXRpb24pIGVxICJJRExJ
bnRlcmZhY2UiKSB7CiAgICAgICAgICAgICBwdXNoKEB7JGRvY3VtZW50LT5pbnRlcmZhY2VzfSwg
JGRlZmluaXRpb24pOwotICAgICAgICB9IGVsc2lmIChyZWYoJGRlZmluaXRpb24pIGVxICJkb21F
bnVtIikgeworICAgICAgICB9IGVsc2lmIChyZWYoJGRlZmluaXRpb24pIGVxICJJRExFbnVtIikg
ewogICAgICAgICAgICAgcHVzaChAeyRkb2N1bWVudC0+ZW51bWVyYXRpb25zfSwgJGRlZmluaXRp
b24pOwotICAgICAgICB9IGVsc2lmIChyZWYoJGRlZmluaXRpb24pIGVxICJkb21EaWN0aW9uYXJ5
IikgeworICAgICAgICB9IGVsc2lmIChyZWYoJGRlZmluaXRpb24pIGVxICJJRExEaWN0aW9uYXJ5
IikgewogICAgICAgICAgICAgcHVzaChAeyRkb2N1bWVudC0+ZGljdGlvbmFyaWVzfSwgJGRlZmlu
aXRpb24pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZGllICJVbnJlY29nbml6ZWQg
SURMIGRlZmluaXRpb24ga2luZDogXCIiIC4gcmVmKCRkZWZpbml0aW9uKSAuICJcIiI7CkBAIC0z
NjIsNyArMzc4LDcgQEAgc3ViIG1ha2VTaW1wbGVUeXBlCiB7CiAgICAgbXkgJHR5cGVOYW1lID0g
c2hpZnQ7CiAKLSAgICBteSAkdHlwZSA9IGRvbVR5cGUtPm5ldygpOworICAgIG15ICR0eXBlID0g
SURMVHlwZS0+bmV3KCk7CiAgICAgJHR5cGUtPm5hbWUoJHR5cGVOYW1lKTsKICAgICAKICAgICBy
ZXR1cm4gJHR5cGU7CkBAIC0zNzMsNyArMzg5LDcgQEAgc3ViIGNsb25lVHlwZQogICAgIG15ICRz
ZWxmID0gc2hpZnQ7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIG15ICRjbG9uZWRUeXBl
ID0gZG9tVHlwZS0+bmV3KCk7CisgICAgbXkgJGNsb25lZFR5cGUgPSBJRExUeXBlLT5uZXcoKTsK
ICAgICAkY2xvbmVkVHlwZS0+bmFtZSgkdHlwZS0+bmFtZSk7CiAgICAgJGNsb25lZFR5cGUtPmlz
TnVsbGFibGUoJHR5cGUtPmlzTnVsbGFibGUpOwogICAgICRjbG9uZWRUeXBlLT5pc1VuaW9uKCR0
eXBlLT5pc1VuaW9uKTsKQEAgLTQ0MSw4NCArNDU3LDYxIEBAIHN1YiBhcHBseVR5cGVkZWZzCiAg
ICAgaWYgKCEldHlwZWRlZnMpIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICAKKyAgICAj
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgYXBwbHlpbmcgdHlwZWRlZnMgdG8gSURMSXRlcmFibGUu
CiAgICAgZm9yZWFjaCBteSAkZGVmaW5pdGlvbiAoQCRkZWZpbml0aW9ucykgewotICAgICAgICBp
ZiAocmVmKCRkZWZpbml0aW9uKSBlcSAiZG9tSW50ZXJmYWNlIikgeworICAgICAgICBpZiAocmVm
KCRkZWZpbml0aW9uKSBlcSAiSURMSW50ZXJmYWNlIikgewogICAgICAgICAgICAgZm9yZWFjaCBt
eSAkY29uc3RhbnQgKEB7JGRlZmluaXRpb24tPmNvbnN0YW50c30pIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZXhpc3RzICR0eXBlZGVmc3skY29uc3RhbnQtPnR5cGUtPm5hbWV9KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIG15ICR0eXBlZGVmID0gJHR5cGVkZWZzeyRjb25zdGFudC0+dHlwZS0+bmFt
ZX07Ci0gICAgICAgICAgICAgICAgICAgICRzZWxmLT5hc3NlcnROb0V4dGVuZGVkQXR0cmlidXRl
c0luVHlwZWRlZigkY29uc3RhbnQtPnR5cGUtPm5hbWUsIF9fTElORV9fKTsKLQotICAgICAgICAg
ICAgICAgICAgICBteSAkY2xvbmVkVHlwZSA9ICRzZWxmLT5jbG9uZVR5cGUoJHR5cGVkZWYtPnR5
cGUpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAjIFJldGFpbiBudWxs
YWJpbGl0eSBmcm9tIHRoZSBvcmlnaW5hbCB0eXBlLgotICAgICAgICAgICAgICAgICAgICAkY2xv
bmVkVHlwZS0+aXNOdWxsYWJsZSgkY29uc3RhbnQtPnR5cGUtPmlzTnVsbGFibGUpOwotCi0gICAg
ICAgICAgICAgICAgICAgICRjb25zdGFudC0+dHlwZSgkY2xvbmVkVHlwZSk7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICRjb25zdGFudC0+dHlwZSgkc2VsZi0+dHlwZUJ5QXBw
bHlpbmdUeXBlZGVmcygkY29uc3RhbnQtPnR5cGUpKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskZGVmaW5pdGlvbi0+YXR0cmlidXRlc30pIHsK
LSAgICAgICAgICAgICAgICAkc2VsZi0+YXBwbHlUeXBlZGVmc0ZvclNpZ25hdHVyZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUpOworICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnR5cGUoJHNlbGYt
PnR5cGVCeUFwcGx5aW5nVHlwZWRlZnMoJGF0dHJpYnV0ZS0+dHlwZSkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGRlZmluaXRpb24tPmZ1bmN0
aW9uc30sIEB7JGRlZmluaXRpb24tPmFub255bW91c0Z1bmN0aW9uc30sIEB7JGRlZmluaXRpb24t
PmNvbnN0cnVjdG9yc30sIEB7JGRlZmluaXRpb24tPmN1c3RvbUNvbnN0cnVjdG9yc30pIHsKLSAg
ICAgICAgICAgICAgICAkc2VsZi0+YXBwbHlUeXBlZGVmc0ZvclNpZ25hdHVyZSgkZnVuY3Rpb24t
PnNpZ25hdHVyZSk7Ci0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkc2lnbmF0dXJlIChAeyRm
dW5jdGlvbi0+cGFyYW1ldGVyc30pIHsKLSAgICAgICAgICAgICAgICAgICAgJHNlbGYtPmFwcGx5
VHlwZWRlZnNGb3JTaWduYXR1cmUoJHNpZ25hdHVyZSk7CisgICAgICAgICAgICAgICAgaWYgKCRm
dW5jdGlvbi0+dHlwZSkgeworICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb24tPnR5cGUoJHNl
bGYtPnR5cGVCeUFwcGx5aW5nVHlwZWRlZnMoJGZ1bmN0aW9uLT50eXBlKSk7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0
aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgICAgICRhcmd1bWVudC0+dHlwZSgk
c2VsZi0+dHlwZUJ5QXBwbHlpbmdUeXBlZGVmcygkYXJndW1lbnQtPnR5cGUpKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzaWYgKHJlZigkZGVmaW5pdGlv
bikgZXEgImRvbURpY3Rpb25hcnkiKSB7CisgICAgICAgIH0gZWxzaWYgKHJlZigkZGVmaW5pdGlv
bikgZXEgIklETERpY3Rpb25hcnkiKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRtZW1iZXIg
KEB7JGRlZmluaXRpb24tPm1lbWJlcnN9KSB7Ci0gICAgICAgICAgICAgICAgJHNlbGYtPmFwcGx5
VHlwZWRlZnNGb3JTaWduYXR1cmUoJG1lbWJlcik7CisgICAgICAgICAgICAgICAgJG1lbWJlci0+
dHlwZSgkc2VsZi0+dHlwZUJ5QXBwbHlpbmdUeXBlZGVmcygkbWVtYmVyLT50eXBlKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXN1YiBhcHBseVR5cGVkZWZzRm9yU2ln
bmF0dXJlCitzdWIgdHlwZUJ5QXBwbHlpbmdUeXBlZGVmcwogewogICAgIG15ICRzZWxmID0gc2hp
ZnQ7Ci0gICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwotCi0gICAgaWYgKCFkZWZpbmVkICgkc2ln
bmF0dXJlLT50eXBlKSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG15ICR0eXBlID0g
c2hpZnQ7CiAKLSAgICBteSAkdHlwZU5hbWUgPSAkc2lnbmF0dXJlLT50eXBlLT5uYW1lOworICAg
IGFzc2VydCgiTWlzc2luZyB0eXBlIikgaWYgISR0eXBlOwogCi0gICAgIyBIYW5kbGUgdW5pb24g
dHlwZXMsIHNlcXVlbmNlcyBhbmQgZXRjLgotICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIHJl
Y3Vyc2l2ZS4KLSAgICBteSAkbnVtYmVyT2ZTdWJ0eXBlcyA9IHNjYWxhciBAeyRzaWduYXR1cmUt
PnR5cGUtPnN1YnR5cGVzfTsKKyAgICBteSAkbnVtYmVyT2ZTdWJ0eXBlcyA9IHNjYWxhciBAeyR0
eXBlLT5zdWJ0eXBlc307CiAgICAgaWYgKCRudW1iZXJPZlN1YnR5cGVzKSB7CiAgICAgICAgIGZv
ciBteSAkaSAoMC4uJG51bWJlck9mU3VidHlwZXMgLSAxKSB7Ci0gICAgICAgICAgICBteSAkc3Vi
dHlwZSA9IEB7JHNpZ25hdHVyZS0+dHlwZS0+c3VidHlwZXN9WyRpXTsKLSAgICAgICAgICAgIG15
ICRzdWJ0eXBlTmFtZSA9ICRzdWJ0eXBlLT5uYW1lOwotCi0gICAgICAgICAgICBpZiAoZXhpc3Rz
ICR0eXBlZGVmc3skc3VidHlwZU5hbWV9KSB7Ci0gICAgICAgICAgICAgICAgbXkgJHR5cGVkZWYg
PSAkdHlwZWRlZnN7JHN1YnR5cGVOYW1lfTsKLQotICAgICAgICAgICAgICAgIG15ICRjbG9uZWRU
eXBlID0gJHNlbGYtPmNsb25lVHlwZSgkdHlwZWRlZi0+dHlwZSk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgIyBSZXRhaW4gbnVsbGFiaWxpdHkgZnJvbSB0aGUgb3JpZ2luYWwg
dHlwZS4KLSAgICAgICAgICAgICAgICAkY2xvbmVkVHlwZS0+aXNOdWxsYWJsZSgkc3VidHlwZS0+
aXNOdWxsYWJsZSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgQHskc2lnbmF0
dXJlLT50eXBlLT5zdWJ0eXBlc31bJGldID0gJGNsb25lZFR5cGU7Ci0gICAgICAgICAgICB9Cisg
ICAgICAgICAgICBteSAkc3VidHlwZSA9IEB7JHR5cGUtPnN1YnR5cGVzfVskaV07CisgICAgICAg
ICAgICBteSAkcmVwbGFjZW1lbnRTdWJ0eXBlID0gJHNlbGYtPnR5cGVCeUFwcGx5aW5nVHlwZWRl
ZnMoJHN1YnR5cGUpOworICAgICAgICAgICAgQHskdHlwZS0+c3VidHlwZXN9WyRpXSA9ICRyZXBs
YWNlbWVudFN1YnR5cGUKICAgICAgICAgfQotICAgIAotICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgcmV0dXJuICR0eXBlOwogICAgIH0KIAotICAgIGlmIChleGlzdHMgJHR5cGVkZWZzeyR0eXBl
TmFtZX0pIHsKLSAgICAgICAgbXkgJHR5cGVkZWYgPSAkdHlwZWRlZnN7JHR5cGVOYW1lfTsKKyAg
ICBpZiAoZXhpc3RzICR0eXBlZGVmc3skdHlwZS0+bmFtZX0pIHsKKyAgICAgICAgbXkgJHR5cGVk
ZWYgPSAkdHlwZWRlZnN7JHR5cGUtPm5hbWV9OwogCiAgICAgICAgIG15ICRjbG9uZWRUeXBlID0g
JHNlbGYtPmNsb25lVHlwZSgkdHlwZWRlZi0+dHlwZSk7Ci0gICAgICAgIAotICAgICAgICAjIFJl
dGFpbiBudWxsYWJpbGl0eSBmcm9tIHRoZSBvcmlnaW5hbCB0eXBlLgotICAgICAgICAkY2xvbmVk
VHlwZS0+aXNOdWxsYWJsZSgkc2lnbmF0dXJlLT50eXBlLT5pc051bGxhYmxlKTsKKyAgICAgICAg
JGNsb25lZFR5cGUtPmlzTnVsbGFibGUoJGNsb25lZFR5cGUtPmlzTnVsbGFibGUgfHwgJHR5cGUt
PmlzTnVsbGFibGUpOwogCi0gICAgICAgICRzaWduYXR1cmUtPnR5cGUoJGNsb25lZFR5cGUpOwot
Ci0gICAgICAgIGNvcHlFeHRlbmRlZEF0dHJpYnV0ZXMoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLCAkdHlwZWRlZi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgcmV0dXJuICRj
bG9uZWRUeXBlOwogICAgIH0KKyAgICAKKyAgICByZXR1cm4gJHR5cGU7CiB9CiAKIHN1YiBwYXJz
ZURlZmluaXRpb24KQEAgLTU5MSw3ICs1ODQsNyBAQCBzdWIgcGFyc2VJbnRlcmZhY2UKIAogICAg
IG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBl
cSAiaW50ZXJmYWNlIikgewotICAgICAgICBteSAkaW50ZXJmYWNlID0gZG9tSW50ZXJmYWNlLT5u
ZXcoKTsKKyAgICAgICAgbXkgJGludGVyZmFjZSA9IElETEludGVyZmFjZS0+bmV3KCk7CiAgICAg
ICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiaW50ZXJmYWNl
IiwgX19MSU5FX18pOwogICAgICAgICBteSAkaW50ZXJmYWNlTmFtZVRva2VuID0gJHNlbGYtPmdl
dFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJGludGVyZmFjZU5hbWVU
b2tlbiwgSWRlbnRpZmllclRva2VuKTsKQEAgLTcwOCw3ICs3MDEsNyBAQCBzdWIgcGFyc2VEaWN0
aW9uYXJ5CiAKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5l
eHQtPnZhbHVlKCkgZXEgImRpY3Rpb25hcnkiKSB7Ci0gICAgICAgIG15ICRkaWN0aW9uYXJ5ID0g
ZG9tRGljdGlvbmFyeS0+bmV3KCk7CisgICAgICAgIG15ICRkaWN0aW9uYXJ5ID0gSURMRGljdGlv
bmFyeS0+bmV3KCk7CiAgICAgICAgICRkaWN0aW9uYXJ5LT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4
dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAiZGljdGlvbmFyeSIsIF9fTElORV9fKTsKIApAQCAtNzU5LDEyICs3
NTIsMTIgQEAgc3ViIHBhcnNlRGljdGlvbmFyeU1lbWJlcgogCiAgICAgbXkgJG5leHQgPSAkc2Vs
Zi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2Vu
IHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEV4Y2VwdGlvbkZpZWxkXzEvKSB7Ci0gICAgICAg
IG15ICRtZW1iZXIgPSBkb21TaWduYXR1cmUtPm5ldygpOwotICAgICAgICBpZiAoJG5leHQtPnZh
bHVlIG5lICJyZXF1aXJlZCIpIHsKLSAgICAgICAgICAgICRtZW1iZXItPmlzT3B0aW9uYWwoMSk7
Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIG15ICRtZW1iZXIgPSBJRExEaWN0aW9uYXJ5TWVt
YmVyLT5uZXcoKTsKKyAgICAgICAgaWYgKCRuZXh0LT52YWx1ZSBlcSAicmVxdWlyZWQiKSB7CiAg
ICAgICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgInJl
cXVpcmVkIiwgX19MSU5FX18pOwotICAgICAgICAgICAgJG1lbWJlci0+aXNPcHRpb25hbCgwKTsK
KyAgICAgICAgICAgICRtZW1iZXItPmlzUmVxdWlyZWQoMSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAkbWVtYmVyLT5pc1JlcXVpcmVkKDApOwogICAgICAgICB9CiAgICAgICAgICRt
ZW1iZXItPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIApAQCAt
ODMzLDcgKzgyNiw3IEBAIHN1YiBwYXJzZUV4Y2VwdGlvbgogCiAgICAgbXkgJG5leHQgPSAkc2Vs
Zi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJleGNlcHRpb24iKSB7
Ci0gICAgICAgIG15ICRpbnRlcmZhY2UgPSBkb21JbnRlcmZhY2UtPm5ldygpOworICAgICAgICBt
eSAkaW50ZXJmYWNlID0gSURMSW50ZXJmYWNlLT5uZXcoKTsKICAgICAgICAgJHNlbGYtPmFzc2Vy
dFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJleGNlcHRpb24iLCBfX0xJTkVfXyk7CiAg
ICAgICAgIG15ICRleGNlcHRpb25OYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkZXhjZXB0aW9uTmFtZVRva2VuLCBJZGVudGlmaWVy
VG9rZW4pOwpAQCAtODk5LDcgKzg5Miw3IEBAIHN1YiBwYXJzZUVudW0KIAogICAgIG15ICRuZXh0
ID0gJHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+dmFsdWUoKSBlcSAiZW51bSIp
IHsKLSAgICAgICAgbXkgJGVudW0gPSBkb21FbnVtLT5uZXcoKTsKKyAgICAgICAgbXkgJGVudW0g
PSBJRExFbnVtLT5uZXcoKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYt
PmdldFRva2VuKCksICJlbnVtIiwgX19MSU5FX18pOwogICAgICAgICBteSAkZW51bU5hbWVUb2tl
biA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5UeXBlKCRl
bnVtTmFtZVRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwpAQCAtOTc4LDggKzk3MSw3IEBAIHN1YiBw
YXJzZVR5cGVkZWYKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAo
JG5leHQtPnZhbHVlKCkgZXEgInR5cGVkZWYiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tl
blZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAidHlwZWRlZiIsIF9fTElORV9fKTsKLSAgICAgICAg
bXkgJHR5cGVkZWYgPSBUeXBlZGVmLT5uZXcoKTsKLSAgICAgICAgJHR5cGVkZWYtPmV4dGVuZGVk
QXR0cmlidXRlcygkc2VsZi0+cGFyc2VFeHRlbmRlZEF0dHJpYnV0ZUxpc3RBbGxvd0VtcHR5KCkp
OworICAgICAgICBteSAkdHlwZWRlZiA9IElETFR5cGVkZWYtPm5ldygpOwogCiAgICAgICAgIG15
ICR0eXBlID0gJHNlbGYtPnBhcnNlVHlwZSgpOwogICAgICAgICAkdHlwZWRlZi0+dHlwZSgkdHlw
ZSk7CkBAIC0xMDE4LDcgKzEwMTAsNyBAQCBzdWIgcGFyc2VDb25zdAogCiAgICAgbXkgJG5leHQg
PSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpIGVxICJjb25zdCIp
IHsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tQ29uc3RhbnQtPm5ldygpOworICAgICAg
ICBteSAkbmV3RGF0YU5vZGUgPSBJRExDb25zdGFudC0+bmV3KCk7CiAgICAgICAgICRzZWxmLT5h
c3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiY29uc3QiLCBfX0xJTkVfXyk7CiAg
ICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBhcnNlQ29uc3RUeXBlKCk7CiAgICAgICAgICRuZXdE
YXRhTm9kZS0+dHlwZSgkdHlwZSk7CkBAIC0xMTMzLDEzICsxMTI1LDEyIEBAIHN1YiBwYXJzZVNl
cmlhbGl6ZXIKICAgICAgICAgICAgICRuZXdEYXRhTm9kZSA9ICRzZWxmLT5wYXJzZVNlcmlhbGl6
ZXJSZXN0KCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgICAgICAgICAgbXkgJG5leHQgPSAk
c2VsZi0+bmV4dFRva2VuKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkbmV3RGF0
YU5vZGUgPSBkb21TZXJpYWxpemFibGUtPm5ldygpOworICAgICAgICAgICAgJG5ld0RhdGFOb2Rl
ID0gSURMU2VyaWFsaXphYmxlLT5uZXcoKTsKICAgICAgICAgfQogCi0gICAgICAgIG15ICR0b0pT
T05GdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAgICAgJHRvSlNPTkZ1bmN0aW9u
LT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgICAgICR0b0pTT05GdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
Ci0gICAgICAgICR0b0pTT05GdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJ0b0pTT04iKTsKKyAg
ICAgICAgbXkgJHRvSlNPTkZ1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAgICAg
JHRvSlNPTkZ1bmN0aW9uLT5uYW1lKCJ0b0pTT04iKTsKKyAgICAgICAgJHRvSlNPTkZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgIHB1
c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICR0b0pTT05GdW5jdGlvbik7CiAKICAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5F
X18pOwpAQCAtMTE3Miw3ICsxMTYzLDcgQEAgc3ViIHBhcnNlU2VyaWFsaXphdGlvblBhdHRlcm4K
ICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKICAgICBpZiAoJG5leHQtPnZhbHVl
KCkgZXEgInsiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRU
b2tlbigpLCAieyIsIF9fTElORV9fKTsKLSAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tU2Vy
aWFsaXphYmxlLT5uZXcoKTsKKyAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gSURMU2VyaWFsaXph
YmxlLT5uZXcoKTsKICAgICAgICAgJHNlbGYtPnBhcnNlU2VyaWFsaXphdGlvbkF0dHJpYnV0ZXMo
JG5ld0RhdGFOb2RlKTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdl
dFRva2VuKCksICJ9IiwgX19MSU5FX18pOwogICAgICAgICByZXR1cm4gJG5ld0RhdGFOb2RlOwpA
QCAtMTE4Niw3ICsxMTc3LDcgQEAgc3ViIHBhcnNlU2VyaWFsaXphdGlvblBhdHRlcm4KICAgICAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkdG9rZW4sIElkZW50aWZpZXJUb2tlbik7CiAgICAg
ICAgIHB1c2goQGF0dHJpYnV0ZXMsICR0b2tlbi0+dmFsdWUoKSk7CiAKLSAgICAgICAgbXkgJG5l
d0RhdGFOb2RlID0gZG9tU2VyaWFsaXphYmxlLT5uZXcoKTsKKyAgICAgICAgbXkgJG5ld0RhdGFO
b2RlID0gSURMU2VyaWFsaXphYmxlLT5uZXcoKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5hdHRy
aWJ1dGVzKFxAYXR0cmlidXRlcyk7CiAKICAgICAgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKQEAg
LTExOTcsMjEgKzExODgsMjEgQEAgc3ViIHBhcnNlU2VyaWFsaXphdGlvblBhdHRlcm4KIHN1YiBw
YXJzZVNlcmlhbGl6YXRpb25BdHRyaWJ1dGVzCiB7CiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKLSAg
ICBteSAkZG9tU2VyaWFsaXphYmxlID0gc2hpZnQ7CisgICAgbXkgJHNlcmlhbGl6YWJsZSA9IHNo
aWZ0OwogICAgIG15ICR0b2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogCiAgICAgaWYgKCR0b2tl
bi0+dmFsdWUoKSBlcSAiZ2V0dGVyIikgewotICAgICAgICAkZG9tU2VyaWFsaXphYmxlLT5oYXNH
ZXR0ZXIoMSk7CisgICAgICAgICRzZXJpYWxpemFibGUtPmhhc0dldHRlcigxKTsKICAgICAgICAg
ZGllICJTZXJpYWxpemVyIGdldHRlciBrZXl3b3JkIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVk
LiI7CiAKICAgICB9CiAgICAgaWYgKCR0b2tlbi0+dmFsdWUoKSBlcSAiaW5oZXJpdCIpIHsKLSAg
ICAgICAgJGRvbVNlcmlhbGl6YWJsZS0+aGFzSW5oZXJpdCgxKTsKKyAgICAgICAgJHNlcmlhbGl6
YWJsZS0+aGFzSW5oZXJpdCgxKTsKICAgICAgICAgZGllICJTZXJpYWxpemVyIGluaGVyaXQga2V5
d29yZCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4iOwogICAgIH0KIAogICAgIGlmICgkdG9r
ZW4tPnZhbHVlKCkgZXEgImF0dHJpYnV0ZSIpIHsKLSAgICAgICAgJGRvbVNlcmlhbGl6YWJsZS0+
aGFzQXR0cmlidXRlKDEpOworICAgICAgICAkc2VyaWFsaXphYmxlLT5oYXNBdHRyaWJ1dGUoMSk7
CiAgICAgICAgICMgQXR0cmlidXRlcyB3aWxsIGJlIGZpbGxlZCBpbiB2aWEgYXBwbHlNZW1iZXJM
aXN0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyMjAsNyArMTIxMSw3IEBAIHN1YiBw
YXJzZVNlcmlhbGl6YXRpb25BdHRyaWJ1dGVzCiAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgk
dG9rZW4sIElkZW50aWZpZXJUb2tlbik7CiAgICAgcHVzaChAYXR0cmlidXRlcywgJHRva2VuLT52
YWx1ZSgpKTsKICAgICBwdXNoKEBhdHRyaWJ1dGVzLCBAeyRzZWxmLT5wYXJzZUlkZW50aWZpZXJz
KCl9KTsKLSAgICAkZG9tU2VyaWFsaXphYmxlLT5hdHRyaWJ1dGVzKFxAYXR0cmlidXRlcyk7Cisg
ICAgJHNlcmlhbGl6YWJsZS0+YXR0cmlidXRlcyhcQGF0dHJpYnV0ZXMpOwogfQogCiBzdWIgcGFy
c2VJZGVudGlmaWVyTGlzdApAQCAtMTI4NiwxMSArMTI3NywxMSBAQCBzdWIgcGFyc2VBdHRyaWJ1
dGVPck9wZXJhdGlvblJlc3QKICAgICB9CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRp
ZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dEF0dHJpYnV0ZU9yT3BlcmF0aW9u
UmVzdF8xLykgewogICAgICAgICBteSAkcmV0dXJuVHlwZSA9ICRzZWxmLT5wYXJzZVJldHVyblR5
cGUoKTsKLSAgICAgICAgbXkgJGludGVyZmFjZSA9ICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3Qo
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgICAgIGlmIChkZWZpbmVkICgkaW50ZXJmYWNl
KSkgewotICAgICAgICAgICAgJGludGVyZmFjZS0+c2lnbmF0dXJlLT50eXBlKCRyZXR1cm5UeXBl
KTsKKyAgICAgICAgbXkgJG9wZXJhdGlvbiA9ICRzZWxmLT5wYXJzZU9wZXJhdGlvblJlc3QoJGV4
dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgIGlmIChkZWZpbmVkICgkb3BlcmF0aW9uKSkg
eworICAgICAgICAgICAgJG9wZXJhdGlvbi0+dHlwZSgkcmV0dXJuVHlwZSk7CiAgICAgICAgIH0K
LSAgICAgICAgcmV0dXJuICRpbnRlcmZhY2U7CisgICAgICAgIHJldHVybiAkb3BlcmF0aW9uOwog
ICAgIH0KICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBf
X0xJTkVfXyk7CiB9CkBAIC0xMzE1LDI2ICsxMzA2LDI1IEBAIHN1YiBwYXJzZUF0dHJpYnV0ZVJl
c3QKIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+
dmFsdWUoKSA9fiAvJG5leHRBdHRyaWJ1dGVSZXN0XzEvKSB7Ci0gICAgICAgIG15ICRuZXdEYXRh
Tm9kZSA9IGRvbUF0dHJpYnV0ZS0+bmV3KCk7Ci0gICAgICAgIGlmICgkc2VsZi0+cGFyc2VSZWFk
T25seSgpKSB7Ci0gICAgICAgICAgICAkbmV3RGF0YU5vZGUtPmlzUmVhZE9ubHkoMSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgbXkgJG5ld0RhdGFOb2RlID0gSURMQXR0cmlidXRlLT5uZXcoKTsKKyAg
ICAgICAgJG5ld0RhdGFOb2RlLT5pc1JlYWRPbmx5KCRzZWxmLT5wYXJzZVJlYWRPbmx5KCkpOwor
CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiYXR0
cmlidXRlIiwgX19MSU5FX18pOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZShkb21T
aWduYXR1cmUtPm5ldygpKTsKICAgICAgICAgCiAgICAgICAgIG15ICR0eXBlID0gJHNlbGYtPnBh
cnNlVHlwZSgpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSgkdHlwZSk7
CisgICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgkdHlwZSk7CiAKICAgICAgICAgbXkgJHRva2Vu
ID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJHRv
a2VuLCBJZGVudGlmaWVyVG9rZW4pOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+
bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHRva2VuLT52YWx1ZSgpKSk7Cisg
ICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgo
JHRva2VuLT52YWx1ZSgpKSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxm
LT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKKwogICAgICAgICAjIEN1c3RvbUNvbnN0cnVj
dG9yIG1heSBhbHNvIGJlIHVzZWQgb24gYXR0cmlidXRlcy4KICAgICAgICAgaWYgKGRlZmluZWQg
JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDdXN0b21Db25zdHJ1Y3RvcnMifSkgewogICAgICAg
ICAgICAgZGVsZXRlICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ3VzdG9tQ29uc3RydWN0b3Jz
In07CiAgICAgICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57IkN1c3RvbUNvbnN0cnVj
dG9yIn0gPSAiVkFMVUVfSVNfTUlTU0lORyI7CiAgICAgICAgIH0KLSAgICAgICAgJG5ld0RhdGFO
b2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
KTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCk7CiAgICAgICAgIHJldHVybiAkbmV3RGF0YU5vZGU7CiAgICAgfQogICAgICRz
ZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKQEAg
LTEzNzksNyArMTM2OSw3IEBAIHN1YiBwYXJzZU9wZXJhdGlvbk9ySXRlcmF0b3IKICAgICAgICAg
bXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAgICAgICAgIGlmICgkbmV4dC0+dHlwZSgp
ID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsKICAgICAgICAg
ICAgIG15ICRvcGVyYXRpb24gPSAkc2VsZi0+cGFyc2VPcGVyYXRpb25SZXN0KCRleHRlbmRlZEF0
dHJpYnV0ZUxpc3QpOwotICAgICAgICAgICAgJG9wZXJhdGlvbi0+c2lnbmF0dXJlLT50eXBlKCRy
ZXR1cm5UeXBlKTsKKyAgICAgICAgICAgICRvcGVyYXRpb24tPnR5cGUoJHJldHVyblR5cGUpOwog
ICAgICAgICAgICAgcmV0dXJuICRvcGVyYXRpb247CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzk2
LDEyICsxMzg2LDEyIEBAIHN1YiBwYXJzZVNwZWNpYWxPcGVyYXRpb24KICAgICAgICAgbXkgQHNw
ZWNpYWxzID0gKCk7CiAgICAgICAgIHB1c2goQHNwZWNpYWxzLCBAeyRzZWxmLT5wYXJzZVNwZWNp
YWxzKCl9KTsKICAgICAgICAgbXkgJHJldHVyblR5cGUgPSAkc2VsZi0+cGFyc2VSZXR1cm5UeXBl
KCk7Ci0gICAgICAgIG15ICRpbnRlcmZhY2UgPSAkc2VsZi0+cGFyc2VPcGVyYXRpb25SZXN0KCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICBpZiAoZGVmaW5lZCAoJGludGVyZmFjZSkp
IHsKLSAgICAgICAgICAgICRpbnRlcmZhY2UtPnNpZ25hdHVyZS0+dHlwZSgkcmV0dXJuVHlwZSk7
Ci0gICAgICAgICAgICAkaW50ZXJmYWNlLT5zaWduYXR1cmUtPnNwZWNpYWxzKFxAc3BlY2lhbHMp
OworICAgICAgICBteSAkb3BlcmF0aW9uID0gJHNlbGYtPnBhcnNlT3BlcmF0aW9uUmVzdCgkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgaWYgKGRlZmluZWQgKCRvcGVyYXRpb24pKSB7
CisgICAgICAgICAgICAkb3BlcmF0aW9uLT50eXBlKCRyZXR1cm5UeXBlKTsKKyAgICAgICAgICAg
ICRvcGVyYXRpb24tPnNwZWNpYWxzKFxAc3BlY2lhbHMpOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiAkaW50ZXJmYWNlOworICAgICAgICByZXR1cm4gJG9wZXJhdGlvbjsKICAgICB9CiAgICAg
JHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUoKSwgX19MSU5FX18pOwog
fQpAQCAtMTQ2OSwzNiArMTQ1OSwzMSBAQCBzdWIgcGFyc2VPcHRpb25hbEl0ZXJhYmxlSW50ZXJm
YWNlCiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
ID0gc2hpZnQ7CiAKLSAgICBteSAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbiA9IGRvbUZ1bmN0aW9u
LT5uZXcoKTsKLSAgICAkc3ltYm9sSXRlcmF0b3JGdW5jdGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25h
dHVyZS0+bmV3KCkpOwotICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4
dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAkc3ltYm9sSXRl
cmF0b3JGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJbU3ltYm9sLkl0ZXJhdG9yXSIpOwotCi0g
ICAgbXkgJGVudHJpZXNGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAkZW50cmll
c0Z1bmN0aW9uLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgJGVudHJpZXNG
dW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRl
TGlzdCk7Ci0gICAgJGVudHJpZXNGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJlbnRyaWVzIik7
Ci0KLSAgICBteSAka2V5c0Z1bmN0aW9uID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAgICRrZXlz
RnVuY3Rpb24tPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKLSAgICAka2V5c0Z1bmN0
aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
KTsKLSAgICAka2V5c0Z1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUoImtleXMiKTsKLQotICAgIG15
ICR2YWx1ZXNGdW5jdGlvbiA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAkdmFsdWVzRnVuY3Rp
b24tPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKLSAgICAkdmFsdWVzRnVuY3Rpb24t
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwot
ICAgICR2YWx1ZXNGdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKCJ2YWx1ZXMiKTsKLQotICAgIG15
ICRmb3JFYWNoRnVuY3Rpb24gPSBkb21GdW5jdGlvbi0+bmV3KCk7Ci0gICAgJGZvckVhY2hGdW5j
dGlvbi0+c2lnbmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwotICAgICRmb3JFYWNoRnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OwotICAgICRmb3JFYWNoRnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSgiZm9yRWFjaCIpOwotICAg
IG15ICRmb3JFYWNoQXJndW1lbnQgPSBkb21TaWduYXR1cmUtPm5ldygpOworICAgIG15ICRzeW1i
b2xJdGVyYXRvckZ1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkc3ltYm9sSXRl
cmF0b3JGdW5jdGlvbi0+bmFtZSgiW1N5bWJvbC5JdGVyYXRvcl0iKTsKKyAgICAkc3ltYm9sSXRl
cmF0b3JGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OworCisgICAgbXkgJGVudHJpZXNGdW5jdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAg
JGVudHJpZXNGdW5jdGlvbi0+bmFtZSgiZW50cmllcyIpOworICAgICRlbnRyaWVzRnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKworICAgIG15ICRr
ZXlzRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICRrZXlzRnVuY3Rpb24tPm5h
bWUoImtleXMiKTsKKyAgICAka2V5c0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVu
ZGVkQXR0cmlidXRlTGlzdCk7CisKKyAgICBteSAkdmFsdWVzRnVuY3Rpb24gPSBJRExPcGVyYXRp
b24tPm5ldygpOworICAgICR2YWx1ZXNGdW5jdGlvbi0+bmFtZSgidmFsdWVzIik7CisgICAgJHZh
bHVlc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CisKKyAgICBteSAkZm9yRWFjaEZ1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAk
Zm9yRWFjaEZ1bmN0aW9uLT5uYW1lKCJmb3JFYWNoIik7CisgICAgJGZvckVhY2hGdW5jdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgIG15ICRmb3JF
YWNoQXJndW1lbnQgPSBJRExBcmd1bWVudC0+bmV3KCk7CiAgICAgJGZvckVhY2hBcmd1bWVudC0+
bmFtZSgiY2FsbGJhY2siKTsKICAgICAkZm9yRWFjaEFyZ3VtZW50LT50eXBlKG1ha2VTaW1wbGVU
eXBlKCJhbnkiKSk7Ci0gICAgcHVzaChAeyRmb3JFYWNoRnVuY3Rpb24tPnBhcmFtZXRlcnN9LCAo
JGZvckVhY2hBcmd1bWVudCkpOworICAgIHB1c2goQHskZm9yRWFjaEZ1bmN0aW9uLT5hcmd1bWVu
dHN9LCAoJGZvckVhY2hBcmd1bWVudCkpOwogCi0gICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tSXRl
cmFibGUtPm5ldygpOworICAgIG15ICRuZXdEYXRhTm9kZSA9IElETEl0ZXJhYmxlLT5uZXcoKTsK
ICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKICAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5mdW5jdGlvbnN9LCAkc3ltYm9sSXRlcmF0
b3JGdW5jdGlvbik7CiAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGVudHJp
ZXNGdW5jdGlvbik7CkBAIC0xNTMyLDE1ICsxNTE3LDE5IEBAIHN1YiBwYXJzZU9wZXJhdGlvblJl
c3QKIAogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwogICAgIGlmICgkbmV4dC0+
dHlwZSgpID09IElkZW50aWZpZXJUb2tlbiB8fCAkbmV4dC0+dmFsdWUoKSBlcSAiKCIpIHsKLSAg
ICAgICAgbXkgJG5ld0RhdGFOb2RlID0gZG9tRnVuY3Rpb24tPm5ldygpOwotICAgICAgICAkbmV3
RGF0YU5vZGUtPnNpZ25hdHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKKyAgICAgICAgbXkgJG5l
d0RhdGFOb2RlID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKwogICAgICAgICBteSAkbmFtZSA9ICRz
ZWxmLT5wYXJzZU9wdGlvbmFsSWRlbnRpZmllcigpOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNp
Z25hdHVyZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJG5hbWUpKTsKKyAg
ICAgICAgJG5ld0RhdGFOb2RlLT5uYW1lKGlkZW50aWZpZXJSZW1vdmVOdWxsYWJsZVByZWZpeCgk
bmFtZSkpOworICAgICAgICAKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYt
PmdldFRva2VuKCksICIoIiwgJG5hbWUsIF9fTElORV9fKTsKLSAgICAgICAgcHVzaChAeyRuZXdE
YXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JHNlbGYtPnBhcnNlQXJndW1lbnRMaXN0KCl9KTsKKyAg
ICAgICAgCisgICAgICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmFyZ3VtZW50c30sIEB7JHNlbGYt
PnBhcnNlQXJndW1lbnRMaXN0KCl9KTsKKyAgICAgICAgCiAgICAgICAgICRzZWxmLT5hc3NlcnRU
b2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiKSIsIF9fTElORV9fKTsKICAgICAgICAgJHNl
bGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5FX18pOwot
ICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAKKyAgICAgICAgJG5ld0RhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CiAgICAgICAgIHJldHVybiAk
bmV3RGF0YU5vZGU7CiAgICAgfQogICAgICRzZWxmLT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5l
eHQtPnZhbHVlKCksIF9fTElORV9fKTsKQEAgLTE1OTIsMTAgKzE1ODEsOCBAQCBzdWIgcGFyc2VB
cmd1bWVudAogICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4
dFRva2VuKCk7CiAgICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRu
ZXh0LT52YWx1ZSgpID1+IC8kbmV4dEFyZ3VtZW50TGlzdF8xLykgewotICAgICAgICBteSAkaW4g
PSAkc2VsZi0+cGFyc2VJbigpOwogICAgICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0g
JHNlbGYtPnBhcnNlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0QWxsb3dFbXB0eSgpOwogICAgICAgICBt
eSAkYXJndW1lbnQgPSAkc2VsZi0+cGFyc2VPcHRpb25hbE9yUmVxdWlyZWRBcmd1bWVudCgkZXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAgICAgJGFyZ3VtZW50LT5kaXJlY3Rpb24oJHNlbGYt
PnBhcnNlSW4oKSk7CiAgICAgICAgIHJldHVybiAkYXJndW1lbnQ7CiAgICAgfQogICAgICRzZWxm
LT5hc3NlcnRVbmV4cGVjdGVkVG9rZW4oJG5leHQtPnZhbHVlKCksIF9fTElORV9fKTsKQEAgLTE2
MDYsNyArMTU5Myw3IEBAIHN1YiBwYXJzZU9wdGlvbmFsT3JSZXF1aXJlZEFyZ3VtZW50CiAgICAg
bXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0ID0gc2hpZnQ7
CiAKLSAgICBteSAkcGFyYW1EYXRhTm9kZSA9IGRvbVNpZ25hdHVyZS0+bmV3KCk7CisgICAgbXkg
JHBhcmFtRGF0YU5vZGUgPSBJRExBcmd1bWVudC0+bmV3KCk7CiAgICAgJHBhcmFtRGF0YU5vZGUt
PmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKIAogICAgIG15ICRu
ZXh0ID0gJHNlbGYtPm5leHRUb2tlbigpOwpAQCAtMTY3NywxOSArMTY2NCwxNyBAQCBzdWIgcGFy
c2VFeGNlcHRpb25GaWVsZAogCiAgICAgbXkgJG5leHQgPSAkc2VsZi0+bmV4dFRva2VuKCk7CiAg
ICAgaWYgKCRuZXh0LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgp
ID1+IC8kbmV4dEV4Y2VwdGlvbkZpZWxkXzEvKSB7Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9
IGRvbUF0dHJpYnV0ZS0+bmV3KCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+dHlwZSgiYXR0cmli
dXRlIik7CisgICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IElETEF0dHJpYnV0ZS0+bmV3KCk7CiAg
ICAgICAgICRuZXdEYXRhTm9kZS0+aXNSZWFkT25seSgxKTsKLSAgICAgICAgJG5ld0RhdGFOb2Rl
LT5zaWduYXR1cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7CiAKICAgICAgICAgbXkgJHR5cGUgPSAk
c2VsZi0+cGFyc2VUeXBlKCk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT50eXBl
KCR0eXBlKTsKKyAgICAgICAgJG5ld0RhdGFOb2RlLT50eXBlKCR0eXBlKTsKICAgICAgICAgCiAg
ICAgICAgIG15ICR0b2tlbiA9ICRzZWxmLT5nZXRUb2tlbigpOwogICAgICAgICAkc2VsZi0+YXNz
ZXJ0VG9rZW5UeXBlKCR0b2tlbiwgSWRlbnRpZmllclRva2VuKTsKLSAgICAgICAgJG5ld0RhdGFO
b2RlLT5zaWduYXR1cmUtPm5hbWUoaWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCR0b2tl
bi0+dmFsdWUoKSkpOworICAgICAgICAkbmV3RGF0YU5vZGUtPm5hbWUoaWRlbnRpZmllclJlbW92
ZU51bGxhYmxlUHJlZml4KCR0b2tlbi0+dmFsdWUoKSkpOwogICAgICAgICAkc2VsZi0+YXNzZXJ0
VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIjsiLCBfX0xJTkVfXyk7Ci0gICAgICAgICRu
ZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmli
dXRlTGlzdCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOwogICAgICAgICByZXR1cm4gJG5ld0RhdGFOb2RlOwogICAgIH0K
ICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgpLCBfX0xJTkVf
Xyk7CkBAIC0xOTU5LDcgKzE5NDQsNyBAQCBzdWIgcGFyc2VTaW5nbGVUeXBlCiAgICAgaWYgKCRu
ZXh0LT52YWx1ZSgpIGVxICJhbnkiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVl
KCRzZWxmLT5nZXRUb2tlbigpLCAiYW55IiwgX19MSU5FX18pOwogICAgICAgICAKLSAgICAgICAg
bXkgJGFueVR5cGUgPSBkb21UeXBlLT5uZXcoKTsKKyAgICAgICAgbXkgJGFueVR5cGUgPSBJRExU
eXBlLT5uZXcoKTsKICAgICAgICAgJGFueVR5cGUtPm5hbWUoImFueSIpOwogICAgICAgICByZXR1
cm4gJGFueVR5cGU7CiAgICAgfQpAQCAtMTk3Niw3ICsxOTYxLDcgQEAgc3ViIHBhcnNlVW5pb25U
eXBlCiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9r
ZW4oKTsKIAotICAgIG15ICR1bmlvblR5cGUgPSBkb21UeXBlLT5uZXcoKTsKKyAgICBteSAkdW5p
b25UeXBlID0gSURMVHlwZS0+bmV3KCk7CiAgICAgJHVuaW9uVHlwZS0+bmFtZSgiVU5JT04iKTsK
ICAgICAkdW5pb25UeXBlLT5pc1VuaW9uKDEpOwogCkBAIC0yMDM1LDcgKzIwMjAsNyBAQCBzdWIg
cGFyc2VOb25BbnlUeXBlCiAgICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgICBteSAkbmV4dCA9ICRz
ZWxmLT5uZXh0VG9rZW4oKTsKIAotICAgIG15ICR0eXBlID0gZG9tVHlwZS0+bmV3KCk7CisgICAg
bXkgJHR5cGUgPSBJRExUeXBlLT5uZXcoKTsKIAogICAgIGlmICgkbmV4dC0+dmFsdWUoKSA9fiAv
JG5leHROb25BbnlUeXBlXzEvKSB7CiAgICAgICAgICR0eXBlLT5uYW1lKCRzZWxmLT5wYXJzZVBy
aW1pdGl2ZVR5cGUoKSk7CkBAIC0yMTMxLDcgKzIxMTYsNyBAQCBzdWIgcGFyc2VDb25zdFR5cGUK
ICAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgIG15ICRuZXh0ID0gJHNlbGYtPm5leHRUb2tlbigp
OwogCi0gICAgbXkgJHR5cGUgPSBkb21UeXBlLT5uZXcoKTsKKyAgICBteSAkdHlwZSA9IElETFR5
cGUtPm5ldygpOwogCiAgICAgaWYgKCRuZXh0LT52YWx1ZSgpID1+IC8kbmV4dE5vbkFueVR5cGVf
MS8pIHsKICAgICAgICAgJHR5cGUtPm5hbWUoJHNlbGYtPnBhcnNlUHJpbWl0aXZlVHlwZSgpKTsK
QEAgLTIyNjgsNyArMjI1Myw3IEBAIHN1YiBwYXJzZVJldHVyblR5cGUKICAgICBpZiAoJG5leHQt
PnZhbHVlKCkgZXEgInZvaWQiKSB7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAidm9pZCIsIF9fTElORV9fKTsKICAgICAgICAgCi0gICAgICAgIG15
ICR2b2lkVHlwZSA9IGRvbVR5cGUtPm5ldygpOworICAgICAgICBteSAkdm9pZFR5cGUgPSBJRExU
eXBlLT5uZXcoKTsKICAgICAgICAgJHZvaWRUeXBlLT5uYW1lKCJ2b2lkIik7CiAgICAgICAgIHJl
dHVybiAkdm9pZFR5cGU7CiAgICAgfQpAQCAtMjI3OCwxNyArMjI2Myw2IEBAIHN1YiBwYXJzZVJl
dHVyblR5cGUKICAgICAkc2VsZi0+YXNzZXJ0VW5leHBlY3RlZFRva2VuKCRuZXh0LT52YWx1ZSgp
LCBfX0xJTkVfXyk7CiB9CiAKLXN1YiBwYXJzZUluCi17Ci0gICAgbXkgJHNlbGYgPSBzaGlmdDsK
LSAgICBteSAkbmV4dCA9ICRzZWxmLT5uZXh0VG9rZW4oKTsKLSAgICBpZiAoJG5leHQtPnZhbHVl
KCkgZXEgImluIikgewotICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0
VG9rZW4oKSwgImluIiwgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gImluIjsKLSAgICB9Ci0g
ICAgcmV0dXJuICIiOwotfQotCiBzdWIgcGFyc2VPcHRpb25hbFNlbWljb2xvbgogewogICAgIG15
ICRzZWxmID0gc2hpZnQ7CkBAIC0yMzI5LDcgKzIzMDMsNyBAQCBzdWIgaXNTZXJpYWxpemFibGVB
dHRyaWJ1dGUKICAgICAjIFRoaXMgY2hlY2sgbWF5IGhhdmUgdG8gbW92ZSB0byB0aGUgY29kZSBn
ZW5lcmF0b3IsIGlmIHdlIGRvbid0IGhhdmUgZW5vdWdoIGluZm9ybWF0aW9uCiAgICAgIyBoZXJl
IHRvIGRldGVybWluZSBzZXJpYWxpemFiaWxpdHk6IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93
ZWJpZGwvI2lkbC1zZXJpYWxpemVycwogICAgIG15ICRzZXJpYWxpemFibGVfdHlwZXMgPSAnXihc
KGJ5dGV8b2N0ZXR8c2hvcnR8dW5zaWduZWQgc2hvcnR8bG9uZ3x1bnNpZ25lZCBsb25nfGxvbmcg
bG9uZ3x1bnNpZ25lZCBsb25nIGxvbmd8ZmxvYXR8dW5yZXN0cmljdGVkIGZsb2F0fGRvdWJsZXx1
bnJlc3RyaWN0ZWQgZG91YmxlfGJvb2xlYW58RE9NU3RyaW5nfEJ5dGVTdHJpbmd8VVNWU3RyaW5n
KSQnOwotICAgIHJldHVybiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUtPm5hbWUgPX4gLyRz
ZXJpYWxpemFibGVfdHlwZXMvOworICAgIHJldHVybiAkYXR0cmlidXRlLT50eXBlLT5uYW1lID1+
IC8kc2VyaWFsaXphYmxlX3R5cGVzLzsKIH0KIAogc3ViIGFwcGx5TWVtYmVyTGlzdApAQCAtMjMz
OCwyNyArMjMxMiwyNyBAQCBzdWIgYXBwbHlNZW1iZXJMaXN0CiAgICAgbXkgJG1lbWJlcnMgPSBz
aGlmdDsKIAogICAgIGZvciBteSAkaXRlbSAoQHskbWVtYmVyc30pIHsKLSAgICAgICAgaWYgKHJl
ZigkaXRlbSkgZXEgImRvbUF0dHJpYnV0ZSIpIHsKKyAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEg
IklETEF0dHJpYnV0ZSIpIHsKICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfSwgJGl0ZW0pOwogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQotICAgICAgICBpZiAo
cmVmKCRpdGVtKSBlcSAiZG9tQ29uc3RhbnQiKSB7CisgICAgICAgIGlmIChyZWYoJGl0ZW0pIGVx
ICJJRExDb25zdGFudCIpIHsKICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5jb25zdGFu
dHN9LCAkaXRlbSk7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9Ci0gICAgICAgIGlmIChy
ZWYoJGl0ZW0pIGVxICJkb21JdGVyYWJsZSIpIHsKKyAgICAgICAgaWYgKHJlZigkaXRlbSkgZXEg
IklETEl0ZXJhYmxlIikgewogICAgICAgICAgICAgJGludGVyZmFjZS0+aXRlcmFibGUoJGl0ZW0p
OwogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQotICAgICAgICBpZiAocmVmKCRpdGVtKSBl
cSAiZG9tRnVuY3Rpb24iKSB7Ci0gICAgICAgICAgICBpZiAoJGl0ZW0tPnNpZ25hdHVyZS0+bmFt
ZSBlcSAiIikgeworICAgICAgICBpZiAocmVmKCRpdGVtKSBlcSAiSURMT3BlcmF0aW9uIikgewor
ICAgICAgICAgICAgaWYgKCRpdGVtLT5uYW1lIGVxICIiKSB7CiAgICAgICAgICAgICAgICAgcHVz
aChAeyRpbnRlcmZhY2UtPmFub255bW91c0Z1bmN0aW9uc30sICRpdGVtKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30s
ICRpdGVtKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5leHQ7CiAgICAgICAgIH0KLSAg
ICAgICAgaWYgKHJlZigkaXRlbSkgZXEgImRvbVNlcmlhbGl6YWJsZSIpIHsKKyAgICAgICAgaWYg
KHJlZigkaXRlbSkgZXEgIklETFNlcmlhbGl6YWJsZSIpIHsKICAgICAgICAgICAgICRpbnRlcmZh
Y2UtPnNlcmlhbGl6YWJsZSgkaXRlbSk7CiAgICAgICAgICAgICBuZXh0OwogICAgICAgICB9CkBA
IC0yMzY5LDEyICsyMzQzLDEyIEBAIHN1YiBhcHBseU1lbWJlckxpc3QKICAgICAgICAgaWYgKCRp
bnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+aGFzQXR0cmlidXRlKSB7CiAgICAgICAgICAgICBmb3Jl
YWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAg
ICAgICAgICBpZiAoaXNTZXJpYWxpemFibGVBdHRyaWJ1dGUoJGF0dHJpYnV0ZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+YXR0cmlidXRl
c30sICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHB1
c2goQHskaW50ZXJmYWNlLT5zZXJpYWxpemFibGUtPmF0dHJpYnV0ZXN9LCAkYXR0cmlidXRlLT5u
YW1lKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYg
KCRudW1TZXJpYWxpemVyQXR0cmlidXRlcyA9PSAwKSB7CiAgICAgICAgICAgICBmb3JlYWNoIG15
ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKLSAgICAgICAgICAgICAg
ICBwdXNoKEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5uYW1lKTsKKyAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+
c2VyaWFsaXphYmxlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZS0+bmFtZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yMzg5LDI0ICsyMzYzLDIyIEBAIHN1YiBhcHBseUV4
dGVuZGVkQXR0cmlidXRlTGlzdAogICAgICAgICBteSBAY29uc3RydWN0b3JQYXJhbXMgPSBAeyRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn19OwogICAgICAgICBteSAkaW5k
ZXggPSAoQGNvbnN0cnVjdG9yUGFyYW1zID09IDEpID8gMCA6IDE7CiAgICAgICAgIGZvcmVhY2gg
bXkgJHBhcmFtIChAY29uc3RydWN0b3JQYXJhbXMpIHsKLSAgICAgICAgICAgIG15ICRjb25zdHJ1
Y3RvciA9IGRvbUZ1bmN0aW9uLT5uZXcoKTsKLSAgICAgICAgICAgICRjb25zdHJ1Y3Rvci0+c2ln
bmF0dXJlKGRvbVNpZ25hdHVyZS0+bmV3KCkpOwotICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5z
aWduYXR1cmUtPm5hbWUoIkNvbnN0cnVjdG9yIik7Ci0gICAgICAgICAgICAkY29uc3RydWN0b3It
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwot
ICAgICAgICAgICAgJGNvbnN0cnVjdG9yLT5wYXJhbWV0ZXJzKCRwYXJhbSk7CisgICAgICAgICAg
ICBteSAkY29uc3RydWN0b3IgPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICAgICAgICAgJGNv
bnN0cnVjdG9yLT5uYW1lKCJDb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJGNvbnN0cnVjdG9y
LT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgICAg
ICAkY29uc3RydWN0b3ItPmFyZ3VtZW50cygkcGFyYW0pOwogICAgICAgICAgICAgcHVzaChAeyRp
bnRlcmZhY2UtPmNvbnN0cnVjdG9yc30sICRjb25zdHJ1Y3Rvcik7CiAgICAgICAgIH0KICAgICAg
ICAgZGVsZXRlICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3JzIn07CiAgICAg
ICAgICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ29uc3RydWN0b3IifSA9ICJWQUxVRV9JU19N
SVNTSU5HIjsKICAgICB9IGVsc2lmIChkZWZpbmVkICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsi
TmFtZWRDb25zdHJ1Y3RvciJ9KSB7Ci0gICAgICAgIG15ICRuZXdEYXRhTm9kZSA9IGRvbUZ1bmN0
aW9uLT5uZXcoKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUoZG9tU2lnbmF0dXJl
LT5uZXcoKSk7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5uYW1lKCJOYW1lZENv
bnN0cnVjdG9yIik7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgICAgIG15ICRuZXdEYXRhTm9k
ZSA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgiTmFt
ZWRDb25zdHJ1Y3RvciIpOworICAgICAgICAkbmV3RGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICAgICAgbXkgJWF0dHJpYnV0ZXMgPSAleyRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiTmFtZWRDb25zdHJ1Y3RvciJ9fTsKICAgICAgICAgbXkg
QGF0dHJpYnV0ZUtleXMgPSBrZXlzICglYXR0cmlidXRlcyk7CiAgICAgICAgIG15ICRjb25zdHJ1
Y3Rvck5hbWUgPSAkYXR0cmlidXRlS2V5c1swXTsKLSAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9k
ZS0+cGFyYW1ldGVyc30sIEB7JGF0dHJpYnV0ZXN7JGNvbnN0cnVjdG9yTmFtZX19KTsKKyAgICAg
ICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+YXJndW1lbnRzfSwgQHskYXR0cmlidXRlc3skY29uc3Ry
dWN0b3JOYW1lfX0pOwogICAgICAgICAkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LT57Ik5hbWVkQ29u
c3RydWN0b3IifSA9ICRjb25zdHJ1Y3Rvck5hbWU7CiAgICAgICAgIHB1c2goQHskaW50ZXJmYWNl
LT5jb25zdHJ1Y3RvcnN9LCAkbmV3RGF0YU5vZGUpOwogICAgIH0KQEAgLTI0MTQsMTEgKzIzODYs
MTAgQEAgc3ViIGFwcGx5RXh0ZW5kZWRBdHRyaWJ1dGVMaXN0CiAgICAgICAgIG15IEBjdXN0b21D
b25zdHJ1Y3RvclBhcmFtcyA9IEB7JGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDdXN0b21Db25z
dHJ1Y3RvcnMifX07CiAgICAgICAgIG15ICRpbmRleCA9IChAY3VzdG9tQ29uc3RydWN0b3JQYXJh
bXMgPT0gMSkgPyAwIDogMTsKICAgICAgICAgZm9yZWFjaCBteSAkcGFyYW0gKEBjdXN0b21Db25z
dHJ1Y3RvclBhcmFtcykgewotICAgICAgICAgICAgbXkgJGN1c3RvbUNvbnN0cnVjdG9yID0gZG9t
RnVuY3Rpb24tPm5ldygpOwotICAgICAgICAgICAgJGN1c3RvbUNvbnN0cnVjdG9yLT5zaWduYXR1
cmUoZG9tU2lnbmF0dXJlLT5uZXcoKSk7Ci0gICAgICAgICAgICAkY3VzdG9tQ29uc3RydWN0b3It
PnNpZ25hdHVyZS0+bmFtZSgiQ3VzdG9tQ29uc3RydWN0b3IiKTsKLSAgICAgICAgICAgICRjdXN0
b21Db25zdHJ1Y3Rvci0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCk7Ci0gICAgICAgICAgICAkY3VzdG9tQ29uc3RydWN0b3ItPnBhcmFtZXRlcnMo
JHBhcmFtKTsKKyAgICAgICAgICAgIG15ICRjdXN0b21Db25zdHJ1Y3RvciA9IElETE9wZXJhdGlv
bi0+bmV3KCk7CisgICAgICAgICAgICAkY3VzdG9tQ29uc3RydWN0b3ItPm5hbWUoIkN1c3RvbUNv
bnN0cnVjdG9yIik7CisgICAgICAgICAgICAkY3VzdG9tQ29uc3RydWN0b3ItPmV4dGVuZGVkQXR0
cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAgICAgICAgICRjdXN0b21Db25z
dHJ1Y3Rvci0+YXJndW1lbnRzKCRwYXJhbSk7CiAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFj
ZS0+Y3VzdG9tQ29uc3RydWN0b3JzfSwgJGN1c3RvbUNvbnN0cnVjdG9yKTsKICAgICAgICAgfQog
ICAgICAgICBkZWxldGUgJGV4dGVuZGVkQXR0cmlidXRlTGlzdC0+eyJDdXN0b21Db25zdHJ1Y3Rv
cnMifTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmlu
ZGluZ3MucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy5wbAkocmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAkod29ya2luZyBjb3B5KQpAQCAt
MTU3LDI4ICsxNTcsMjggQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoQHN1cHBsZW1lbnRlZElkbEZp
bAogCiAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGF0dHJpYnV0ZXMgb2YgcGFydGlhbCBpbnRl
cmZhY2VzLgogICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2Ut
PmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVy
dHlCZUV4cG9zZWQoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCBcQHRhcmdldEdsb2JhbENvbnRleHRz
KTsKKyAgICAgICAgICAgICAgICBuZXh0IHVubGVzcyBzaG91bGRQcm9wZXJ0eUJlRXhwb3NlZCgk
YXR0cmlidXRlLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKIAogICAgICAgICAgICAgICAgICMg
UmVjb3JkIHRoYXQgdGhpcyBhdHRyaWJ1dGUgaXMgaW1wbGVtZW50ZWQgYnkgJGludGVyZmFjZU5h
bWUuCi0gICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9ID0gJGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFjZS0+
aXNQYXJ0aWFsOworICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1Bh
cnRpYWw7CiAKICAgICAgICAgICAgICAgICAjIEFkZCBpbnRlcmZhY2Utd2lkZSBleHRlbmRlZCBh
dHRyaWJ1dGVzIHRvIGVhY2ggYXR0cmlidXRlLgogICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkg
JGV4dGVuZGVkQXR0cmlidXRlTmFtZSAoa2V5cyAleyRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlc30pIHsKLSAgICAgICAgICAgICAgICAgICAgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OworICAgICAgICAgICAg
ICAgICAgICAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1
dGVOYW1lfSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJp
YnV0ZU5hbWV9OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEB7JHRh
cmdldERhdGFOb2RlLT5hdHRyaWJ1dGVzfSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICMgU3VwcG9ydCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMu
CiAgICAgICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlv
bnN9KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9z
ZWQoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOworICAgICAg
ICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRmdW5jdGlvbiwg
XEB0YXJnZXRHbG9iYWxDb250ZXh0cyk7CiAKICAgICAgICAgICAgICAgICAjIFJlY29yZCB0aGF0
IHRoaXMgbWV0aG9kIGlzIGltcGxlbWVudGVkIGJ5ICRpbnRlcmZhY2VOYW1lLgotICAgICAgICAg
ICAgICAgICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVt
ZW50ZWRCeSJ9ID0gJGludGVyZmFjZU5hbWUgaWYgJGludGVyZmFjZS0+aXNQYXJ0aWFsOworICAg
ICAgICAgICAgICAgICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVk
QnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKIAogICAgICAg
ICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFj
aCBtZXRob2QuCiAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVO
YW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAgICAg
ICAgICAgICAgICAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4
dGVuZGVkQXR0cmlidXRlTmFtZX0gPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsk
ZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfTsKKyAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnskZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSA9ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9OwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBwdXNoKEB7JHRhcmdldERhdGFOb2RlLT5mdW5jdGlv
bnN9LCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgfQpAQCAtMjEwLDkgKzIxMCw5IEBAICRjb2Rl
R2VuLT5Qcm9jZXNzRG9jdW1lbnQoJHRhcmdldERvY3VtZW4KICMgb24gd2hpY2ggZ2xvYmFsIGNv
bnRleHRzIHRoZXkgc2hvdWxkIGJlIGV4cG9zZWQuCiBzdWIgc2hvdWxkUHJvcGVydHlCZUV4cG9z
ZWQKIHsKLSAgICBteSAoJHNpZ25hdHVyZSwgJHRhcmdldEdsb2JhbENvbnRleHRzKSA9IEBfOwor
ICAgIG15ICgkY29udGV4dCwgJHRhcmdldEdsb2JhbENvbnRleHRzKSA9IEBfOwogCi0gICAgbXkg
JGV4cG9zZWQgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsKKyAg
ICBteSAkZXhwb3NlZCA9ICRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfTsK
IAogICAgIHJldHVybiAxIHVubGVzcyAkZXhwb3NlZDsKIApAQCAtMjg5LDEzICsyODksMTMgQEAg
c3ViIGNoZWNrSURMQXR0cmlidXRlcwogICAgICAgICBjaGVja0lmSURMQXR0cmlidXRlc0V4aXN0
cygkaWRsQXR0cmlidXRlcywgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaWRsRmls
ZSk7CiAKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJp
YnV0ZXN9KSB7Ci0gICAgICAgICAgICBjaGVja0lmSURMQXR0cmlidXRlc0V4aXN0cygkaWRsQXR0
cmlidXRlcywgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpZGxG
aWxlKTsKKyAgICAgICAgICAgIGNoZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1
dGVzLCAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpZGxGaWxlKTsKICAgICAgICAg
fQogCiAgICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9u
c30pIHsKLSAgICAgICAgICAgIGNoZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1
dGVzLCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaWRsRmlsZSk7
Ci0gICAgICAgICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJhbWV0
ZXJzfSkgewotICAgICAgICAgICAgICAgIGNoZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxB
dHRyaWJ1dGVzLCAkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMsICRpZGxGaWxlKTsKKyAg
ICAgICAgICAgIGNoZWNrSWZJRExBdHRyaWJ1dGVzRXhpc3RzKCRpZGxBdHRyaWJ1dGVzLCAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcywgJGlkbEZpbGUpOworICAgICAgICAgICAgZm9yZWFj
aCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAg
ICAgY2hlY2tJZklETEF0dHJpYnV0ZXNFeGlzdHMoJGlkbEF0dHJpYnV0ZXMsICRhcmd1bWVudC0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLCAkaWRsRmlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdFR5
cGVkZWZzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdFR5cGVkZWZzLmlkbAkocmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RUeXBlZGVmcy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDEwICs0OSwxMSBAQAogICAgIHZvaWQgbnVsbGFibGVTZXF1ZW5jZUFyZyhTRVFVRU5D
RV9PRl9TVFJJTkdTPyBzZXF1ZW5jZUFyZyk7CiAgICAgdm9pZCBzZXF1ZW5jZU9mTnVsbGFibGVz
QXJnKHNlcXVlbmNlPFNUUklORz8+IHNlcXVlbmNlQXJnKTsKICAgICB2b2lkIG51bGxhYmxlU2Vx
dWVuY2VPZk51bGxhYmxlc0FyZyhTRVFVRU5DRV9PRl9OVUxMQUJMRV9TVFJJTkdTPyBzZXF1ZW5j
ZUFyZyk7CisgICAgdm9pZCBudWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoc2VxdWVuY2U8KFNU
UklORyBvciBTRVFVRU5DRV9PRl9TVFJJTkdTKT4/IHNlcXVlbmNlQXJnKTsKIAogICAgIHZvaWQg
dW5pb25BcmcoVU5JT05fU1RSSU5HX0xPTkcgdW5pb25BcmcpOwogCi0gICAgdm9pZCBmdW5jV2l0
aENsYW1wKFVMT05HTE9OR19DTEFNUCBhcmcxLCBvcHRpb25hbCBVTE9OR0xPTkdfQ0xBTVAgYXJn
Mik7CisgICAgdm9pZCBmdW5jV2l0aENsYW1wKFtDbGFtcF0gVUxPTkdMT05HIGFyZzEsIFtDbGFt
cF0gb3B0aW9uYWwgVUxPTkdMT05HIGFyZzIpOwogCiAgICAgW0ltbXV0YWJsZV0gU1ZHUE9JTlQg
aW1tdXRhYmxlUG9pbnRGdW5jdGlvbigpOwogCkBAIC03MSw3ICs3Miw2IEBACiAKIHR5cGVkZWYg
dW5yZXN0cmljdGVkIGZsb2F0ICAgICAgICAgRE9VQkxFOwogdHlwZWRlZiB1bnNpZ25lZCBsb25n
IGxvbmcgICAgICAgICBVTE9OR0xPTkc7Ci10eXBlZGVmIFtDbGFtcF0gdW5zaWduZWQgbG9uZyBs
b25nIFVMT05HTE9OR19DTEFNUDsKIHR5cGVkZWYgU2VyaWFsaXplZFNjcmlwdFZhbHVlICAgICAg
U0NSSVBUX1ZBTFVFOwogdHlwZWRlZiBzZXF1ZW5jZTxsb25nPiAgICAgICAgICAgICBTRVFVRU5D
RV9PRl9MT05HUzsKIHR5cGVkZWYgbG9uZz8gICAgICAgICAgICAgICAgICAgICAgTlVMTEFCTEVf
TE9ORzsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkocmV2aXNpb24gMjA4MTI5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmcoSlNDOjpFeGVjU3Rh
dGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyhKU0M6OkV4ZWNTdGF0ZSopOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoSlNDOjpFeGVjU3RhdGUqKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVG
dW5jdGlvblVuaW9uQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXAo
SlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uSW1tdXRhYmxlUG9pbnRGdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOwpAQCAtMTczLDYgKzE3NCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RUeXBlZGUKICAgICB7ICJudWxsYWJsZVNlcXVlbmNlQXJnIiwgSlNDOjpGdW5jdGlv
biwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyksIChpbnRw
dHJfdCkgKDEpIH0gfSwKICAgICB7ICJzZXF1ZW5jZU9mTnVsbGFibGVzQXJnIiwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZyks
IChpbnRwdHJfdCkgKDEpIH0gfSwKICAgICB7ICJudWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNB
cmciLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
TmF0aXZlRnVuY3Rpb24+KGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNl
cXVlbmNlT2ZOdWxsYWJsZXNBcmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCisgICAgeyAibnVsbGFi
bGVTZXF1ZW5jZU9mVW5pb25zQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnKSwgKGludHB0cl90KSAoMSkgfSB9
LAogICAgIHsgInVuaW9uQXJnIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uVW5pb25BcmcpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiZnVuY1dpdGhDbGFt
cCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxO
YXRpdmVGdW5jdGlvbj4oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xh
bXApLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIs
IEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkltbXV0YWJsZVBvaW50
RnVuY3Rpb24pLCAoaW50cHRyX3QpICgwKSB9IH0sCkBAIC02MTAsNiArNjEyLDI2IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVu
aW9uc0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdFR5cGVkZWZzKiwgSlNDOjpUaHJv
d1Njb3BlJik7CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhFeGVjU3RhdGUqIHN0
YXRlKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9w
ZXJhdGlvbjxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9m
VW5pb25zQXJnQ2FsbGVyPihzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyIpOwor
fQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZ0NhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsK
KyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gc2VxdWVuY2VBcmcgPSBjb252ZXJ0PElETE51
bGxhYmxlPElETFNlcXVlbmNlPElETFVuaW9uPElETERPTVN0cmluZywgSURMU2VxdWVuY2U8SURM
RE9NU3RyaW5nPj4+Pj4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
aW1wbC5udWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmcoV1RGTW92ZShzZXF1ZW5jZUFyZykpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
VW5pb25BcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RUeXBlZGVmcyosIEpTQzo6VGhy
b3dTY29wZSYpOwogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9tYWtlX3NldHRpbmdzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvbWFrZV9zZXR0aW5ncy5wbAkocmV2aXNpb24gMjA4MTI5KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9tYWtlX3NldHRpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAsNyArMzcw
LDcgQEAgc3ViIGdlbmVyYXRlSW50ZXJuYWxTZXR0aW5nc0lkbEZpbGUoJCkKICAgICAgICAgbXkg
JHR5cGUgPSAkcGFyc2VkSXRlbXN7JHNldHRpbmdOYW1lfXsidHlwZSJ9OwogICAgICAgICBteSAk
aWRsVHlwZSA9ICR3ZWJjb3JlVHlwZVRvSWRsVHlwZXskdHlwZX07CiAgICAgICAgIG15ICRzZXR0
ZXJGdW5jdGlvbk5hbWUgPSBzZXR0ZXJGdW5jdGlvbk5hbWUoJHNldHRpbmdOYW1lKTsKLSAgICAg
ICAgcHJpbnQgJGZpbGUgIiAgICB2b2lkICRzZXR0ZXJGdW5jdGlvbk5hbWUoaW4gJGlkbFR5cGUg
JHNldHRpbmdOYW1lKTtcbiI7CisgICAgICAgIHByaW50ICRmaWxlICIgICAgdm9pZCAkc2V0dGVy
RnVuY3Rpb25OYW1lKCRpZGxUeXBlICRzZXR0aW5nTmFtZSk7XG4iOwogICAgIH07CiAKICAgICBl
bnVtZXJhdGVQYXJzZWRJdGVtcygkZmlsZSwgJHBhcnNlZEl0ZW1zUmVmLCBcJndyaXRlSWRsU2V0
dGVyKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwODEyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDE2LTEwLTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgW1dlYklETF0gUmVzdHJ1Y3R1cmUgSURMUGFyc2VyIHN0cnVjdHMgdG8gYmV0
dGVyIG1hdGNoIG1vZGVybiBXZWJJTEQgY29uY2VwdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdl
bmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQmluZGluZ3MvQ29kZUdlbmVyYXRvclRlc3RSdW5uZXIucG06CisgICAgICAg
IFVwZGF0ZSBmb3IgbmV3IHN0cnVjdCB0eXBlcy4KKwogMjAxNi0xMC0yOSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZhaWxpbmcgRXh0ZW5kZWRDb2xvciB0
ZXN0cy4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JE
dW1wUmVuZGVyVHJlZS5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9CaW5k
aW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG0JKHJldmlzaW9uIDIwODEyOSkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJl
ZS5wbQkod29ya2luZyBjb3B5KQpAQCAtMTc2LDcgKzE3Niw3IEBAIEVPRgogICAgIGlmIChteSBA
ZnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CiAgICAgICAgIHB1c2goQGNv
bnRlbnRzLCAiXG4gICAgLy8gRnVuY3Rpb25zXG5cbiIpOwogICAgICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAg
c3RhdGljIEpTVmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWVdfShKU0NvbnRl
eHRSZWYsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiwgc2l6ZV90LCBjb25zdCBKU1ZhbHVlUmVm
W10sIEpTVmFsdWVSZWYqKTtcbiIpOworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAg
c3RhdGljIEpTVmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmLCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVl
UmVmKik7XG4iKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjcwLDcgKzI3MCw3IEBAIEVPRgog
ICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewogICAgICAgICAgICAg
cHVzaChAY29udGVudHMsIDw8RU9GKTsKIAotSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRm
dW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lXX0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorSlNWYWx1ZVJl
ZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291
bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikK
IHsKICAgICAke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfSogaW1wbCA9IHRvJHtpbXBsZW1lbnRh
dGlvbkNsYXNzTmFtZX0oY29udGV4dCwgdGhpc09iamVjdCk7CiAgICAgaWYgKCFpbXBsKQpAQCAt
Mjc4LDQwICsyNzgsNDAgQEAgSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+
cwogCiBFT0YKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkNhbGw7Ci0gICAgICAgICAgICBpZiAo
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVu
dEhhbmRsaW5nIn0pIHsKLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIg
LiAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZSAuICIoY29udGV4dCwgYXJndW1lbnRDb3VudCwg
YXJndW1lbnRzLCBleGNlcHRpb24pIjsKKyAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKKyAgICAgICAgICAg
ICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiKGNvbnRl
eHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIG15IEBwYXJhbWV0ZXJzID0gKCk7Ci0gICAgICAgICAg
ICAgICAgbXkgQHNwZWNpZmllZFBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307
CisgICAgICAgICAgICAgICAgbXkgQGFyZ3VtZW50cyA9ICgpOworICAgICAgICAgICAgICAgIG15
IEBzcGVjaWZpZWRBcmd1bWVudHMgPSBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfTsKIAotICAgICAg
ICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVu
Y3Rpb24tPnNpZ25hdHVyZS0+dHlwZSwgJGZ1bmN0aW9uLT5zaWduYXR1cmUpOworICAgICAgICAg
ICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVuY3Rp
b24tPnR5cGUpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiUGFzc0NvbnRleHQifSkgewotICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBwYXJhbWV0ZXJzLCAiY29udGV4dCIpOworICAgICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29udGV4dCJ9KSB7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImNvbnRleHQiKTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRpICgwLi4kI3NwZWNpZmllZFBhcmFtZXRl
cnMpIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJHBhcmFtZXRlciA9ICRzcGVjaWZpZWRQYXJh
bWV0ZXJzWyRpXTsKKyAgICAgICAgICAgICAgICBmb3JlYWNoIG15ICRpICgwLi4kI3NwZWNpZmll
ZEFyZ3VtZW50cykgeworICAgICAgICAgICAgICAgICAgICBteSAkYXJndW1lbnQgPSAkc3BlY2lm
aWVkQXJndW1lbnRzWyRpXTsKIAotICAgICAgICAgICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVI
ZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJHR5cGUsICRwYXJhbWV0ZXIpOworICAgICAgICAg
ICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywgJHR5
cGUpOwogCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICIgLiAkc2Vs
Zi0+X3BsYXRmb3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRpb24oJHBhcmFtZXRlciwgJHBhcmFtZXRl
ci0+bmFtZSwgImFyZ3VtZW50c1skaV0iLCAiYXJndW1lbnRDb3VudCA+ICRpIikgLiAiXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgIiAuICRzZWxmLT5fcGxh
dGZvcm1UeXBlVmFyaWFibGVEZWNsYXJhdGlvbigkYXJndW1lbnQtPnR5cGUsICRhcmd1bWVudC0+
bmFtZSwgImFyZ3VtZW50c1skaV0iLCAiYXJndW1lbnRDb3VudCA+ICRpIikgLiAiXG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQHBhcmFtZXRlcnMs
ICRzZWxmLT5fcGFyYW1ldGVyRXhwcmVzc2lvbigkcGFyYW1ldGVyKSk7CisgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGFyZ3VtZW50cywgJHNlbGYtPl9hcmd1bWVudEV4cHJlc3Npb24oJGFyZ3Vt
ZW50KSk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2Fs
bCA9ICJpbXBsLT4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKCIgLiBqb2luKCIs
ICIsIEBwYXJhbWV0ZXJzKSAuICIpIjsKKyAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0g
ImltcGwtPiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMp
IC4gIikiOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBwdXNoKEBj
b250ZW50cywgIiAgICAke2Z1bmN0aW9uQ2FsbH07XG5cbiIpIGlmICRmdW5jdGlvbi0+c2lnbmF0
dXJlLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAi
ICAgIHJldHVybiAiIC4gJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+c2lnbmF0
dXJlLCAkZnVuY3Rpb25DYWxsKSAuICI7XG59XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNvbnRl
bnRzLCAiICAgICR7ZnVuY3Rpb25DYWxsfTtcblxuIikgaWYgJGZ1bmN0aW9uLT50eXBlLT5uYW1l
IGVxICJ2b2lkIjsKKyAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVybiAiIC4g
JHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkg
LiAiO1xufVxuIik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobXkgQGF0dHJpYnV0ZXMg
PSBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAi
XG4vLyBBdHRyaWJ1dGVzXG4iKTsKICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0
cmlidXRlcykgewotICAgICAgICAgICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhcJWNvbnRlbnRz
SW5jbHVkZXMsICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZSwgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlKTsKKyAgICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1
ZGVzLCAkYXR0cmlidXRlLT50eXBlKTsKIAogICAgICAgICAgICAgbXkgJGdldHRlck5hbWUgPSAk
c2VsZi0+X2dldHRlck5hbWUoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBteSAkZ2V0dGVyRXhw
cmVzc2lvbiA9ICJpbXBsLT4ke2dldHRlck5hbWV9KCkiOwpAQCAtMzI0LDcgKzMyNCw3IEBAIEpT
VmFsdWVSZWYgJHtjbGFzc05hbWV9Ojoke2dldHRlck5hbWV9KEoKICAgICBpZiAoIWltcGwpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIAotICAgIHJldHVy
biBAe1skc2VsZi0+X3JldHVybkV4cHJlc3Npb24oJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkZ2V0
dGVyRXhwcmVzc2lvbildfTsKKyAgICByZXR1cm4gQHtbJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9u
KCRhdHRyaWJ1dGUtPnR5cGUsICRnZXR0ZXJFeHByZXNzaW9uKV19OwogfQogRU9GCiAKQEAgLTMz
OSw3ICszMzksNyBAQCBib29sICR7Y2xhc3NOYW1lfTo6QHtbJHNlbGYtPl9zZXR0ZXJOYW1lCiAK
IEVPRgogCi0gICAgICAgICAgICAgICAgbXkgJHBsYXRmb3JtVmFsdWUgPSAkc2VsZi0+X3BsYXRm
b3JtVHlwZUNvbnN0cnVjdG9yKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAg
ICAgICAgICAgICAgbXkgJHBsYXRmb3JtVmFsdWUgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0
cnVjdG9yKCRhdHRyaWJ1dGUtPnR5cGUsICJ2YWx1ZSIpOwogCiAgICAgICAgICAgICAgICAgcHVz
aChAY29udGVudHMsIDw8RU9GKTsKICAgICBpbXBsLT5Ae1skc2VsZi0+X3NldHRlck5hbWUoJGF0
dHJpYnV0ZSldfSgke3BsYXRmb3JtVmFsdWV9KTsKQEAgLTM2OCwxMiArMzY4LDEyIEBAIHN1YiBf
Z2V0dGVyTmFtZQogewogICAgIG15ICgkc2VsZiwgJGF0dHJpYnV0ZSkgPSBAXzsKIAotICAgIHJl
dHVybiAkYXR0cmlidXRlLT5zaWduYXR1cmUtPm5hbWU7CisgICAgcmV0dXJuICRhdHRyaWJ1dGUt
Pm5hbWU7CiB9CiAKIHN1YiBfaW5jbHVkZUhlYWRlcnMKIHsKLSAgICBteSAoJHNlbGYsICRoZWFk
ZXJzLCAkdHlwZSwgJHNpZ25hdHVyZSkgPSBAXzsKKyAgICBteSAoJHNlbGYsICRoZWFkZXJzLCAk
dHlwZSkgPSBAXzsKIAogICAgIHJldHVybiB1bmxlc3MgZGVmaW5lZCAkdHlwZTsKICAgICByZXR1
cm4gaWYgJHR5cGUtPm5hbWUgZXEgImJvb2xlYW4iOwpAQCAtNDE2LDcgKzQxNiw3IEBAIHN1YiBf
cGFyZW50SW50ZXJmYWNlCiAKIHN1YiBfcGxhdGZvcm1UeXBlCiB7Ci0gICAgbXkgKCRzZWxmLCAk
dHlwZSwgJHNpZ25hdHVyZSkgPSBAXzsKKyAgICBteSAoJHNlbGYsICR0eXBlKSA9IEBfOwogCiAg
ICAgcmV0dXJuIHVuZGVmIHVubGVzcyBkZWZpbmVkICR0eXBlOwogCkBAIC00MjksOSArNDI5LDcg
QEAgc3ViIF9wbGF0Zm9ybVR5cGUKIAogc3ViIF9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3Rvcgogewot
ICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwgJGFyZ3VtZW50TmFtZSkgPSBAXzsKLQotICAgIG15
ICR0eXBlID0gJHNpZ25hdHVyZS0+dHlwZTsKKyAgICBteSAoJHNlbGYsICR0eXBlLCAkYXJndW1l
bnROYW1lKSA9IEBfOwogCiAgICAgcmV0dXJuICJKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsICRh
cmd1bWVudE5hbWUpIiBpZiAkdHlwZSBlcSAiYm9vbGVhbiI7CiAgICAgcmV0dXJuICIkYXJndW1l
bnROYW1lIiBpZiAkdHlwZS0+bmFtZSBlcSAib2JqZWN0IjsKQEAgLTQ0MiwxMCArNDQwLDEwIEBA
IHN1YiBfcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IKIAogc3ViIF9wbGF0Zm9ybVR5cGVWYXJpYWJs
ZURlY2xhcmF0aW9uCiB7Ci0gICAgbXkgKCRzZWxmLCAkc2lnbmF0dXJlLCAkdmFyaWFibGVOYW1l
LCAkYXJndW1lbnROYW1lLCAkY29uZGl0aW9uKSA9IEBfOworICAgIG15ICgkc2VsZiwgJHR5cGUs
ICR2YXJpYWJsZU5hbWUsICRhcmd1bWVudE5hbWUsICRjb25kaXRpb24pID0gQF87CiAKLSAgICBt
eSAkcGxhdGZvcm1UeXBlID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGUoJHNpZ25hdHVyZS0+dHlwZSwg
JHNpZ25hdHVyZSk7Ci0gICAgbXkgJGNvbnN0cnVjdG9yID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGVD
b25zdHJ1Y3Rvcigkc2lnbmF0dXJlLCAkYXJndW1lbnROYW1lKTsKKyAgICBteSAkcGxhdGZvcm1U
eXBlID0gJHNlbGYtPl9wbGF0Zm9ybVR5cGUoJHR5cGUpOworICAgIG15ICRjb25zdHJ1Y3RvciA9
ICRzZWxmLT5fcGxhdGZvcm1UeXBlQ29uc3RydWN0b3IoJHR5cGUsICRhcmd1bWVudE5hbWUpOwog
CiAgICAgbXkgJW5vblBvaW50ZXJUeXBlcyA9ICgKICAgICAgICAgImJvb2wiID0+IDEsCkBAIC00
NzAsOSArNDY4LDcgQEAgc3ViIF9wbGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uCiAKIHN1
YiBfcmV0dXJuRXhwcmVzc2lvbgogewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwgJGV4cHJl
c3Npb24pID0gQF87Ci0KLSAgICBteSAkcmV0dXJuVHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7Cisg
ICAgbXkgKCRzZWxmLCAkcmV0dXJuVHlwZSwgJGV4cHJlc3Npb24pID0gQF87CiAKICAgICByZXR1
cm4gIkpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBl
cSAidm9pZCI7CiAgICAgcmV0dXJuICJKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgJHtleHBy
ZXNzaW9ufSkiIGlmICRyZXR1cm5UeXBlLT5uYW1lIGVxICJib29sZWFuIjsKQEAgLTQ4MiwxMiAr
NDc4LDEyIEBAIHN1YiBfcmV0dXJuRXhwcmVzc2lvbgogICAgIHJldHVybiAidG9KUyhjb250ZXh0
LCBXVEY6OmdldFB0cigke2V4cHJlc3Npb259KSkiOwogfQogCi1zdWIgX3BhcmFtZXRlckV4cHJl
c3Npb24KK3N1YiBfYXJndW1lbnRFeHByZXNzaW9uCiB7Ci0gICAgbXkgKCRzZWxmLCAkcGFyYW1l
dGVyKSA9IEBfOworICAgIG15ICgkc2VsZiwgJGFyZ3VtZW50KSA9IEBfOwogCi0gICAgbXkgJHR5
cGUgPSAkcGFyYW1ldGVyLT50eXBlOwotICAgIG15ICRuYW1lID0gJHBhcmFtZXRlci0+bmFtZTsK
KyAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKKyAgICBteSAkbmFtZSA9ICRhcmd1bWVu
dC0+bmFtZTsKIAogICAgIHJldHVybiAiJHtuYW1lfS5nZXQoKSIgaWYgJCRzZWxme2NvZGVHZW5l
cmF0b3J9LT5Jc1N0cmluZ1R5cGUoJHR5cGUpOwogICAgIHJldHVybiAkbmFtZTsKQEAgLTQ5Nyw3
ICs0OTMsNyBAQCBzdWIgX3NldHRlck5hbWUKIHsKICAgICBteSAoJHNlbGYsICRhdHRyaWJ1dGUp
ID0gQF87CiAKLSAgICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+bmFtZTsKKyAg
ICBteSAkbmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CiAKICAgICByZXR1cm4gInNldCIgLiAkJHNl
bGZ7Y29kZUdlbmVyYXRvcn0tPldLX3VjZmlyc3QoJG5hbWUpOwogfQpAQCAtNTA3LDkgKzUwMyw5
IEBAIHN1YiBfc3RhdGljRnVuY3Rpb25zR2V0dGVySW1wbGVtZW50YXRpb24KICAgICBteSAoJHNl
bGYsICRpbnRlcmZhY2UpID0gQF87CiAKICAgICBteSAkbWFwRnVuY3Rpb24gPSBzdWIgewotICAg
ICAgICBteSAkbmFtZSA9ICRfLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRuYW1lID0g
JF8tPm5hbWU7CiAgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gcXcoa0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkpOwotICAgICAgICBwdXNo
KEBhdHRyaWJ1dGVzLCAia0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb250RW51bSJ9OworICAgICAgICBwdXNoKEBh
dHRyaWJ1dGVzLCAia0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RW51bSIpIGlmICRfLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKIAogICAgICAgICByZXR1cm4gICJ7IFwiJG5hbWVc
IiwgJG5hbWUsICIgLiBqb2luKCIgfCAiLCBAYXR0cmlidXRlcykgLiAiIH0iOwogICAgIH07CkBA
IC01NDcsMTQgKzU0MywxNCBAQCBzdWIgX3N0YXRpY1ZhbHVlc0dldHRlckltcGxlbWVudGF0aW9u
CiAgICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkgJG1hcEZ1bmN0aW9u
ID0gc3ViIHsKLSAgICAgICAgcmV0dXJuIGlmICRfLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJOb0ltcGxlbWVudGF0aW9uIn07CisgICAgICAgIHJldHVybiBpZiAkXy0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik5vSW1wbGVtZW50YXRpb24ifTsKIAotICAgICAgICBteSAkYXR0cmli
dXRlTmFtZSA9ICRfLT5zaWduYXR1cmUtPm5hbWU7CisgICAgICAgIG15ICRhdHRyaWJ1dGVOYW1l
ID0gJF8tPm5hbWU7CiAgICAgICAgIG15ICRnZXR0ZXJOYW1lID0gJHNlbGYtPl9nZXR0ZXJOYW1l
KCRfKTsKICAgICAgICAgbXkgJHNldHRlck5hbWUgPSAkXy0+aXNSZWFkT25seSA/ICIwIiA6ICRz
ZWxmLT5fc2V0dGVyTmFtZSgkXyk7CiAgICAgICAgIG15IEBhdHRyaWJ1dGVzID0gcXcoa0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlKTsKICAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkiKSBpZiAkXy0+aXNSZWFkT25seTsKLSAgICAgICAg
cHVzaChAYXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKKyAgICAgICAgcHVz
aChAYXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBpZiAkXy0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07CiAKICAgICAgICAgcmV0dXJuICJ7IFwiJGF0
dHJpYnV0ZU5hbWVcIiwgJGdldHRlck5hbWUsICRzZXR0ZXJOYW1lLCAiIC4gam9pbigiIHwgIiwg
QGF0dHJpYnV0ZXMpIC4gIiB9IjsKICAgICB9OwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCShyZXZpc2lvbiAyMDgxMjkpCisrKyBUb29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0
UnVubmVyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw2IEBAIHN1YiBfY2xhc3NOYW1l
CiB7CiAgICAgbXkgKCR0eXBlKSA9IEBfOwogCi0gICAgYXNzZXJ0KCJOb3QgYSB0eXBlIikgaWYg
cmVmKCR0eXBlKSBuZSAiZG9tVHlwZSI7Ci0KICAgICByZXR1cm4gIkpTIiAuIF9pbXBsZW1lbnRh
dGlvbkNsYXNzTmFtZSgkdHlwZSk7CiB9CiAKQEAgLTE5MSw3ICsxODksNyBAQCBFT0YKICAgICBp
ZiAobXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewogICAgICAgICBw
dXNoKEBjb250ZW50cywgIlxuICAgIC8vIEZ1bmN0aW9uc1xuXG4iKTsKICAgICAgICAgZm9yZWFj
aCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgIHN0YXRpYyBKU1ZhbHVlUmVmIEB7WyRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lXX0o
SlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNW
YWx1ZVJlZltdLCBKU1ZhbHVlUmVmKik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiICAgIHN0YXRpYyBKU1ZhbHVlUmVmIEB7WyRmdW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJl
ZiwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwg
SlNWYWx1ZVJlZiopO1xuIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI4NSw3ICsyODMsNyBA
QCBFT0YKICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKICAgICAg
ICAgICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7CiAKLUpTVmFsdWVSZWYgJHtjbGFzc05hbWV9
OjpAe1skZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250ZXh0LCBK
U09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK0pT
VmFsdWVSZWYgJHtjbGFzc05hbWV9OjpAe1skZnVuY3Rpb24tPm5hbWVdfShKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCiB7CiAgICAgJHtpbXBsZW1lbnRhdGlvbkNsYXNzTmFtZX0qIGltcGwgPSB0byR7aW1w
bGVtZW50YXRpb25DbGFzc05hbWV9KGNvbnRleHQsIHRoaXNPYmplY3QpOwogICAgIGlmICghaW1w
bCkKQEAgLTI5Myw0MCArMjkxLDQwIEBAIEpTVmFsdWVSZWYgJHtjbGFzc05hbWV9OjpAe1skZnVu
Y3Rpb24tPnMKIAogRU9GCiAgICAgICAgICAgICBteSAkZnVuY3Rpb25DYWxsOwotICAgICAgICAg
ICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
QXJndW1lbnRIYW5kbGluZyJ9KSB7Ci0gICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJp
bXBsLT4iIC4gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50
Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uKSI7CisgICAgICAgICAgICBpZiAoJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tQXJndW1lbnRIYW5kbGluZyJ9KSB7CisgICAg
ICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJpbXBsLT4iIC4gJGZ1bmN0aW9uLT5uYW1lIC4g
Iihjb250ZXh0LCBhcmd1bWVudENvdW50LCBhcmd1bWVudHMsIGV4Y2VwdGlvbikiOwogICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBteSBAcGFyYW1ldGVycyA9ICgpOwotICAg
ICAgICAgICAgICAgIG15IEBzcGVjaWZpZWRQYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFt
ZXRlcnN9OworICAgICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKKyAgICAgICAgICAg
ICAgICBteSBAc3BlY2lmaWVkQXJndW1lbnRzID0gQHskZnVuY3Rpb24tPmFyZ3VtZW50c307CiAK
LSAgICAgICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRl
cywgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPnR5cGUsICRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKKyAg
ICAgICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVudHNJbmNsdWRlcywg
JGZ1bmN0aW9uLT50eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlBhc3NDb250ZXh0In0pIHsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAcGFyYW1ldGVycywgImNvbnRleHQiKTsKKyAgICAgICAgICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUGFzc0NvbnRleHQifSkgeworICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJjb250ZXh0Iik7CiAgICAgICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoMC4uJCNzcGVjaWZpZWRQ
YXJhbWV0ZXJzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRwYXJhbWV0ZXIgPSAkc3BlY2lm
aWVkUGFyYW1ldGVyc1skaV07CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkaSAoMC4uJCNz
cGVjaWZpZWRBcmd1bWVudHMpIHsKKyAgICAgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50ID0g
JHNwZWNpZmllZEFyZ3VtZW50c1skaV07CiAKLSAgICAgICAgICAgICAgICAgICAgJHNlbGYtPl9p
bmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVkZXMsICR0eXBlLCAkcGFyYW1ldGVyKTsKKyAg
ICAgICAgICAgICAgICAgICAgJHNlbGYtPl9pbmNsdWRlSGVhZGVycyhcJWNvbnRlbnRzSW5jbHVk
ZXMsICR0eXBlKTsKIAotICAgICAgICAgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAi
IC4gJHNlbGYtPl9wbGF0Zm9ybVR5cGVWYXJpYWJsZURlY2xhcmF0aW9uKCRwYXJhbWV0ZXIsICRw
YXJhbWV0ZXItPm5hbWUsICJhcmd1bWVudHNbJGldIiwgImFyZ3VtZW50Q291bnQgPiAkaSIpIC4g
IlxuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICIgLiAkc2Vs
Zi0+X3BsYXRmb3JtVHlwZVZhcmlhYmxlRGVjbGFyYXRpb24oJGFyZ3VtZW50LT50eXBlLCAkYXJn
dW1lbnQtPm5hbWUsICJhcmd1bWVudHNbJGldIiwgImFyZ3VtZW50Q291bnQgPiAkaSIpIC4gIlxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBwdXNoKEBwYXJh
bWV0ZXJzLCAkc2VsZi0+X3BhcmFtZXRlckV4cHJlc3Npb24oJHBhcmFtZXRlcikpOworICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICRzZWxmLT5fYXJndW1lbnRFeHByZXNzaW9u
KCRhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICRmdW5j
dGlvbkNhbGwgPSAiaW1wbC0+IiAuICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lIC4gIigiIC4g
am9pbigiLCAiLCBAcGFyYW1ldGVycykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
Q2FsbCA9ICJpbXBsLT4iIC4gJGZ1bmN0aW9uLT5uYW1lIC4gIigiIC4gam9pbigiLCAiLCBAYXJn
dW1lbnRzKSAuICIpIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAg
cHVzaChAY29udGVudHMsICIgICAgJHtmdW5jdGlvbkNhbGx9O1xuXG4iKSBpZiAkZnVuY3Rpb24t
PnNpZ25hdHVyZS0+dHlwZS0+bmFtZSBlcSAidm9pZCI7Ci0gICAgICAgICAgICBwdXNoKEBjb250
ZW50cywgIiAgICByZXR1cm4gIiAuICRzZWxmLT5fcmV0dXJuRXhwcmVzc2lvbigkZnVuY3Rpb24t
PnNpZ25hdHVyZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xufVxuIik7CisgICAgICAgICAgICBwdXNo
KEBjb250ZW50cywgIiAgICAke2Z1bmN0aW9uQ2FsbH07XG5cbiIpIGlmICRmdW5jdGlvbi0+dHlw
ZS0+bmFtZSBlcSAidm9pZCI7CisgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICByZXR1
cm4gIiAuICRzZWxmLT5fcmV0dXJuRXhwcmVzc2lvbigkZnVuY3Rpb24tPnR5cGUsICRmdW5jdGlv
bkNhbGwpIC4gIjtcbn1cbiIpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKG15IEBhdHRy
aWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBwdXNoKEBjb250
ZW50cywgIlxuLy8gQXR0cmlidXRlc1xuIik7CiAgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQGF0dHJpYnV0ZXMpIHsKLSAgICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVj
b250ZW50c0luY2x1ZGVzLCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUsICRhdHRyaWJ1dGUt
PnNpZ25hdHVyZSk7CisgICAgICAgICAgICAkc2VsZi0+X2luY2x1ZGVIZWFkZXJzKFwlY29udGVu
dHNJbmNsdWRlcywgJGF0dHJpYnV0ZS0+dHlwZSk7CiAKICAgICAgICAgICAgIG15ICRnZXR0ZXJO
YW1lID0gJHNlbGYtPl9nZXR0ZXJOYW1lKCRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgbXkgJGdl
dHRlckV4cHJlc3Npb24gPSAiaW1wbC0+JHtnZXR0ZXJOYW1lfSgpIjsKQEAgLTMzOSw3ICszMzcs
NyBAQCBKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6JHtnZXR0ZXJOYW1lfShKCiAgICAgaWYgKCFp
bXBsKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiAKLSAg
ICByZXR1cm4gQHtbJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRhdHRyaWJ1dGUtPnNpZ25hdHVy
ZSwgJGdldHRlckV4cHJlc3Npb24pXX07CisgICAgcmV0dXJuIEB7WyRzZWxmLT5fcmV0dXJuRXhw
cmVzc2lvbigkYXR0cmlidXRlLT50eXBlLCAkZ2V0dGVyRXhwcmVzc2lvbildfTsKIH0KIEVPRgog
CkBAIC0zNTQsNyArMzUyLDcgQEAgYm9vbCAke2NsYXNzTmFtZX06OkB7WyRzZWxmLT5fc2V0dGVy
TmFtZQogCiBFT0YKIAotICAgICAgICAgICAgICAgIG15ICRwbGF0Zm9ybVZhbHVlID0gJHNlbGYt
Pl9wbGF0Zm9ybVR5cGVDb25zdHJ1Y3RvcigkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIp
OworICAgICAgICAgICAgICAgIG15ICRwbGF0Zm9ybVZhbHVlID0gJHNlbGYtPl9wbGF0Zm9ybVR5
cGVDb25zdHJ1Y3RvcigkYXR0cmlidXRlLT50eXBlLCAidmFsdWUiKTsKIAogICAgICAgICAgICAg
ICAgIHB1c2goQGNvbnRlbnRzLCA8PEVPRik7CiAgICAgaW1wbC0+QHtbJHNlbGYtPl9zZXR0ZXJO
YW1lKCRhdHRyaWJ1dGUpXX0oJHtwbGF0Zm9ybVZhbHVlfSk7CkBAIC0zODMsMTIgKzM4MSwxMiBA
QCBzdWIgX2dldHRlck5hbWUKIHsKICAgICBteSAoJHNlbGYsICRhdHRyaWJ1dGUpID0gQF87CiAK
LSAgICByZXR1cm4gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgIHJldHVybiAkYXR0
cmlidXRlLT5uYW1lOwogfQogCiBzdWIgX2luY2x1ZGVIZWFkZXJzCiB7Ci0gICAgbXkgKCRzZWxm
LCAkaGVhZGVycywgJHR5cGUsICRzaWduYXR1cmUpID0gQF87CisgICAgbXkgKCRzZWxmLCAkaGVh
ZGVycywgJHR5cGUpID0gQF87CiAKICAgICByZXR1cm4gdW5sZXNzIGRlZmluZWQgJHR5cGU7CiAg
ICAgcmV0dXJuIGlmICR0eXBlLT5uYW1lIGVxICJib29sZWFuIjsKQEAgLTQzMSw3ICs0MjksNyBA
QCBzdWIgX3BhcmVudEludGVyZmFjZQogCiBzdWIgX3BsYXRmb3JtVHlwZQogewotICAgIG15ICgk
c2VsZiwgJHR5cGUsICRzaWduYXR1cmUpID0gQF87CisgICAgbXkgKCRzZWxmLCAkdHlwZSkgPSBA
XzsKIAogICAgIHJldHVybiB1bmRlZiB1bmxlc3MgZGVmaW5lZCAkdHlwZTsKIApAQCAtNDQ0LDkg
KzQ0Miw3IEBAIHN1YiBfcGxhdGZvcm1UeXBlCiAKIHN1YiBfcGxhdGZvcm1UeXBlQ29uc3RydWN0
b3IKIHsKLSAgICBteSAoJHNlbGYsICRzaWduYXR1cmUsICRhcmd1bWVudE5hbWUpID0gQF87Ci0K
LSAgICBteSAkdHlwZSA9ICRzaWduYXR1cmUtPnR5cGU7CisgICAgbXkgKCRzZWxmLCAkdHlwZSwg
JGFyZ3VtZW50TmFtZSkgPSBAXzsKIAogICAgIHJldHVybiAiSlNWYWx1ZVRvQm9vbGVhbihjb250
ZXh0LCAkYXJndW1lbnROYW1lKSIgaWYgJHR5cGUtPm5hbWUgZXEgImJvb2xlYW4iOwogICAgIHJl
dHVybiAiJGFyZ3VtZW50TmFtZSIgaWYgJHR5cGUtPm5hbWUgZXEgIm9iamVjdCI7CkBAIC00NTcs
MTAgKzQ1MywxMCBAQCBzdWIgX3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yCiAKIHN1YiBfcGxhdGZv
cm1UeXBlVmFyaWFibGVEZWNsYXJhdGlvbgogewotICAgIG15ICgkc2VsZiwgJHNpZ25hdHVyZSwg
JHZhcmlhYmxlTmFtZSwgJGFyZ3VtZW50TmFtZSwgJGNvbmRpdGlvbikgPSBAXzsKKyAgICBteSAo
JHNlbGYsICR0eXBlLCAkdmFyaWFibGVOYW1lLCAkYXJndW1lbnROYW1lLCAkY29uZGl0aW9uKSA9
IEBfOwogCi0gICAgbXkgJHBsYXRmb3JtVHlwZSA9ICRzZWxmLT5fcGxhdGZvcm1UeXBlKCRzaWdu
YXR1cmUtPnR5cGUsICRzaWduYXR1cmUpOwotICAgIG15ICRjb25zdHJ1Y3RvciA9ICRzZWxmLT5f
cGxhdGZvcm1UeXBlQ29uc3RydWN0b3IoJHNpZ25hdHVyZSwgJGFyZ3VtZW50TmFtZSk7CisgICAg
bXkgJHBsYXRmb3JtVHlwZSA9ICRzZWxmLT5fcGxhdGZvcm1UeXBlKCR0eXBlKTsKKyAgICBteSAk
Y29uc3RydWN0b3IgPSAkc2VsZi0+X3BsYXRmb3JtVHlwZUNvbnN0cnVjdG9yKCR0eXBlLCAkYXJn
dW1lbnROYW1lKTsKIAogICAgIG15ICVub25Qb2ludGVyVHlwZXMgPSAoCiAgICAgICAgICJib29s
IiA9PiAxLApAQCAtNDg1LDkgKzQ4MSw3IEBAIHN1YiBfcGxhdGZvcm1UeXBlVmFyaWFibGVEZWNs
YXJhdGlvbgogCiBzdWIgX3JldHVybkV4cHJlc3Npb24KIHsKLSAgICBteSAoJHNlbGYsICRzaWdu
YXR1cmUsICRleHByZXNzaW9uKSA9IEBfOwotCi0gICAgbXkgJHJldHVyblR5cGUgPSAkc2lnbmF0
dXJlLT50eXBlOworICAgIG15ICgkc2VsZiwgJHJldHVyblR5cGUsICRleHByZXNzaW9uKSA9IEBf
OwogCiAgICAgcmV0dXJuICJKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSIgaWYgJHJldHVy
blR5cGUtPm5hbWUgZXEgInZvaWQiOwogICAgIHJldHVybiAiSlNWYWx1ZU1ha2VCb29sZWFuKGNv
bnRleHQsICR7ZXhwcmVzc2lvbn0pIiBpZiAkcmV0dXJuVHlwZS0+bmFtZSBlcSAiYm9vbGVhbiI7
CkBAIC00OTcsMTIgKzQ5MSwxMiBAQCBzdWIgX3JldHVybkV4cHJlc3Npb24KICAgICByZXR1cm4g
InRvSlMoY29udGV4dCwgV1RGOjpnZXRQdHIoJHtleHByZXNzaW9ufSkpIjsKIH0KIAotc3ViIF9w
YXJhbWV0ZXJFeHByZXNzaW9uCitzdWIgX2FyZ3VtZW50RXhwcmVzc2lvbgogewotICAgIG15ICgk
c2VsZiwgJHBhcmFtZXRlcikgPSBAXzsKKyAgICBteSAoJHNlbGYsICRhcmd1bWVudCkgPSBAXzsK
IAotICAgIG15ICR0eXBlID0gJHBhcmFtZXRlci0+dHlwZTsKLSAgICBteSAkbmFtZSA9ICRwYXJh
bWV0ZXItPm5hbWU7CisgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CisgICAgbXkgJG5h
bWUgPSAkYXJndW1lbnQtPm5hbWU7CiAKICAgICByZXR1cm4gIiR7bmFtZX0uZ2V0KCkiIGlmICQk
c2VsZntjb2RlR2VuZXJhdG9yfS0+SXNTdHJpbmdUeXBlKCR0eXBlKTsKICAgICByZXR1cm4gJG5h
bWU7CkBAIC01MTIsNyArNTA2LDcgQEAgc3ViIF9zZXR0ZXJOYW1lCiB7CiAgICAgbXkgKCRzZWxm
LCAkYXR0cmlidXRlKSA9IEBfOwogCi0gICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPm5hbWU7CisgICAgbXkgJG5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOwogCiAgICAgcmV0dXJu
ICJzZXQiIC4gJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5XS191Y2ZpcnN0KCRuYW1lKTsKIH0KQEAg
LTUyMiw5ICs1MTYsOSBAQCBzdWIgX3N0YXRpY0Z1bmN0aW9uc0dldHRlckltcGxlbWVudGF0aW9u
CiAgICAgbXkgKCRzZWxmLCAkaW50ZXJmYWNlKSA9IEBfOwogCiAgICAgbXkgJG1hcEZ1bmN0aW9u
ID0gc3ViIHsKLSAgICAgICAgbXkgJG5hbWUgPSAkXy0+c2lnbmF0dXJlLT5uYW1lOworICAgICAg
ICBteSAkbmFtZSA9ICRfLT5uYW1lOwogICAgICAgICBteSBAYXR0cmlidXRlcyA9IHF3KGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KTsK
LSAgICAgICAgcHVzaChAYXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0i
KSBpZiAkXy0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRG9udEVudW0ifTsKKyAg
ICAgICAgcHVzaChAYXR0cmlidXRlcywgImtKU1Byb3BlcnR5QXR0cmlidXRlRG9udEVudW0iKSBp
ZiAkXy0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07CiAKICAgICAgICAgcmV0dXJu
ICAieyBcIiRuYW1lXCIsICRuYW1lLCAiIC4gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIC4gIiB9
IjsKICAgICB9OwpAQCAtNTYyLDE0ICs1NTYsMTQgQEAgc3ViIF9zdGF0aWNWYWx1ZXNHZXR0ZXJJ
bXBsZW1lbnRhdGlvbgogICAgIG15ICgkc2VsZiwgJGludGVyZmFjZSkgPSBAXzsKIAogICAgIG15
ICRtYXBGdW5jdGlvbiA9IHN1YiB7Ci0gICAgICAgIHJldHVybiBpZiAkXy0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiTm9JbXBsZW1lbnRhdGlvbiJ9OworICAgICAgICByZXR1cm4g
aWYgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ltcGxlbWVudGF0aW9uIn07CiAKLSAgICAg
ICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkXy0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICBteSAk
YXR0cmlidXRlTmFtZSA9ICRfLT5uYW1lOwogICAgICAgICBteSAkZ2V0dGVyTmFtZSA9ICRzZWxm
LT5fZ2V0dGVyTmFtZSgkXyk7CiAgICAgICAgIG15ICRzZXR0ZXJOYW1lID0gJF8tPmlzUmVhZE9u
bHkgPyAiMCIgOiAkc2VsZi0+X3NldHRlck5hbWUoJF8pOwogICAgICAgICBteSBAYXR0cmlidXRl
cyA9IHF3KGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSk7CiAgICAgICAgIHB1c2goQGF0
dHJpYnV0ZXMsICJrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IikgaWYgJF8tPmlzUmVhZE9u
bHk7Ci0gICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRF
bnVtIikgaWYgJF8tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkRvbnRFbnVtIn07
CisgICAgICAgIHB1c2goQGF0dHJpYnV0ZXMsICJrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRFbnVt
IikgaWYgJF8tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb250RW51bSJ9OwogCiAgICAgICAgIHJl
dHVybiAieyBcIiRhdHRyaWJ1dGVOYW1lXCIsICRnZXR0ZXJOYW1lLCAkc2V0dGVyTmFtZSwgIiAu
IGpvaW4oIiB8ICIsIEBhdHRyaWJ1dGVzKSAuICIgfSI7CiAgICAgfTsK
</data>
<flag name="review"
          id="316255"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>