<?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>172601</bug_id>
          
          <creation_ts>2017-05-25 11:31:24 -0700</creation_ts>
          <short_desc>[WebIDL] Use the term &apos;operation&apos; more consistently</short_desc>
          <delta_ts>2017-05-30 20:21:23 -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>InRadar</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>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1312757</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-25 11:31:24 -0700</bug_when>
    <thetext>[WebIDL] Use the term &apos;operation&apos; more consistently</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312762</commentid>
    <comment_count>1</comment_count>
      <attachid>311253</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-25 11:35:58 -0700</bug_when>
    <thetext>Created attachment 311253
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312833</commentid>
    <comment_count>2</comment_count>
      <attachid>311278</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-25 13:23:04 -0700</bug_when>
    <thetext>Created attachment 311278
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312843</commentid>
    <comment_count>3</comment_count>
      <attachid>311278</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-25 13:45:02 -0700</bug_when>
    <thetext>Comment on attachment 311278
Patch

r=me, nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312884</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-25 14:35:20 -0700</bug_when>
    <thetext>Committed r217451: &lt;http://trac.webkit.org/changeset/217451&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314022</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 20:21:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/32479716&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311253</attachid>
            <date>2017-05-25 11:35:58 -0700</date>
            <delta_ts>2017-05-25 13:23:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172601-20170525113557.patch</filename>
            <type>text/plain</type>
            <size>124970</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gVXNlIHRoZSB0ZXJtICdv
cGVyYXRpb24nIG1vcmUgY29uc2lzdGVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZSB3ZXJlIHVzaW5nIHRoZSB0ZXJtICdvcGVyYXRpb24nLCBh
IFdlYklETCB0ZXJtIGZvciBmdW5jdGlvbi1saWtlCisgICAgICAgIGNvbnN0cnVjdHMsIGluY29u
c2lzdGVudGx5IGluIHRoZSBjb2RlIGdlbmVyYXRvci4gTm93LCB3aGVuIHdlIHVzZQorICAgICAg
ICAnb3BlcmF0aW9uJyB3aGVuIHJlZmVycmluZyB0byB0aGUgSURMIGNvbmNlcHQgKHVzdWFsbHkg
dGhlIG9iamVjdCB0aGUKKyAgICAgICAgcGFyc2VyIHByb2R1Y2VzKSBhbmQgJ2Z1bmN0aW9uJyB3
aGVuIHJlZmVycmluZyB0byBjb2RlIGJlaW5nIGdlbmVyYXRlZC4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRp
bmdzLnBsOgorCiAyMDE3LTA1LTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgW1dlYklETF0gRG8gYSBwYXNzIG9mIGNsZWFudXAgaW4gdGhlIGJpbmRpbmdzIGdlbmVy
YXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
LnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQkocmV2aXNpb24gMjE3NDMyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsMTcgKzc2NSwx
NyBAQCBzdWIgTmFtZXNwYWNlRm9yQXR0cmlidXRlTmFtZQogCiAjIElkZW50aWZpZXMgb3Zlcmxv
YWRlZCBmdW5jdGlvbnMgYW5kIGZvciBlYWNoIGZ1bmN0aW9uIGFkZHMgYW4gYXJyYXkgd2l0aAog
IyBsaW5rcyB0byBpdHMgcmVzcGVjdGl2ZSBvdmVybG9hZHMgKGluY2x1ZGluZyBpdHNlbGYpLgot
c3ViIExpbmtPdmVybG9hZGVkRnVuY3Rpb25zCitzdWIgTGlua092ZXJsb2FkZWRPcGVyYXRpb25z
CiB7CiAgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UpID0gQF87CiAKLSAgICBteSAlbmFtZVRv
RnVuY3Rpb25zTWFwID0gKCk7Ci0gICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFj
ZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKLSAg
ICAgICAgJG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX0gPSBbXSBpZiAhZXhpc3RzICRuYW1lVG9G
dW5jdGlvbnNNYXB7JG5hbWV9OwotICAgICAgICBwdXNoKEB7JG5hbWVUb0Z1bmN0aW9uc01hcHsk
bmFtZX19LCAkZnVuY3Rpb24pOwotICAgICAgICAkZnVuY3Rpb24tPntvdmVybG9hZHN9ID0gJG5h
bWVUb0Z1bmN0aW9uc01hcHskbmFtZX07Ci0gICAgICAgICRmdW5jdGlvbi0+e292ZXJsb2FkSW5k
ZXh9ID0gQHskbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1lfX07CisgICAgbXkgJW5hbWVUb09wZXJh
dGlvbnNNYXAgPSAoKTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+
b3BlcmF0aW9uc30pIHsKKyAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uLT5uYW1lOworICAg
ICAgICAkbmFtZVRvT3BlcmF0aW9uc01hcHskbmFtZX0gPSBbXSBpZiAhZXhpc3RzICRuYW1lVG9P
cGVyYXRpb25zTWFweyRuYW1lfTsKKyAgICAgICAgcHVzaChAeyRuYW1lVG9PcGVyYXRpb25zTWFw
eyRuYW1lfX0sICRvcGVyYXRpb24pOworICAgICAgICAkb3BlcmF0aW9uLT57b3ZlcmxvYWRzfSA9
ICRuYW1lVG9PcGVyYXRpb25zTWFweyRuYW1lfTsKKyAgICAgICAgJG9wZXJhdGlvbi0+e292ZXJs
b2FkSW5kZXh9ID0gQHskbmFtZVRvT3BlcmF0aW9uc01hcHskbmFtZX19OwogICAgIH0KIAogICAg
IG15ICRpbmRleCA9IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMjE3NDMzKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTE2MSw3ICsxNjEsNyBAQCBzdWIgR2VuZXJhdGVJbnRlcmZhY2UKIHsKICAgICBteSAoJG9i
amVjdCwgJGludGVyZmFjZSwgJGRlZmluZXMsICRlbnVtZXJhdGlvbnMsICRkaWN0aW9uYXJpZXMp
ID0gQF87CiAKLSAgICAkY29kZUdlbmVyYXRvci0+TGlua092ZXJsb2FkZWRGdW5jdGlvbnMoJGlu
dGVyZmFjZSk7CisgICAgJGNvZGVHZW5lcmF0b3ItPkxpbmtPdmVybG9hZGVkT3BlcmF0aW9ucygk
aW50ZXJmYWNlKTsKIAogICAgIEFkZFN0cmluZ2lmaWVyT3BlcmF0aW9uSWZOZWVkZWQoJGludGVy
ZmFjZSk7CiAgICAgQWRkTGVnYWN5Q2FsbGVyT3BlcmF0aW9uSWZOZWVkZWQoJGludGVyZmFjZSk7
CkBAIC0xOTMsNyArMTkzLDcgQEAgc3ViIEFkZFN0cmluZ2lmaWVyT3BlcmF0aW9uSWZOZWVkZWQK
ICAgICAgICAgbXkgJHR5cGUgPSBJRExQYXJzZXI6OmNsb25lVHlwZSgkYXR0cmlidXRlLT50eXBl
KTsKICAgICAgICAgJHN0cmluZ2lmaWVyLT50eXBlKCR0eXBlKTsKIAotICAgICAgICBwdXNoKEB7
JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgJHN0cmluZ2lmaWVyKTsKKyAgICAgICAgcHVzaChAeyRp
bnRlcmZhY2UtPm9wZXJhdGlvbnN9LCAkc3RyaW5naWZpZXIpOwogICAgICAgICBsYXN0OwogICAg
IH0KIH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBzdWIgQWRkTGVnYWN5Q2FsbGVyT3BlcmF0aW9uSWZO
ZWVkZWQKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKLSAgICBmb3JlYWNoIG15ICRv
cGVyYXRpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgQHskaW50ZXJmYWNlLT5hbm9ueW1v
dXNGdW5jdGlvbnN9KSB7CisgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2Ut
Pm9wZXJhdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmFub255bW91c09wZXJhdGlvbnN9KSB7CiAgICAg
ICAgIG15ICRpc0xlZ2FjeUNhbGxlciA9IGdyZXAgeyAkXyBlcSAibGVnYWN5Y2FsbGVyIiB9IEB7
JG9wZXJhdGlvbi0+c3BlY2lhbHN9OwogICAgICAgICBpZiAoJGlzTGVnYWN5Q2FsbGVyKSB7CiAg
ICAgICAgICAgICAkaW50ZXJmYWNlLT57TGVnYWN5Q2FsbGVyc30gPSBbXSBpZiAhZXhpc3RzICRp
bnRlcmZhY2UtPntMZWdhY3lDYWxsZXJzfTsKQEAgLTQwNiw3ICs0MDYsNyBAQCBzdWIgU2hvdWxk
VXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCiAKIHN1YiBHZW5lcmF0ZUluZGV4ZWRHZXR0ZXIKIHsK
LSAgICBteSAoJGludGVyZmFjZSwgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgPSBAXzsKKyAgICBt
eSAoJGludGVyZmFjZSwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pID0gQF87CiAKICAgICBteSBA
b3V0cHV0ID0gKCk7CiAKQEAgLTQxNSw4ICs0MTUsOCBAQCBzdWIgR2VuZXJhdGVJbmRleGVkR2V0
dGVyCiAKICAgICBteSAkYXR0cmlidXRlU3RyaW5nID0gKChAYXR0cmlidXRlcyA+IDApID8gam9p
bigiIHwgIiwgQGF0dHJpYnV0ZXMpIDogIjAiKTsKIAotICAgIG15ICRpbmRleGVkR2V0dGVyRnVu
Y3Rpb25OYW1lID0gJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+bmFtZSB8fCAiaXRlbSI7Ci0gICAg
bXkgJG5hdGl2ZVRvSlNDb252ZXJzaW9uID0gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygk
aW5kZXhlZEdldHRlckZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAidGhpc09iamVjdC0+d3JhcHBlZCgp
LiR7aW5kZXhlZEdldHRlckZ1bmN0aW9uTmFtZX0oaW5kZXgpIiwgIip0aGlzT2JqZWN0LT5nbG9i
YWxPYmplY3QoKSIpOworICAgIG15ICRpbmRleGVkR2V0dGVyRnVuY3Rpb25OYW1lID0gJGluZGV4
ZWRHZXR0ZXJPcGVyYXRpb24tPm5hbWUgfHwgIml0ZW0iOworICAgIG15ICRuYXRpdmVUb0pTQ29u
dmVyc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJGluZGV4ZWRHZXR0ZXJPcGVy
YXRpb24sICRpbnRlcmZhY2UsICJ0aGlzT2JqZWN0LT53cmFwcGVkKCkuJHtpbmRleGVkR2V0dGVy
RnVuY3Rpb25OYW1lfShpbmRleCkiLCAiKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpIik7CiAK
ICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgJHth
dHRyaWJ1dGVTdHJpbmd9LCAke25hdGl2ZVRvSlNDb252ZXJzaW9ufSk7XG4iKTsKICAgICBwdXNo
KEBvdXRwdXQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CkBAIC00MjYsNyArNDI2LDcgQEAg
c3ViIEdlbmVyYXRlSW5kZXhlZEdldHRlcgogCiBzdWIgR2VuZXJhdGVOYW1lZEdldHRlcgogewot
ICAgIG15ICgkaW50ZXJmYWNlLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgPSBAXzsKKyAgICBteSAo
JGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgQG91dHB1
dCA9ICgpOwogCkBAIC00NDEsMTEgKzQ0MSwxMSBAQCBzdWIgR2VuZXJhdGVOYW1lZEdldHRlcgog
ICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIGlmICh0aGlzT2JqZWN0LT5uYW1lR2V0dGVy
KHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkge1xuIik7CiAgICAgICAgIHB1c2goQG91dHB1
dCwgIiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVTdHJp
bmd9LCB2YWx1ZSk7XG4iKTsKICAgICB9IGVsc2UgewotICAgICAgICBteSAkbmFtZWRHZXR0ZXJG
dW5jdGlvbk5hbWUgPSAkbmFtZWRHZXR0ZXJGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
SW1wbGVtZW50ZWRBc30gfHwgJG5hbWVkR2V0dGVyRnVuY3Rpb24tPm5hbWUgfHwgIm5hbWVkSXRl
bSI7CisgICAgICAgIG15ICRuYW1lZEdldHRlckZ1bmN0aW9uTmFtZSA9ICRuYW1lZEdldHRlck9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJG5hbWVkR2V0
dGVyT3BlcmF0aW9uLT5uYW1lIHx8ICJuYW1lZEl0ZW0iOwogICAgICAgICBteSAkaXRlbVZhcmlh
YmxlID0gIml0ZW0iOwogICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIGF1dG8gaXRlbSA9
IHRoaXNPYmplY3QtPndyYXBwZWQoKS4ke25hbWVkR2V0dGVyRnVuY3Rpb25OYW1lfShwcm9wZXJ0
eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTtcbiIpOwogCi0gICAgICAgIGlmICgk
bmFtZWRHZXR0ZXJGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRp
b259KSB7CisgICAgICAgIGlmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkgewogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAi
ICAgICAgICBpZiAoaXRlbS5oYXNFeGNlcHRpb24oKSkge1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBvdXRwdXQsICIgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHN0YXRlLT52bSgpKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAg
ICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgaXRlbS5yZWxlYXNl
RXhjZXB0aW9uKCkpO1xuIik7CkBAIC00NTYsMTAgKzQ1NiwxMCBAQCBzdWIgR2VuZXJhdGVOYW1l
ZEdldHRlcgogICAgICAgICAgICAgJGl0ZW1WYXJpYWJsZSA9ICJpdGVtVmFsdWUiOwogICAgICAg
ICB9CiAKLSAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICRuYW1l
ZEdldHRlckZ1bmN0aW9uLT50eXBlKTsKKyAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBl
KCRpbnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlvbi0+dHlwZSk7CiAgICAgICAgIHB1c2go
QG91dHB1dCwgIiAgICAgICAgaWYgKCEke0lETFR5cGV9Ojppc051bGxWYWx1ZSgke2l0ZW1WYXJp
YWJsZX0pKSB7XG4iKTsKIAotICAgICAgICBteSAkbmF0aXZlVG9KU0NvbnZlcnNpb24gPSBOYXRp
dmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRuYW1lZEdldHRlckZ1bmN0aW9uLCAkaW50ZXJmYWNl
LCAkaXRlbVZhcmlhYmxlLCAiKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpIiwgMSk7CisgICAg
ICAgIG15ICRuYXRpdmVUb0pTQ29udmVyc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRl
cnMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkaXRlbVZhcmlhYmxlLCAiKnRo
aXNPYmplY3QtPmdsb2JhbE9iamVjdCgpIiwgMSk7CiAgICAgICAgIHB1c2goQG91dHB1dCwgIiAg
ICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVTdHJpbmd9LCAk
e25hdGl2ZVRvSlNDb252ZXJzaW9ufSk7XG4iKTsKICAgICB9CiAgICAgCkBAIC00NzEsNyArNDcx
LDcgQEAgc3ViIEdlbmVyYXRlTmFtZWRHZXR0ZXIKIAogc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVy
dHlTbG90Qm9keQogewotICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdl
dHRlckZ1bmN0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgPSBAXzsKKyAgICBteSAoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlck9w
ZXJhdGlvbikgPSBAXzsKIAogICAgIG15IEBvdXRwdXQgPSAoKTsKIApAQCAtNDk1LDI2ICs0OTUs
MjYgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogICAgIHB1c2goQG91dHB1
dCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7XG4i
KTsKIAogCi0gICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKKyAgICBpZiAoJGluZGV4
ZWRHZXR0ZXJPcGVyYXRpb24pIHsKICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgIGF1dG8gb3B0
aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKTtcbiIpOwogICAgICAgICBwdXNo
KEBvdXRwdXQsICIgICAgaWYgKG9wdGlvbmFsSW5kZXggJiYgb3B0aW9uYWxJbmRleC52YWx1ZSgp
IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSB7XG4iKTsKICAgICAgICAgcHVzaChA
b3V0cHV0LCAiICAgICAgICBhdXRvIGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpO1xuIik7
Ci0gICAgICAgIHB1c2goQG91dHB1dCwgR2VuZXJhdGVJbmRleGVkR2V0dGVyKCRpbnRlcmZhY2Us
ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChAb3V0cHV0LCBHZW5lcmF0
ZUluZGV4ZWRHZXR0ZXIoJGludGVyZmFjZSwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pKTsKICAg
ICAgICAgcHVzaChAb3V0cHV0LCAiICAgIH1cbiIpOwogICAgIH0KIAotICAgIG15ICRoYXNOYW1l
ZEdldHRlciA9ICRuYW1lZEdldHRlckZ1bmN0aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0N1c3RvbU5hbWVkR2V0dGVyfTsKKyAgICBteSAkaGFzTmFtZWRHZXR0ZXIgPSAk
bmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q3VzdG9tTmFtZWRHZXR0ZXJ9OwogICAgIGlmICgkaGFzTmFtZWRHZXR0ZXIpIHsKICAgICAgICAg
aWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntPdmVycmlkZUJ1aWx0aW5zfSkg
ewogICAgICAgICAgICAgJiRvd25Qcm9wZXJ0eUNoZWNrKCk7CiAgICAgICAgICAgICAmJHByb3Rv
dHlwZUNoZWNrKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rp
b24pIHsKKyAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVyT3BlcmF0aW9uKSB7CiAgICAgICAgICAg
ICBwdXNoKEBvdXRwdXQsICIgICAgaWYgKCFvcHRpb25hbEluZGV4ICYmIHRoaXNPYmplY3QtPmNs
YXNzSW5mbygpID09IGluZm8oKSAmJiAhcHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpIHtcbiIpOwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgIGlmICh0aGlz
T2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkgJiYgIXByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KSB7XG4iKTsKICAgICAgICAgfQotICAgICAgICBwdXNoKEBvdXRwdXQsIEdlbmVyYXRlTmFtZWRH
ZXR0ZXIoJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyRnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChA
b3V0cHV0LCBHZW5lcmF0ZU5hbWVkR2V0dGVyKCRpbnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJh
dGlvbikpOwogICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgfVxuIik7CiAgICAgfQogCkBAIC01
MzUsNyArNTM1LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogCiBzdWIg
R2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5QnlJbmRleAogewotICAgIG15ICgkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdldHRlckZ1bmN0aW9uLCAkbmFtZWRHZXR0ZXJGdW5j
dGlvbikgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4ZWRHZXR0
ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlck9wZXJhdGlvbikgPSBAXzsKIAogICAgIG15IEBvdXRw
dXQgPSAoKTsKIApAQCAtNTU1LDE4ICs1NTUsMTggQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVy
dHlTbG90Qm9keUJ5SW5kZQogICAgICAgICAkZ2VuZXJhdGVkUHJvcGVydHlOYW1lID0gMTsKICAg
ICB9OwogICAgIAotICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uKSB7CisgICAgaWYgKCRp
bmRleGVkR2V0dGVyT3BlcmF0aW9uKSB7CiAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICBpZiAo
TElLRUxZKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSkge1xuIik7Ci0g
ICAgICAgIHB1c2goQG91dHB1dCwgR2VuZXJhdGVJbmRleGVkR2V0dGVyKCRpbnRlcmZhY2UsICRp
bmRleGVkR2V0dGVyRnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChAb3V0cHV0LCBHZW5lcmF0ZUlu
ZGV4ZWRHZXR0ZXIoJGludGVyZmFjZSwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pKTsKICAgICAg
ICAgcHVzaChAb3V0cHV0LCAiICAgIH1cbiIpOwogICAgIH0KIAogICAgICMgSW5kZXhpbmcgYW4g
b2JqZWN0IHdpdGggYW4gaW50ZWdlciB0aGF0IGlzIG5vdCBhIHN1cHBvcnRlZCBwcm9wZXJ0eSBp
bmRleCBzaG91bGQgbm90IGNhbGwgdGhlIG5hbWVkIHByb3BlcnR5IGdldHRlci4KICAgICAjIGh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1pbmRleGVkLXByb3BlcnRpZXMKLSAg
ICBpZiAoISRpbmRleGVkR2V0dGVyRnVuY3Rpb24gJiYgKCRuYW1lZEdldHRlckZ1bmN0aW9uIHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkR2V0dGVyfSkpIHsK
KyAgICBpZiAoISRpbmRleGVkR2V0dGVyT3BlcmF0aW9uICYmICgkbmFtZWRHZXR0ZXJPcGVyYXRp
b24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRHZXR0ZXJ9
KSkgewogICAgICAgICAmJHByb3BlcnR5TmFtZUdlbmVyYXRpb24oKTsKICAgICAgICAgcHVzaChA
b3V0cHV0LCAiICAgIGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpIHtcbiIp
OwotICAgICAgICBwdXNoKEBvdXRwdXQsIEdlbmVyYXRlTmFtZWRHZXR0ZXIoJGludGVyZmFjZSwg
JG5hbWVkR2V0dGVyRnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChAb3V0cHV0LCBHZW5lcmF0ZU5h
bWVkR2V0dGVyKCRpbnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlvbikpOwogICAgICAgICBw
dXNoKEBvdXRwdXQsICIgICAgfVxuIik7CiAgICAgfQogCkBAIC01ODQsNyArNTg0LDcgQEAgc3Vi
IEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keUJ5SW5kZQogCiBzdWIgR2VuZXJhdGVHZXRP
d25Qcm9wZXJ0eU5hbWVzCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uKSA9IEBfOworICAgIG15ICgk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0
dGVyT3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgQG91dHB1dCA9ICgpOwogCkBAIC01OTcsNyAr
NTk3LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlOYW1lcwogCiAgICAgIyAxLiBJZiB0
aGUgb2JqZWN0IHN1cHBvcnRzIGluZGV4ZWQgcHJvcGVydGllcywgdGhlbiB0aGUgb2JqZWN04oCZ
cyBzdXBwb3J0ZWQKICAgICAjICAgIHByb3BlcnR5IGluZGljZXMgYXJlIGVudW1lcmF0ZWQgZmly
c3QsIGluIG51bWVyaWNhbCBvcmRlci4KLSAgICBpZiAoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikg
eworICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBjb3VudCA9IHRoaXNPYmplY3QtPndy
YXBwZWQoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kpXG4iKTsKICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oc3Rh
dGUsIGkpKTtcbiIpOwogICAgIH0KQEAgLTYwNyw3ICs2MDcsNyBAQCBzdWIgR2VuZXJhdGVHZXRP
d25Qcm9wZXJ0eU5hbWVzCiAgICAgIyAgICBvYmplY3TigJlzIHN1cHBvcnRlZCBwcm9wZXJ0eSBu
YW1lcyB0aGF0IGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byB0aGUgbmFtZWQKICAgICAjICAgIHBy
b3BlcnR5IHZpc2liaWxpdHkgYWxnb3JpdGhtIGFyZSBlbnVtZXJhdGVkIG5leHQsIGluIHRoZSBv
cmRlciBnaXZlbiBpbgogICAgICMgICAgdGhlIGRlZmluaXRpb24gb2YgdGhlIHNldCBvZiBzdXBw
b3J0ZWQgcHJvcGVydHkgbmFtZXMuCi0gICAgaWYgKCRuYW1lZEdldHRlckZ1bmN0aW9uKSB7Cisg
ICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbikgewogICAgICAgICBpZiAoISRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeVVuZW51bWVyYWJsZU5hbWVkUHJvcGVydGllc30p
IHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGZvciAoYXV0byYgcHJvcGVy
dHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1cHBvcnRlZFByb3BlcnR5TmFtZXMoKSlc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHByb3BlcnR5TmFt
ZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3RhdGUsIHByb3BlcnR5TmFtZSkpO1xuIik7
CkBAIC02MjgsOSArNjI4LDkgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlOYW1lcwogCiBz
dWIgR2VuZXJhdGVQdXQKIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4
ZWRTZXR0ZXJGdW5jdGlvbiwgJG5hbWVkU2V0dGVyRnVuY3Rpb24pID0gQF87CisgICAgbXkgKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkU2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRTZXR0
ZXJPcGVyYXRpb24pID0gQF87CiAKLSAgICBhc3NlcnQoIk5hbWVkIHNldHRlcnMgYXJlIG5vdCBz
dXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyRnVuY3Rpb247CisgICAgYXNzZXJ0KCJOYW1lZCBz
ZXR0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiIpIGlmICRuYW1lZFNldHRlck9wZXJhdGlvbjsKIAog
ICAgIG15IEBvdXRwdXQgPSAoKTsKIApAQCAtNjM5LDI1ICs2MzksMjUgQEAgc3ViIEdlbmVyYXRl
UHV0CiAgICAgcHVzaChAb3V0cHV0LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtj
bGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICBwdXNoKEBvdXRwdXQsICIgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAgICAgCi0gICAgaWYg
KCRpbmRleGVkU2V0dGVyRnVuY3Rpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q3VzdG9tSW5kZXhlZFNldHRlcn0pIHsKKyAgICBpZiAoJGluZGV4ZWRTZXR0ZXJPcGVyYXRp
b24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tSW5kZXhlZFNldHRl
cn0pIHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bUluZGV4ZWRTZXR0ZXJ9KSB7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgaWYgKGF1
dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHtcbiIpOwogICAgICAgICAgICAg
cHVzaChAb3V0cHV0LCAiICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5k
ZXgudmFsdWUoKSwgdmFsdWUpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAg
ICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgfVxu
Iik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAjIFRoZSBzZWNvbmQgYXJndW1lbnQg
b2YgdGhlIGluZGV4ZWQgc2V0dGVyIGZ1bmN0aW9uIGlzIHRoZSBhcmd1bWVudCBiZWluZyBjb252
ZXJ0ZWQuCi0gICAgICAgICAgICBteSAkYXJndW1lbnQgPSBAeyRpbmRleGVkU2V0dGVyRnVuY3Rp
b24tPmFyZ3VtZW50c31bMV07Ci0gICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSBKU1ZhbHVl
VG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAidmFsdWUiLCAkaW5kZXhlZFNldHRlckZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0sICJzdGF0ZSIsICIqc3Rh
dGUiLCAidGhpc09iamVjdCIsICIiLCAiIik7CisgICAgICAgICAgICAjIFRoZSBzZWNvbmQgYXJn
dW1lbnQgb2YgdGhlIGluZGV4ZWQgc2V0dGVyIG9wZXJhdGlvbiBpcyB0aGUgYXJndW1lbnQgYmVp
bmcgY29udmVydGVkLgorICAgICAgICAgICAgbXkgJGFyZ3VtZW50ID0gQHskaW5kZXhlZFNldHRl
ck9wZXJhdGlvbi0+YXJndW1lbnRzfVsxXTsKKyAgICAgICAgICAgIG15ICRuYXRpdmVWYWx1ZSA9
IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJndW1lbnQsICJ2YWx1ZSIsICRpbmRleGVk
U2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0sICJzdGF0
ZSIsICIqc3RhdGUiLCAidGhpc09iamVjdCIsICIiLCAiIik7CiAKICAgICAgICAgICAgIHB1c2go
QG91dHB1dCwgIiAgICBpZiAoYXV0byBpbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkg
e1xuIik7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIGF1dG8gdGhyb3dTY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBvdXRwdXQsICIgICAgICAgIGF1dG8gbmF0aXZlVmFsdWUgPSAke25hdGl2ZVZhbHVlfTtc
biIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHRydWUpO1xuIik7CiAKLSAgICAgICAgICAgIG15ICRpbmRleGVkU2V0
dGVyRnVuY3Rpb25OYW1lID0gJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbi0+bmFtZSB8fCAic2V0SXRl
bSI7CisgICAgICAgICAgICBteSAkaW5kZXhlZFNldHRlckZ1bmN0aW9uTmFtZSA9ICRpbmRleGVk
U2V0dGVyT3BlcmF0aW9uLT5uYW1lIHx8ICJzZXRJdGVtIjsKICAgICAgICAgICAgIG15ICRmdW5j
dGlvblN0cmluZyA9ICIke2luZGV4ZWRTZXR0ZXJGdW5jdGlvbk5hbWV9KGluZGV4LCBXVEZNb3Zl
KG5hdGl2ZVZhbHVlKSkiOwotICAgICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0
ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsICR7ZnVuY3Rpb25TdHJpbmd9KSIgaWYgTmVl
ZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwoJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbik7
CisgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0
ZSwgdGhyb3dTY29wZSwgJHtmdW5jdGlvblN0cmluZ30pIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFn
YXRlRXhjZXB0aW9uQ2FsbCgkaW5kZXhlZFNldHRlck9wZXJhdGlvbik7CiAKICAgICAgICAgICAg
IHB1c2goQG91dHB1dCwgIiAgICAgICAgJHtmdW5jdGlvblN0cmluZ307XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKQEAgLTY3OSw5ICs2
NzksOSBAQCBzdWIgR2VuZXJhdGVQdXQKIAogc3ViIEdlbmVyYXRlUHV0QnlJbmRleAogewotICAg
IG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZFNldHRlckZ1bmN0aW9uLCAkbmFt
ZWRTZXR0ZXJGdW5jdGlvbikgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGluZGV4ZWRTZXR0ZXJPcGVyYXRpb24sICRuYW1lZFNldHRlck9wZXJhdGlvbikgPSBAXzsKIAot
ICAgIGFzc2VydCgiTmFtZWQgc2V0dGVycyBhcmUgbm90IHN1cHBvcnRlZC4iKSBpZiAkbmFtZWRT
ZXR0ZXJGdW5jdGlvbjsKKyAgICBhc3NlcnQoIk5hbWVkIHNldHRlcnMgYXJlIG5vdCBzdXBwb3J0
ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3BlcmF0aW9uOwogCiAgICAgbXkgQG91dHB1dCA9ICgpOwog
CkBAIC02OTAsMjUgKzY5MCwyNSBAQCBzdWIgR2VuZXJhdGVQdXRCeUluZGV4CiAgICAgcHVzaChA
b3V0cHV0LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2Vs
bCk7XG4iKTsKICAgICBwdXNoKEBvdXRwdXQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAKLSAgICBpZiAoJGluZGV4ZWRTZXR0ZXJGdW5j
dGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21JbmRleGVkU2V0
dGVyfSkgeworICAgIGlmICgkaW5kZXhlZFNldHRlck9wZXJhdGlvbiB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21JbmRleGVkU2V0dGVyfSkgewogICAgICAgICBpZiAo
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tSW5kZXhlZFNldHRlcn0pIHsK
ICAgICAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICBpZiAoTElLRUxZKGluZGV4IDw9IE1BWF9B
UlJBWV9JTkRFWCkpIHtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICB0
aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAb3V0cHV0LCAiICAgIH1cbiIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBpbmRleGVkIHNldHRlciBmdW5jdGlvbiBp
cyB0aGUgYXJndW1lbnQgYmVpbmcgY29udmVydGVkLgotICAgICAgICAgICAgbXkgJGFyZ3VtZW50
ID0gQHskaW5kZXhlZFNldHRlckZ1bmN0aW9uLT5hcmd1bWVudHN9WzFdOwotICAgICAgICAgICAg
bXkgJG5hdGl2ZVZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVudCwg
InZhbHVlIiwgJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
ZGl0aW9uYWx9LCAic3RhdGUiLCAiKnN0YXRlIiwgInRoaXNPYmplY3QiLCAiIiwgIiIpOworICAg
ICAgICAgICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBpbmRleGVkIHNldHRlciBvcGVy
YXRpb24gaXMgdGhlIGFyZ3VtZW50IGJlaW5nIGNvbnZlcnRlZC4KKyAgICAgICAgICAgIG15ICRh
cmd1bWVudCA9IEB7JGluZGV4ZWRTZXR0ZXJPcGVyYXRpb24tPmFyZ3VtZW50c31bMV07CisgICAg
ICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFy
Z3VtZW50LCAidmFsdWUiLCAkaW5kZXhlZFNldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9LCAic3RhdGUiLCAiKnN0YXRlIiwgInRoaXNPYmplY3QiLCAiIiwg
IiIpOwogCiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgaWYgKExJS0VMWShpbmRleCA8
PSBNQVhfQVJSQVlfSU5ERVgpKSB7XG4iKTsKICAgICAgICAgICAgIHB1c2goQG91dHB1dCwgIiAg
ICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7
XG4iKTsKICAgICAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgYXV0byBuYXRpdmVWYWx1
ZSA9ICR7bmF0aXZlVmFsdWV9O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgdHJ1ZSk7XG4iKTsKIAotICAgICAg
ICAgICAgbXkgJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbk5hbWUgPSAkaW5kZXhlZFNldHRlckZ1bmN0
aW9uLT5uYW1lIHx8ICJzZXRJdGVtIjsKKyAgICAgICAgICAgIG15ICRpbmRleGVkU2V0dGVyRnVu
Y3Rpb25OYW1lID0gJGluZGV4ZWRTZXR0ZXJPcGVyYXRpb24tPm5hbWUgfHwgInNldEl0ZW0iOwog
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiR7aW5kZXhlZFNldHRlckZ1bmN0aW9u
TmFtZX0oaW5kZXgsIFdURk1vdmUobmF0aXZlVmFsdWUpKSI7Ci0gICAgICAgICAgICAkZnVuY3Rp
b25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgJHtmdW5j
dGlvblN0cmluZ30pIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkaW5k
ZXhlZFNldHRlckZ1bmN0aW9uKTsKKyAgICAgICAgICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9w
YWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAke2Z1bmN0aW9uU3RyaW5nfSkiIGlm
IE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRpbmRleGVkU2V0dGVyT3BlcmF0
aW9uKTsKIAogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICAke2Z1bmN0aW9uU3Ry
aW5nfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICByZXR1cm4gdHJ1
ZTtcbiIpOwpAQCAtOTE0LDMwICs5MTQsMjcgQEAgc3ViIEdldEF0dHJpYnV0ZVNldHRlck5hbWUK
IAogc3ViIEdldEZ1bmN0aW9uTmFtZQogewotICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkZnVuY3Rpb24pID0gQF87CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVy
YXRpb24pID0gQF87CiAKLSAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFz
c05hbWUsICRmdW5jdGlvbikgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsK
KyAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRvcGVyYXRp
b24pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogCi0gICAgbXkgJGZ1
bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKKyAgICBteSAkZnVuY3Rpb25OYW1lID0gJG9w
ZXJhdGlvbi0+bmFtZTsKICAgICAkZnVuY3Rpb25OYW1lID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAk
ZnVuY3Rpb25OYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKLSAgICBteSAka2luZCA9ICRm
dW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3IiIDogKE9wZXJhdGlvblNob3VsZEJlT25J
bnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pID8gIkluc3RhbmNlIiA6ICJQcm90b3R5cGUi
KTsKKyAgICBteSAka2luZCA9ICRvcGVyYXRpb24tPmlzU3RhdGljID8gIkNvbnN0cnVjdG9yIiA6
IChPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJG9wZXJhdGlvbikgPyAi
SW5zdGFuY2UiIDogIlByb3RvdHlwZSIpOwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tf
bGNmaXJzdCgkY2xhc3NOYW1lKSAuICRraW5kIC4gIkZ1bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOwogfQogCi1zdWIgR2V0U3BlY2lhbEFjY2Vzc29y
RnVuY3Rpb25Gb3JUeXBlCitzdWIgR2V0U3BlY2lhbEFjY2Vzc29yT3BlcmF0aW9uRm9yVHlwZQog
ewotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkc3BlY2lhbCA9IHNoaWZ0Owot
ICAgIG15ICRmaXJzdFBhcmFtZXRlclR5cGUgPSBzaGlmdDsKLSAgICBteSAkbnVtYmVyT2ZQYXJh
bWV0ZXJzID0gc2hpZnQ7CisgICAgbXkgKCRpbnRlcmZhY2UsICRzcGVjaWFsLCAkZmlyc3RQYXJh
bWV0ZXJUeXBlLCAkbnVtYmVyT2ZQYXJhbWV0ZXJzKSA9IEBfOwogCi0gICAgZm9yZWFjaCBteSAk
ZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgQHskaW50ZXJmYWNlLT5hbm9ueW1v
dXNGdW5jdGlvbnN9KSB7Ci0gICAgICAgIG15ICRzcGVjaWFscyA9ICRmdW5jdGlvbi0+c3BlY2lh
bHM7CisgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9
LCBAeyRpbnRlcmZhY2UtPmFub255bW91c09wZXJhdGlvbnN9KSB7CisgICAgICAgIG15ICRzcGVj
aWFscyA9ICRvcGVyYXRpb24tPnNwZWNpYWxzOwogICAgICAgICBteSAkc3BlY2lhbEV4aXN0cyA9
IGdyZXAgeyAkXyBlcSAkc3BlY2lhbCB9IEAkc3BlY2lhbHM7Ci0gICAgICAgIG15ICRhcmd1bWVu
dHMgPSAkZnVuY3Rpb24tPmFyZ3VtZW50czsKKyAgICAgICAgbXkgJGFyZ3VtZW50cyA9ICRvcGVy
YXRpb24tPmFyZ3VtZW50czsKICAgICAgICAgaWYgKCRzcGVjaWFsRXhpc3RzIGFuZCBzY2FsYXIo
QCRhcmd1bWVudHMpID09ICRudW1iZXJPZlBhcmFtZXRlcnMgYW5kICRhcmd1bWVudHMtPlswXS0+
dHlwZS0+bmFtZSBlcSAkZmlyc3RQYXJhbWV0ZXJUeXBlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
JGZ1bmN0aW9uOworICAgICAgICAgICAgcmV0dXJuICRvcGVyYXRpb247CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTEwMDgsMTAgKzEwMDUsMTAgQEAgc3ViIE5lZWRzU2V0dGluZ3NDaGVja0ZvclBy
b3RvdHlwZVByb3BlcgogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKIAotICAgIGZvcmVh
Y2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgbmV4
dCBpZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsK
KyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsK
KyAgICAgICAgbmV4dCBpZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwg
JG9wZXJhdGlvbik7CiAKLSAgICAgICAgcmV0dXJuIDEgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfTsKKyAgICAgICAgcmV0dXJuIDEgaWYgJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5U2V0dGluZ307CiAgICAgfQogCiAg
ICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CkBA
IC0xMDI1LDE2ICsxMDIyLDE1IEBAIHN1YiBOZWVkc1NldHRpbmdzQ2hlY2tGb3JQcm90b3R5cGVQ
cm9wZXIKICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZXMtb3BlcmF0aW9ucwog
c3ViIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZQogewotICAgIG15ICRpbnRlcmZhY2UgPSBz
aGlmdDsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAoJGludGVyZmFjZSwgJG9w
ZXJhdGlvbikgPSBAXzsKIAogICAgIHJldHVybiAxIGlmIElzR2xvYmFsT3JQcmltYXJ5R2xvYmFs
SW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogCiAgICAgIyBGSVhNRTogVGhlIGJpbmRpbmdzIGdlbmVy
YXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRpbmcgcnVudGltZS1lbmFibGVkIG9wZXJhdGlvbnMg
b24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0IGZvciBnbG9iYWwgb2JqZWN0cykuCi0gICAgcmV0
dXJuIDAgaWYgTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9uKTsKKyAgICByZXR1cm4gMCBpZiBO
ZWVkc1J1bnRpbWVDaGVjaygkb3BlcmF0aW9uKTsKIAogICAgICMgW1VuZm9yZ2VhYmxlXSBvcGVy
YXRpb25zIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2UuIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5p
by93ZWJpZGwvI1VuZm9yZ2VhYmxlCi0gICAgcmV0dXJuIDEgaWYgSXNVbmZvcmdlYWJsZSgkaW50
ZXJmYWNlLCAkZnVuY3Rpb24pOworICAgIHJldHVybiAxIGlmIElzVW5mb3JnZWFibGUoJGludGVy
ZmFjZSwgJG9wZXJhdGlvbik7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwNTcsNjAgKzEwNTMs
NjAgQEAgc3ViIEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRyaWJ1dGUKICAgICByZXR1cm4gKEBzcGVj
aWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxzKSA6ICIwIjsKIH0KIAotc3ViIEdldElu
ZGV4ZWRHZXR0ZXJGdW5jdGlvbgorc3ViIEdldEluZGV4ZWRHZXR0ZXJPcGVyYXRpb24KIHsKICAg
ICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0dXJuIEdldFNwZWNpYWxBY2Nlc3NvckZ1
bmN0aW9uRm9yVHlwZSgkaW50ZXJmYWNlLCAiZ2V0dGVyIiwgInVuc2lnbmVkIGxvbmciLCAxKTsK
KyAgICByZXR1cm4gR2V0U3BlY2lhbEFjY2Vzc29yT3BlcmF0aW9uRm9yVHlwZSgkaW50ZXJmYWNl
LCAiZ2V0dGVyIiwgInVuc2lnbmVkIGxvbmciLCAxKTsKIH0KIAotc3ViIEdldEluZGV4ZWRTZXR0
ZXJGdW5jdGlvbgorc3ViIEdldEluZGV4ZWRTZXR0ZXJPcGVyYXRpb24KIHsKICAgICBteSAkaW50
ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0dXJuIEdldFNwZWNpYWxBY2Nlc3NvckZ1bmN0aW9uRm9y
VHlwZSgkaW50ZXJmYWNlLCAic2V0dGVyIiwgInVuc2lnbmVkIGxvbmciLCAyKTsKKyAgICByZXR1
cm4gR2V0U3BlY2lhbEFjY2Vzc29yT3BlcmF0aW9uRm9yVHlwZSgkaW50ZXJmYWNlLCAic2V0dGVy
IiwgInVuc2lnbmVkIGxvbmciLCAyKTsKIH0KIAotc3ViIEdldE5hbWVkR2V0dGVyRnVuY3Rpb24K
K3N1YiBHZXROYW1lZEdldHRlck9wZXJhdGlvbgogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlm
dDsKLSAgICByZXR1cm4gR2V0U3BlY2lhbEFjY2Vzc29yRnVuY3Rpb25Gb3JUeXBlKCRpbnRlcmZh
Y2UsICJnZXR0ZXIiLCAiRE9NU3RyaW5nIiwgMSk7CisgICAgcmV0dXJuIEdldFNwZWNpYWxBY2Nl
c3Nvck9wZXJhdGlvbkZvclR5cGUoJGludGVyZmFjZSwgImdldHRlciIsICJET01TdHJpbmciLCAx
KTsKIH0KIAotc3ViIEdldE5hbWVkU2V0dGVyRnVuY3Rpb24KK3N1YiBHZXROYW1lZFNldHRlck9w
ZXJhdGlvbgogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gR2V0U3Bl
Y2lhbEFjY2Vzc29yRnVuY3Rpb25Gb3JUeXBlKCRpbnRlcmZhY2UsICJzZXR0ZXIiLCAiRE9NU3Ry
aW5nIiwgMik7CisgICAgcmV0dXJuIEdldFNwZWNpYWxBY2Nlc3Nvck9wZXJhdGlvbkZvclR5cGUo
JGludGVyZmFjZSwgInNldHRlciIsICJET01TdHJpbmciLCAyKTsKIH0KIAotc3ViIEdldE5hbWVk
RGVsZXRlckZ1bmN0aW9uCitzdWIgR2V0TmFtZWREZWxldGVyT3BlcmF0aW9uCiB7CiAgICAgbXkg
JGludGVyZmFjZSA9IHNoaWZ0OwotICAgIHJldHVybiBHZXRTcGVjaWFsQWNjZXNzb3JGdW5jdGlv
bkZvclR5cGUoJGludGVyZmFjZSwgImRlbGV0ZXIiLCAiRE9NU3RyaW5nIiwgMSk7CisgICAgcmV0
dXJuIEdldFNwZWNpYWxBY2Nlc3Nvck9wZXJhdGlvbkZvclR5cGUoJGludGVyZmFjZSwgImRlbGV0
ZXIiLCAiRE9NU3RyaW5nIiwgMSk7CiB9CiAKLXN1YiBJbnN0YW5jZUZ1bmN0aW9uQ291bnQKK3N1
YiBJbnN0YW5jZU9wZXJhdGlvbkNvdW50CiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0Owog
ICAgIG15ICRjb3VudCA9IDA7CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJm
YWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICRjb3VudCsrIGlmIE9wZXJhdGlvblNob3VsZEJl
T25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOworICAgIGZvcmVhY2ggbXkgJG9wZXJh
dGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgeworICAgICAgICAkY291bnQrKyBpZiBP
cGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAgICAg
fQogCiAgICAgcmV0dXJuICRjb3VudDsKIH0KIAotc3ViIFByb3RvdHlwZUZ1bmN0aW9uQ291bnQK
K3N1YiBQcm90b3R5cGVPcGVyYXRpb25Db3VudAogewogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlm
dDsKICAgICBteSAkY291bnQgPSAwOwogCi0gICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGlu
dGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAkY291bnQrKyBpZiAhJGZ1bmN0aW9uLT5p
c1N0YXRpYyAmJiAhT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRmdW5j
dGlvbik7CisgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlv
bnN9KSB7CisgICAgICAgICRjb3VudCsrIGlmICEkb3BlcmF0aW9uLT5pc1N0YXRpYyAmJiAhT3Bl
cmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogICAgIH0K
IAotICAgICRjb3VudCArPSBzY2FsYXIgQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25z
fSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKLSAgICAkY291bnQgKz0gc2NhbGFyIEB7JGludGVy
ZmFjZS0+bWFwTGlrZS0+ZnVuY3Rpb25zfSBpZiAkaW50ZXJmYWNlLT5tYXBMaWtlOwotICAgICRj
b3VudCArPSBzY2FsYXIgQHskaW50ZXJmYWNlLT5zZXJpYWxpemFibGUtPmZ1bmN0aW9uc30gaWYg
JGludGVyZmFjZS0+c2VyaWFsaXphYmxlOworICAgICRjb3VudCArPSBzY2FsYXIgQHskaW50ZXJm
YWNlLT5pdGVyYWJsZS0+b3BlcmF0aW9uc30gaWYgJGludGVyZmFjZS0+aXRlcmFibGU7CisgICAg
JGNvdW50ICs9IHNjYWxhciBAeyRpbnRlcmZhY2UtPm1hcExpa2UtPm9wZXJhdGlvbnN9IGlmICRp
bnRlcmZhY2UtPm1hcExpa2U7CisgICAgJGNvdW50ICs9IHNjYWxhciBAeyRpbnRlcmZhY2UtPnNl
cmlhbGl6YWJsZS0+b3BlcmF0aW9uc30gaWYgJGludGVyZmFjZS0+c2VyaWFsaXphYmxlOwogCiAg
ICAgcmV0dXJuICRjb3VudDsKIH0KQEAgLTExMjIsNyArMTExOCw3IEBAIHN1YiBJbnN0YW5jZVBy
b3BlcnR5Q291bnQKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0
cmlidXRlc30pIHsKICAgICAgICAgJGNvdW50KysgaWYgQXR0cmlidXRlU2hvdWxkQmVPbkluc3Rh
bmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAgIH0KLSAgICAkY291bnQgKz0gSW5zdGFu
Y2VGdW5jdGlvbkNvdW50KCRpbnRlcmZhY2UpOworICAgICRjb3VudCArPSBJbnN0YW5jZU9wZXJh
dGlvbkNvdW50KCRpbnRlcmZhY2UpOwogICAgIHJldHVybiAkY291bnQ7CiB9CiAKQEAgLTExMzMs
NyArMTEyOSw3IEBAIHN1YiBQcm90b3R5cGVQcm9wZXJ0eUNvdW50CiAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgICRjb3VudCsr
IGlmICFBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7
CiAgICAgfQotICAgICRjb3VudCArPSBQcm90b3R5cGVGdW5jdGlvbkNvdW50KCRpbnRlcmZhY2Up
OworICAgICRjb3VudCArPSBQcm90b3R5cGVPcGVyYXRpb25Db3VudCgkaW50ZXJmYWNlKTsKICAg
ICAkY291bnQrKyBpZiBOZWVkc0NvbnN0cnVjdG9yUHJvcGVydHkoJGludGVyZmFjZSk7CiAgICAg
cmV0dXJuICRjb3VudDsKIH0KQEAgLTExNDQsOCArMTE0MCw4IEBAIHN1YiBJbnN0YW5jZU92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdAogICAgIHJldHVybiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3R9CiAgICAgICAgIHx8ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkR2V0dGVyfQogICAgICAgICB8fCAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0N1c3RvbUdldE93blByb3BlcnR5U2xv
dEFuZERlc2NyaXB0b3J9Ci0gICAgICAgIHx8IEdldEluZGV4ZWRHZXR0ZXJGdW5jdGlvbigkaW50
ZXJmYWNlKQotICAgICAgICB8fCBHZXROYW1lZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwor
ICAgICAgICB8fCBHZXRJbmRleGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpCisgICAgICAg
IHx8IEdldE5hbWVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogfQogCiBzdWIgSW5zdGFu
Y2VPdmVycmlkZXNQdXQKQEAgLTExNTMsOCArMTE0OSw4IEBAIHN1YiBJbnN0YW5jZU92ZXJyaWRl
c1B1dAogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICByZXR1cm4gJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRTZXR0ZXJ9CiAgICAgICAgIHx8ICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUluZGV4ZWRTZXR0ZXJ9Ci0gICAgICAg
IHx8IEdldEluZGV4ZWRTZXR0ZXJGdW5jdGlvbigkaW50ZXJmYWNlKQotICAgICAgICB8fCBHZXRO
YW1lZFNldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOworICAgICAgICB8fCBHZXRJbmRleGVkU2V0
dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpCisgICAgICAgIHx8IEdldE5hbWVkU2V0dGVyT3BlcmF0
aW9uKCRpbnRlcmZhY2UpOwogfQogCiBzdWIgUHJvdG90eXBlSGFzU3RhdGljUHJvcGVydHlUYWJs
ZQpAQCAtMTc1Myw3ICsxNzQ5LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICBteSAkbnVt
Q29uc3RhbnRzID0gQHskaW50ZXJmYWNlLT5jb25zdGFudHN9OwogICAgIG15ICRudW1BdHRyaWJ1
dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsKLSAgICBteSAkbnVtRnVuY3Rpb25zID0g
QHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OworICAgIG15ICRudW1PcGVyYXRpb25zID0gQHskaW50
ZXJmYWNlLT5vcGVyYXRpb25zfTsKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbm5hbWVz
cGFjZSBXZWJDb3JlIHtcblxuIik7CiAKQEAgLTE4NDUsMTMgKzE4NDEsMTMgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKICAgICAkaGVhZGVyVHJhaWxpbmdJbmNsdWRlc3siJHtjbGFzc05hbWV9Q3Vz
dG9tLmgifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNDdXN0b21I
ZWFkZXJ9OwogCi0gICAgbXkgJG5hbWVkR2V0dGVyRnVuY3Rpb24gPSBHZXROYW1lZEdldHRlckZ1
bmN0aW9uKCRpbnRlcmZhY2UpOwotICAgIG15ICRpbmRleGVkR2V0dGVyRnVuY3Rpb24gPSBHZXRJ
bmRleGVkR2V0dGVyRnVuY3Rpb24oJGludGVyZmFjZSk7CisgICAgbXkgJG5hbWVkR2V0dGVyT3Bl
cmF0aW9uID0gR2V0TmFtZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CisgICAgbXkgJGlu
ZGV4ZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRleGVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZh
Y2UpOwogCi0gICAgbXkgJGhhc05hbWVkR2V0dGVyID0gJG5hbWVkR2V0dGVyRnVuY3Rpb24KKyAg
ICBteSAkaGFzTmFtZWRHZXR0ZXIgPSAkbmFtZWRHZXR0ZXJPcGVyYXRpb24KICAgICAgICAgfHwg
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRHZXR0ZXJ9OwogCi0g
ICAgbXkgJGhhc0NvbXBsZXhHZXR0ZXIgPSAkaW5kZXhlZEdldHRlckZ1bmN0aW9uCisgICAgbXkg
JGhhc0NvbXBsZXhHZXR0ZXIgPSAkaW5kZXhlZEdldHRlck9wZXJhdGlvbgogICAgICAgICB8fCAk
aW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0N1c3RvbUdldE93blByb3BlcnR5U2xv
dEFuZERlc2NyaXB0b3J9CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xvdH0KICAgICAgICAgfHwgJGhhc05hbWVkR2V0dGVy
OwpAQCAtMTk0Myw3ICsxOTM5LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgfQogCiAgICAg
IyBDdXN0b20gZ2V0T3duUHJvcGVydHlOYW1lcyBmdW5jdGlvbgotICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eX0gfHwgJGluZGV4
ZWRHZXR0ZXJGdW5jdGlvbiB8fCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgeworICAgIGlmICgkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eX0gfHwg
JGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24gfHwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uKSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJvcGVydHlO
YW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZUFy
cmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6OkVudW1lcmF0aW9uTW9kZSgpKTtcbiIp
OwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyJ9ID0gMTsgICAgICAgCiAgICAgfQpAQCAtMTk3MSwxMCArMTk2NywxMCBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKICAgICAjIFNlcmlhbGl6ZXIgZnVuY3Rpb24uCiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VyaWFsaXplKEpTQzo6RXhlY1N0YXRl
KiwgSlMke2ludGVyZmFjZU5hbWV9KiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKTtcbiIp
IGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKIAotICAgIG15ICRudW1DdXN0b21GdW5jdGlv
bnMgPSAwOworICAgIG15ICRudW1DdXN0b21PcGVyYXRpb25zID0gMDsKICAgICBteSAkbnVtQ3Vz
dG9tQXR0cmlidXRlcyA9IDA7CiAKLSAgICBteSAkaGFzRm9yd2FyZERlY2xhcmluZ0Z1bmN0aW9u
cyA9IDA7CisgICAgbXkgJGhhc0ZvcndhcmREZWNsYXJpbmdPcGVyYXRpb25zID0gMDsKICAgICBt
eSAkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMgPSAwOwogCiAgICAgbXkgJGhhc0RPTUpJ
VEF0dHJpYnV0ZXMgPSAwOwpAQCAtMjA0NiwxOSArMjA0MiwxOSBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRl
cmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgJG51bUN1c3RvbUZ1bmN0aW9ucysrIGlmIEhh
c0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICRo
YXNGb3J3YXJkRGVjbGFyaW5nRnVuY3Rpb25zID0gMSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OworICAgIGZvcmVhY2ggbXkgJG9wZXJh
dGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgeworICAgICAgICAkbnVtQ3VzdG9tT3Bl
cmF0aW9ucysrIGlmIEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMpOworICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmluZ09wZXJhdGlvbnMgPSAxIGlmICRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OwogICAg
IH0KIAotICAgIGlmICgkbnVtQ3VzdG9tRnVuY3Rpb25zID4gMCkgeworICAgIGlmICgkbnVtQ3Vz
dG9tT3BlcmF0aW9ucyA+IDApIHsKICAgICAgICAgbXkgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4gICAgLy8gQ3VzdG9tIGZ1bmN0aW9uc1xu
Iik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9u
c30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzIEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+e292
ZXJsb2Fkc30gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gIT0gMTsKKyAgICAgICAgZm9y
ZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CisgICAgICAg
ICAgICBuZXh0IHVubGVzcyBIYXNDdXN0b21NZXRob2QoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKTsKKyAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYg
JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICE9IDE7CiAKLSAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgeworICAgICAgICAg
ICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkg
ewogICAgICAgICAgICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKICAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFk
ZXJGaWxlcyk7CiAgICAgICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMTsKQEAg
LTIwNjgsMTYgKzIwNjQsMTYgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICAgICAg
JGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBteSAk
Y29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0
cmluZygkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
ZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbik7CiAgICAg
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxl
bWVudGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50
ZWRBc30gfHwgJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKTsKKyAg
ICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRvcGVyYXRpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19s
Y2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpOwogCiAgICAgICAgICAgICBteSBAZnVuY3Rpb25Bcmd1
bWVudHMgPSAoKTsKICAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQXJndW1lbnRzLCAiSlNDOjpF
eGVjU3RhdGUmIik7Ci0gICAgICAgICAgICBwdXNoKEBmdW5jdGlvbkFyZ3VtZW50cywgIlJlZjxE
ZWZlcnJlZFByb21pc2U+JiYiKSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkZnVu
Y3Rpb24tPnR5cGUpICYmICEkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JldHVybnNP
d25Qcm9taXNlfTsKKyAgICAgICAgICAgIHB1c2goQGZ1bmN0aW9uQXJndW1lbnRzLCAiUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiIpIGlmICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVy
YXRpb24tPnR5cGUpICYmICEkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntSZXR1cm5z
T3duUHJvbWlzZX07CiAKLSAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgIiAu
ICgkZnVuY3Rpb24tPmlzU3RhdGljID8gInN0YXRpYyAiIDogIiIpIC4gIkpTQzo6SlNWYWx1ZSAi
IC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIigiIC4gam9pbigiLCAiLCBAZnVuY3Rp
b25Bcmd1bWVudHMpIC4gIik7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgIiAuICgkb3BlcmF0aW9uLT5pc1N0YXRpYyA/ICJzdGF0aWMgIiA6ICIiKSAuICJKU0M6
OkpTVmFsdWUgIiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoIiAuIGpvaW4oIiwg
IiwgQGZ1bmN0aW9uQXJndW1lbnRzKSAuICIpO1xuIik7CiAKICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAg
fQpAQCAtMjE4NSwxNCArMjE4MSwxNCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIEdlbmVy
YXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBoZWFkZXJDb250ZW50LCAkY2xhc3NOYW1lLCAkaW50
ZXJmYWNlKSBpZiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uKCRpbnRlcmZhY2UpOwog
Ci0gICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nRnVuY3Rpb25zKSB7CisgICAgaWYgKCRoYXNG
b3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucykgewogICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdo
dCA9IDA7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsK
LSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkg
ewotICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVu
Y3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9OworICAg
ICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsK
KyAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRvcGVy
YXRpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CisgICAgICAgICAgICBuZXh0IHVubGVzcyAkb3Bl
cmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKIAot
ICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5
cmlnaHR9KSB7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57QXBwbGVDb3B5cmlnaHR9KSB7CiAgICAgICAgICAgICAgICAgaWYgKCEkaW5BcHBsZUNvcHly
aWdodCkgewogICAgICAgICAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAkYmVnaW5B
cHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKICAgICAgICAgICAgICAgICAgICAgJGluQXBw
bGVDb3B5cmlnaHQgPSAxOwpAQCAtMjIwMiwxMCArMjE5OCwxMCBAQCBzdWIgR2VuZXJhdGVIZWFk
ZXIKICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA9IEdldENvbmRpdGlvbmFs
Rm9yRnVuY3Rpb25Db25zaWRlcmluZ092ZXJsb2FkcygkZnVuY3Rpb24pOworICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsQXR0cmlidXRlID0gR2V0Q29uZGl0aW9uYWxGb3JPcGVyYXRpb25Db25z
aWRlcmluZ092ZXJsb2Fkcygkb3BlcmF0aW9uKTsKICAgICAgICAgICAgIG15ICRjb25kaXRpb25h
bFN0cmluZyA9ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA/ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0
ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbEF0dHJpYnV0
ZSkgOiB1bmRlZjsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15
ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwg
JGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5h
bWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVu
Y3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0K
QEAgLTIzMTEsNyArMjMwNyw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogCiBzdWIgR2VuZXJhdGVQ
cm9wZXJ0aWVzSGFzaFRhYmxlCiB7Ci0gICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2UsICRpc0lu
c3RhbmNlLCAkaGFzaEtleXMsICRoYXNoU3BlY2lhbHMsICRoYXNoVmFsdWUxLCAkaGFzaFZhbHVl
MiwgJGNvbmRpdGlvbmFscywgJHJ1bnRpbWVFbmFibGVkRnVuY3Rpb25zLCAkcnVudGltZUVuYWJs
ZWRBdHRyaWJ1dGVzLCAkc2V0dGluZ3NFbmFibGVkRnVuY3Rpb25zLCAkc2V0dGluZ3NFbmFibGVk
QXR0cmlidXRlcykgPSBAXzsKKyAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGlzSW5zdGFu
Y2UsICRoYXNoS2V5cywgJGhhc2hTcGVjaWFscywgJGhhc2hWYWx1ZTEsICRoYXNoVmFsdWUyLCAk
Y29uZGl0aW9uYWxzLCAkcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCAkcnVudGltZUVuYWJsZWRB
dHRyaWJ1dGVzLCAkc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucywgJHNldHRpbmdzRW5hYmxlZEF0
dHJpYnV0ZXMpID0gQF87CiAKICAgICAjIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgZnVuY3Rpb25z
IG9uICRpbnRlcmZhY2UuCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBl
LT5uYW1lOwpAQCAtMjM3OSw0OCArMjM3NSw0OCBAQCBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFz
aFRhYmxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBteSBAZnVuY3Rpb25zID0gQHskaW50ZXJm
YWNlLT5mdW5jdGlvbnN9OwotICAgIHB1c2goQGZ1bmN0aW9ucywgQHskaW50ZXJmYWNlLT5pdGVy
YWJsZS0+ZnVuY3Rpb25zfSkgaWYgSXNLZXlWYWx1ZUl0ZXJhYmxlSW50ZXJmYWNlKCRpbnRlcmZh
Y2UpOwotICAgIHB1c2goQGZ1bmN0aW9ucywgQHskaW50ZXJmYWNlLT5tYXBMaWtlLT5mdW5jdGlv
bnN9KSBpZiAkaW50ZXJmYWNlLT5tYXBMaWtlOwotICAgIHB1c2goQGZ1bmN0aW9ucywgQHskaW50
ZXJmYWNlLT5zZXJpYWxpemFibGUtPmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6
YWJsZTsKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICBu
ZXh0IGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVy
fSBhbmQgbm90ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmll
cn0pOwotICAgICAgICBuZXh0IGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKTsKLSAgICAgICAgbmV4
dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZElu
ZGV4fSA+IDE7Ci0gICAgICAgIG5leHQgaWYgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRp
bnRlcmZhY2UsICRmdW5jdGlvbikgIT0gJGlzSW5zdGFuY2U7Ci0gICAgICAgIG5leHQgaWYgJGZ1
bmN0aW9uLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CisgICAgbXkgQG9wZXJhdGlvbnMg
PSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9OworICAgIHB1c2goQG9wZXJhdGlvbnMsIEB7JGlu
dGVyZmFjZS0+aXRlcmFibGUtPm9wZXJhdGlvbnN9KSBpZiBJc0tleVZhbHVlSXRlcmFibGVJbnRl
cmZhY2UoJGludGVyZmFjZSk7CisgICAgcHVzaChAb3BlcmF0aW9ucywgQHskaW50ZXJmYWNlLT5t
YXBMaWtlLT5vcGVyYXRpb25zfSkgaWYgJGludGVyZmFjZS0+bWFwTGlrZTsKKyAgICBwdXNoKEBv
cGVyYXRpb25zLCBAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+b3BlcmF0aW9uc30pIGlmICRp
bnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEBvcGVy
YXRpb25zKSB7CisgICAgICAgIG5leHQgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKKyAgICAgICAgbmV4dCBpZiAoJG9wZXJhdGlvbi0+
aXNTdGF0aWMpOworICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSAm
JiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOworICAgICAgICBuZXh0IGlmIE9wZXJh
dGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSAhPSAkaXNJbnN0
YW5jZTsKKyAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJh
dG9yXSI7CiAKICAgICAgICAgIyBHbG9iYWwgb2JqZWN0cyBhZGQgUnVudGltZUVuYWJsZWQgb3Bl
cmF0aW9ucyBhZnRlciBjcmVhdGlvbiBzbyBkbyBub3QgYWRkIHRoZW0gdG8gdGhlIHN0YXRpYyB0
YWJsZS4KLSAgICAgICAgaWYgKCRpc0luc3RhbmNlICYmIE5lZWRzUnVudGltZUNoZWNrKCRmdW5j
dGlvbikpIHsKKyAgICAgICAgaWYgKCRpc0luc3RhbmNlICYmIE5lZWRzUnVudGltZUNoZWNrKCRv
cGVyYXRpb24pKSB7CiAgICAgICAgICAgICAkcHJvcGVydHlDb3VudCAtPSAxOwogICAgICAgICAg
ICAgbmV4dDsKICAgICAgICAgfQogCi0gICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5uYW1l
OworICAgICAgICBteSAkbmFtZSA9ICRvcGVyYXRpb24tPm5hbWU7CiAgICAgICAgIHB1c2goQCRo
YXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlv
bk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgbXkgJGZ1
bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3Bl
cmF0aW9uKTsKICAgICAgICAgcHVzaChAJGhhc2hWYWx1ZTEsICRmdW5jdGlvbk5hbWUpOwogCi0g
ICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7
CisgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRvcGVyYXRp
b24pOwogCi0gICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJ
VH0pIHsKLSAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAiJkRPTUpJVFNpZ25hdHVyZUZv
ciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntET01KSVR9KSB7CisgICAgICAgICAgICBwdXNoKEAkaGFzaFZhbHVlMiwgIiZET01K
SVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9y
LT5XS191Y2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOwogICAgICAgICB9CiAK
LSAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50
ZXJmYWNlLCAkZnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgQ29tcHV0
ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSk7CiAKLSAgICAgICAgbXkg
JGNvbmRpdGlvbmFsID0gR2V0Q29uZGl0aW9uYWxGb3JGdW5jdGlvbkNvbnNpZGVyaW5nT3Zlcmxv
YWRzKCRmdW5jdGlvbik7CisgICAgICAgIG15ICRjb25kaXRpb25hbCA9IEdldENvbmRpdGlvbmFs
Rm9yT3BlcmF0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMoJG9wZXJhdGlvbik7CiAgICAgICAgICRj
b25kaXRpb25hbHMtPnskbmFtZX0gPSAkY29uZGl0aW9uYWwgaWYgJGNvbmRpdGlvbmFsOwogCi0g
ICAgICAgIGlmIChOZWVkc1J1bnRpbWVDaGVjaygkZnVuY3Rpb24pKSB7Ci0gICAgICAgICAgICBw
dXNoKEAkcnVudGltZUVuYWJsZWRGdW5jdGlvbnMsICRmdW5jdGlvbik7CisgICAgICAgIGlmIChO
ZWVkc1J1bnRpbWVDaGVjaygkb3BlcmF0aW9uKSkgeworICAgICAgICAgICAgcHVzaChAJHJ1bnRp
bWVFbmFibGVkT3BlcmF0aW9ucywgJG9wZXJhdGlvbik7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewot
ICAgICAgICAgICAgcHVzaChAJHNldHRpbmdzRW5hYmxlZEZ1bmN0aW9ucywgJGZ1bmN0aW9uKTsK
KyAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNl
dHRpbmd9KSB7CisgICAgICAgICAgICBwdXNoKEAkc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucywg
JG9wZXJhdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI0NDgsNyArMjQ0NCw3IEBAIHN1
YiBDb21wdXRlRWZmZWN0aXZlT3ZlcmxvYWRTZXQKICAgICAgICAgfQogICAgIH07CiAKLSAgICBt
eSAkbSA9IExlbmd0aE9mTG9uZ2VzdEZ1bmN0aW9uUGFyYW1ldGVyTGlzdCgkb3ZlcmxvYWRzKTsK
KyAgICBteSAkbSA9IExlbmd0aE9mTG9uZ2VzdE9wZXJhdGlvblBhcmFtZXRlckxpc3QoJG92ZXJs
b2Fkcyk7CiAgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQgKEB7JG92ZXJsb2Fkc30pIHsKICAgICAg
ICAgbXkgJG4gPSBAeyRvdmVybG9hZC0+YXJndW1lbnRzfTsKICAgICAgICAgbXkgQHQ7CkBAIC0y
NTQ2LDcgKzI1NDIsNyBAQCBzdWIgQXJlVHlwZXNEaXN0aW5ndWlzaGFibGVGb3JPdmVybG9hZFJl
CiAjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlkbC8jZGZuLWRpc3Rpbmd1aXNoaW5nLWFy
Z3VtZW50LWluZGV4CiBzdWIgR2V0RGlzdGluZ3Vpc2hpbmdBcmd1bWVudEluZGV4CiB7Ci0gICAg
bXkgKCRmdW5jdGlvbiwgJFMpID0gQF87CisgICAgbXkgKCRvcGVyYXRpb24sICRTKSA9IEBfOwog
CiAgICAgIyBGSVhNRTogQ29uc2lkZXIgYWxsIHRoZSB0dXBsZXMsIG5vdCBqdXN0IHRoZSAyIGZp
cnN0IG9uZXM/CiAgICAgbXkgJGZpcnN0VHVwbGVUeXBlcyA9IEB7QHskU31bMF19WzFdOwpAQCAt
MjU1NCw3ICsyNTUwLDcgQEAgc3ViIEdldERpc3Rpbmd1aXNoaW5nQXJndW1lbnRJbmRleAogICAg
IGZvciAobXkgJGluZGV4ID0gMDsgJGluZGV4IDwgc2NhbGFyKEAkZmlyc3RUdXBsZVR5cGVzKTsg
JGluZGV4KyspIHsKICAgICAgICAgcmV0dXJuICRpbmRleCBpZiBBcmVUeXBlc0Rpc3Rpbmd1aXNo
YWJsZUZvck92ZXJsb2FkUmVzb2x1dGlvbihAeyRmaXJzdFR1cGxlVHlwZXN9WyRpbmRleF0sIEB7
JHNlY29uZFR1cGxlVHlwZXN9WyRpbmRleF0pOwogICAgIH0KLSAgICBkaWUgIlVuZGlzdGluZ3Vp
c2hhYmxlIG92ZXJsb2FkcyBmb3Igb3BlcmF0aW9uICIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiIHdp
dGggbGVuZ3RoOiAiIC4gc2NhbGFyKEAkZmlyc3RUdXBsZVR5cGVzKTsKKyAgICBkaWUgIlVuZGlz
dGluZ3Vpc2hhYmxlIG92ZXJsb2FkcyBmb3Igb3BlcmF0aW9uICIgLiAkb3BlcmF0aW9uLT5uYW1l
IC4gIiB3aXRoIGxlbmd0aDogIiAuIHNjYWxhcihAJGZpcnN0VHVwbGVUeXBlcyk7CiB9CiAKIHN1
YiBHZXRPdmVybG9hZFRoYXRNYXRjaGVzCkBAIC0yNTg1LDE0ICsyNTgxLDE0IEBAIHN1YiBHZXRP
dmVybG9hZFRoYXRNYXRjaGVzSWdub3JpbmdVbmlvblMKICAgICB9CiB9CiAKLXN1YiBHZXRDb25k
aXRpb25hbEZvckZ1bmN0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMKK3N1YiBHZXRDb25kaXRpb25h
bEZvck9wZXJhdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzCiB7Ci0gICAgbXkgJGZ1bmN0aW9uID0g
c2hpZnQ7CisgICAgbXkgJG9wZXJhdGlvbiA9IHNoaWZ0OwogCi0gICAgcmV0dXJuICRmdW5jdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9IHVubGVzcyAkZnVuY3Rpb24tPntv
dmVybG9hZHN9OworICAgIHJldHVybiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntD
b25kaXRpb25hbH0gdW5sZXNzICRvcGVyYXRpb24tPntvdmVybG9hZHN9OwogCiAgICAgbXkgJWNv
bmRpdGlvbnM7Ci0gICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQgKEB7JGZ1bmN0aW9uLT57b3Zlcmxv
YWRzfX0pIHsKKyAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAoQHskb3BlcmF0aW9uLT57b3Zlcmxv
YWRzfX0pIHsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gJG92ZXJsb2FkLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgICAgIHJldHVybiB1bmxlc3MgJGNvbmRpdGlv
bmFsOwogICAgICAgICAkY29uZGl0aW9uc3skY29uZGl0aW9uYWx9ID0gMTsKQEAgLTI2MDQsOSAr
MjYwMCw5IEBAIHN1YiBHZXRDb25kaXRpb25hbEZvckZ1bmN0aW9uQ29uc2lkZXJpbmcKICMgaHR0
cDovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1vdmVybG9hZHMKIHN1YiBHZW5lcmF0ZU92
ZXJsb2FkRGlzcGF0Y2hlcgogewotICAgIG15ICgkZnVuY3Rpb24sICRpbnRlcmZhY2UsICRvdmVy
bG9hZEZ1bmN0aW9uUHJlZml4LCAkZnVuY3Rpb25TaWduYXR1cmUpID0gQF87CisgICAgbXkgKCRv
cGVyYXRpb24sICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4LCAkZnVuY3Rpb25T
aWduYXR1cmUpID0gQF87CiAgICAgCi0gICAgbXkgJWFsbFNldHMgPSBDb21wdXRlRWZmZWN0aXZl
T3ZlcmxvYWRTZXQoJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSk7CisgICAgbXkgJWFsbFNldHMgPSBD
b21wdXRlRWZmZWN0aXZlT3ZlcmxvYWRTZXQoJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30pOwogCiAg
ICAgbXkgJGdlbmVyYXRlT3ZlcmxvYWRDYWxsSWZOZWNlc3NhcnkgPSBzdWIgewogICAgICAgICBt
eSAoJG92ZXJsb2FkLCAkY29uZGl0aW9uLCAkaW5jbHVkZSkgPSBAXzsKQEAgLTI2ODMsOSArMjY3
OSw5IEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcgogICAgICAgICByZXR1cm4gJHR5
cGUtPm5hbWUgZXEgImFueSI7CiAgICAgfTsKIAotICAgIG15ICRtYXhBcmdDb3VudCA9IExlbmd0
aE9mTG9uZ2VzdEZ1bmN0aW9uUGFyYW1ldGVyTGlzdCgkZnVuY3Rpb24tPntvdmVybG9hZHN9KTsK
KyAgICBteSAkbWF4QXJnQ291bnQgPSBMZW5ndGhPZkxvbmdlc3RPcGVyYXRpb25QYXJhbWV0ZXJM
aXN0KCRvcGVyYXRpb24tPntvdmVybG9hZHN9KTsKIAotICAgIG15ICRjb25kaXRpb25hbEF0dHJp
YnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yRnVuY3Rpb25Db25zaWRlcmluZ092ZXJsb2FkcygkZnVu
Y3Rpb24pOworICAgIG15ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA9IEdldENvbmRpdGlvbmFsRm9y
T3BlcmF0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMoJG9wZXJhdGlvbik7CiAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvbmRpdGlvbmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsQXR0
cmlidXRlKSA6IHVuZGVmOwogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIkZnVuY3Rpb25TaWduYXR1cmVcbiIpOwpAQCAtMjcwMyw3ICsyNjk5LDcgQEAgRU5ECiBF
TkQKICAgICAgICAgbXkgJFMgPSAkYWxsU2V0c3skbGVuZ3RofTsKICAgICAgICAgaWYgKHNjYWxh
cihAJFMpID4gMSkgewotICAgICAgICAgICAgbXkgJGQgPSBHZXREaXN0aW5ndWlzaGluZ0FyZ3Vt
ZW50SW5kZXgoJGZ1bmN0aW9uLCAkUyk7CisgICAgICAgICAgICBteSAkZCA9IEdldERpc3Rpbmd1
aXNoaW5nQXJndW1lbnRJbmRleCgkb3BlcmF0aW9uLCAkUyk7CiAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgSlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51
bmNoZWNrZWRBcmd1bWVudCgkZCk7XG4iKTsKIAogICAgICAgICAgICAgbXkgJG92ZXJsb2FkID0g
R2V0T3ZlcmxvYWRUaGF0TWF0Y2hlc0lnbm9yaW5nVW5pb25TdWJ0eXBlcygkUywgJGQsIFwmJGlz
T3B0aW9uYWxQYXJhbWV0ZXIpOwpAQCAtMjc3NSw3ICsyNzcxLDcgQEAgRU5ECiAgICAgfQogRU5E
CiAgICAgfQotICAgIG15ICRtaW5BcmdDb3VudCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlv
bik7CisgICAgbXkgJG1pbkFyZ0NvdW50ID0gR2V0RnVuY3Rpb25MZW5ndGgoJG9wZXJhdGlvbik7
CiAgICAgaWYgKCRtaW5BcmdDb3VudCA+IDApIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIGFyZ3NDb3VudCA8ICRtaW5BcmdDb3VudCA/IHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpO1xuIikKICAgICB9IGVsc2UgewpAQCAt
Mjc4OSwyOCArMjc4NSwyOCBAQCBFTkQKICMgQXMgcGVyIFdlYiBJREwgc3BlY2lmaWNhdGlvbiwg
dGhlIGxlbmd0aCBvZiBhIGZ1bmN0aW9uIE9iamVjdCBpcyBpdHMgbnVtYmVyIG9mIG1hbmRhdG9y
eSBwYXJhbWV0ZXJzLgogc3ViIEdldEZ1bmN0aW9uTGVuZ3RoCiB7Ci0gICAgbXkgJGZ1bmN0aW9u
ID0gc2hpZnQ7CisgICAgbXkgJG9wZXJhdGlvbiA9IHNoaWZ0OwogCiAgICAgbXkgJGdldE92ZXJs
b2FkTGVuZ3RoID0gc3ViIHsKLSAgICAgICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgICAg
IG15ICRvcGVyYXRpb24gPSBzaGlmdDsKIAogICAgICAgICBteSAkbGVuZ3RoID0gMDsKLSAgICAg
ICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAg
ICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvcGVyYXRpb24tPmFyZ3VtZW50c30pIHsKICAg
ICAgICAgICAgIGxhc3QgaWYgJGFyZ3VtZW50LT5pc09wdGlvbmFsIHx8ICRhcmd1bWVudC0+aXNW
YXJpYWRpYzsKICAgICAgICAgICAgICRsZW5ndGgrKzsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gJGxlbmd0aDsKICAgICB9OwogCi0gICAgbXkgJGxlbmd0aCA9ICYkZ2V0T3ZlcmxvYWRMZW5n
dGgoJGZ1bmN0aW9uKTsKLSAgICBmb3JlYWNoIG15ICRvdmVybG9hZCAoQHskZnVuY3Rpb24tPntv
dmVybG9hZHN9fSkgeworICAgIG15ICRsZW5ndGggPSAmJGdldE92ZXJsb2FkTGVuZ3RoKCRvcGVy
YXRpb24pOworICAgIGZvcmVhY2ggbXkgJG92ZXJsb2FkIChAeyRvcGVyYXRpb24tPntvdmVybG9h
ZHN9fSkgewogICAgICAgICBteSAkbmV3TGVuZ3RoID0gJiRnZXRPdmVybG9hZExlbmd0aCgkb3Zl
cmxvYWQpOwogICAgICAgICAkbGVuZ3RoID0gJG5ld0xlbmd0aCBpZiAkbmV3TGVuZ3RoIDwgJGxl
bmd0aDsKICAgICB9CiAgICAgcmV0dXJuICRsZW5ndGg7CiB9CiAKLXN1YiBMZW5ndGhPZkxvbmdl
c3RGdW5jdGlvblBhcmFtZXRlckxpc3QKK3N1YiBMZW5ndGhPZkxvbmdlc3RPcGVyYXRpb25QYXJh
bWV0ZXJMaXN0CiB7CiAgICAgbXkgKCRvdmVybG9hZHMpID0gQF87CiAgICAgbXkgJHJlc3VsdCA9
IDA7CkBAIC0yOTkwLDggKzI5ODYsOCBAQCBzdWIgYWRkVW5zY29wYWJsZVByb3BlcnRpZXMKICAg
ICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKICAgICBteSBAdW5zY29wYWJsZXM7Ci0gICAgZm9y
ZWFjaCBteSAkZnVuY3Rpb25PckF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9LCBA
eyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgIHB1c2goQHVuc2NvcGFibGVzLCAk
ZnVuY3Rpb25PckF0dHJpYnV0ZS0+bmFtZSkgaWYgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1Vuc2NvcGFibGV9OworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbk9y
QXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmF0dHJp
YnV0ZXN9KSB7CisgICAgICAgIHB1c2goQHVuc2NvcGFibGVzLCAkb3BlcmF0aW9uT3JBdHRyaWJ1
dGUtPm5hbWUpIGlmICRvcGVyYXRpb25PckF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
VW5zY29wYWJsZX07CiAgICAgfQogICAgIHJldHVybiBpZiBzY2FsYXIoQHVuc2NvcGFibGVzKSA9
PSAwOwogCkBAIC0zMDQ1LDcgKzMwNDEsNyBAQCBzdWIgSW50ZXJmYWNlTmVlZHNJdGVyYXRvcgog
ICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPm1hcExpa2U7CiAgICAgcmV0dXJuIDEgaWYgJGlu
dGVyZmFjZS0+aXRlcmFibGU7CiAKLSAgICBpZiAoR2V0SW5kZXhlZEdldHRlckZ1bmN0aW9uKCRp
bnRlcmZhY2UpKSB7CisgICAgaWYgKEdldEluZGV4ZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFj
ZSkpIHsKICAgICAgICAgbXkgJGxlbmd0aEF0dHJpYnV0ZSA9IEdldEF0dHJpYnV0ZVdpdGhOYW1l
KCRpbnRlcmZhY2UsICJsZW5ndGgiKTsKICAgICAgICAgcmV0dXJuIDEgaWYgJGxlbmd0aEF0dHJp
YnV0ZSBhbmQgJGNvZGVHZW5lcmF0b3ItPklzSW50ZWdlclR5cGUoJGxlbmd0aEF0dHJpYnV0ZS0+
dHlwZSk7CiAgICAgfQpAQCAtMzA2Nyw4ICszMDYzLDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICBteSAkZXZlbnRUYXJnZXQgPSAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRl
cmZhY2UoJGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0IikgJiYgJGludGVyZmFjZS0+dHlwZS0+bmFt
ZSBuZSAiRXZlbnRUYXJnZXQiOwogICAgIG15ICRuZWVkc1Zpc2l0Q2hpbGRyZW4gPSBJbnN0YW5j
ZU5lZWRzVmlzaXRDaGlsZHJlbigkaW50ZXJmYWNlKTsKIAotICAgIG15ICRuYW1lZEdldHRlckZ1
bmN0aW9uID0gR2V0TmFtZWRHZXR0ZXJGdW5jdGlvbigkaW50ZXJmYWNlKTsKLSAgICBteSAkaW5k
ZXhlZEdldHRlckZ1bmN0aW9uID0gR2V0SW5kZXhlZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2Up
OworICAgIG15ICRuYW1lZEdldHRlck9wZXJhdGlvbiA9IEdldE5hbWVkR2V0dGVyT3BlcmF0aW9u
KCRpbnRlcmZhY2UpOworICAgIG15ICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uID0gR2V0SW5kZXhl
ZEdldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKIAogICAgICMgLSBBZGQgZGVmYXVsdCBoZWFk
ZXIgdGVtcGxhdGUKICAgICBwdXNoKEBpbXBsQ29udGVudEhlYWRlciwgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbkNvbnRlbnRIZWFkZXIoJGludGVyZmFjZSkpOwpAQCAtMzA3Nyw3ICszMDczLDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmgifSA9IDE7CiAgICAgJGltcGxJbmNsdWRlc3siSlNET01XcmFwcGVyQ2Fj
aGUuaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyI8d3RmL0dldFB0ci5oPiJ9ID0gMTsKLSAg
ICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9Qcm9wZXJ0eU5hbWVBcnJheS5oPiJ9ID0gMSBpZiAk
aW5kZXhlZEdldHRlckZ1bmN0aW9uOworICAgICRpbXBsSW5jbHVkZXN7IjxydW50aW1lL1Byb3Bl
cnR5TmFtZUFycmF5Lmg+In0gPSAxIGlmICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uOwogCiAgICAg
bXkgJGltcGxUeXBlID0gR2V0SW1wbENsYXNzTmFtZSgkaW50ZXJmYWNlKTsKIApAQCAtMzA5MSwy
NyArMzA4NywyNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIHB1c2goQGltcGxD
b250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uc0ltcGxlbWVudGF0aW9uQ29udGVudCgkaW50ZXJm
YWNlLCAkZW51bWVyYXRpb25zKSk7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlRGlj
dGlvbmFyaWVzSW1wbGVtZW50YXRpb25Db250ZW50KCRpbnRlcmZhY2UsICRkaWN0aW9uYXJpZXMp
KTsKIAotICAgIG15IEBmdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc307Ci0gICAg
cHVzaChAZnVuY3Rpb25zLCBAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5mdW5jdGlvbnN9KSBpZiBJ
c0tleVZhbHVlSXRlcmFibGVJbnRlcmZhY2UoJGludGVyZmFjZSk7Ci0gICAgcHVzaChAZnVuY3Rp
b25zLCBAeyRpbnRlcmZhY2UtPm1hcExpa2UtPmZ1bmN0aW9uc30pIGlmICRpbnRlcmZhY2UtPm1h
cExpa2U7Ci0gICAgcHVzaChAZnVuY3Rpb25zLCBAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+
ZnVuY3Rpb25zfSkgaWYgJGludGVyZmFjZS0+c2VyaWFsaXphYmxlOworICAgIG15IEBvcGVyYXRp
b25zID0gQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfTsKKyAgICBwdXNoKEBvcGVyYXRpb25zLCBA
eyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5vcGVyYXRpb25zfSkgaWYgSXNLZXlWYWx1ZUl0ZXJhYmxl
SW50ZXJmYWNlKCRpbnRlcmZhY2UpOworICAgIHB1c2goQG9wZXJhdGlvbnMsIEB7JGludGVyZmFj
ZS0+bWFwTGlrZS0+b3BlcmF0aW9uc30pIGlmICRpbnRlcmZhY2UtPm1hcExpa2U7CisgICAgcHVz
aChAb3BlcmF0aW9ucywgQHskaW50ZXJmYWNlLT5zZXJpYWxpemFibGUtPm9wZXJhdGlvbnN9KSBp
ZiAkaW50ZXJmYWNlLT5zZXJpYWxpemFibGU7CiAKICAgICBteSBAYXR0cmlidXRlcyA9IEB7JGlu
dGVyZmFjZS0+YXR0cmlidXRlc307CiAgICAgcHVzaChAYXR0cmlidXRlcywgQHskaW50ZXJmYWNl
LT5tYXBMaWtlLT5hdHRyaWJ1dGVzfSkgaWYgJGludGVyZmFjZS0+bWFwTGlrZTsKIAogICAgIG15
ICRudW1Db25zdGFudHMgPSBAeyRpbnRlcmZhY2UtPmNvbnN0YW50c307Ci0gICAgbXkgJG51bUZ1
bmN0aW9ucyA9IEBmdW5jdGlvbnM7CisgICAgbXkgJG51bU9wZXJhdGlvbnMgPSBAb3BlcmF0aW9u
czsKICAgICBteSAkbnVtQXR0cmlidXRlcyA9IEBhdHRyaWJ1dGVzOwogCi0gICAgaWYgKCRudW1G
dW5jdGlvbnMgPiAwKSB7CisgICAgaWYgKCRudW1PcGVyYXRpb25zID4gMCkgewogICAgICAgICBt
eSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCIvLyBG
dW5jdGlvbnNcblxuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25z
KSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICYmICRm
dW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLSAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJkRGVjbGFyZUluSGVhZGVyfTsKLSAgICAg
ICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKKyAgICAg
ICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3BlcmF0aW9ucykgeworICAgICAgICAgICAgbmV4
dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2Fk
SW5kZXh9ID4gMTsKKyAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07CisgICAgICAgICAgICBuZXh0IGlmIElz
SlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogCi0gICAgICAgICAgICBpZiAoJGZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKKyAgICAgICAg
ICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBsZUNvcHlyaWdodH0p
IHsKICAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxlQ29weXJpZ2h0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRl
ckZpbGVzKTsKICAgICAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwpAQCAt
MzEyMSwxNiArMzExNywxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsQXR0cmlidXRlID0gR2V0Q29uZGl0aW9uYWxGb3JGdW5jdGlvbkNv
bnNpZGVyaW5nT3ZlcmxvYWRzKCRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxBdHRyaWJ1dGUgPSBHZXRDb25kaXRpb25hbEZvck9wZXJhdGlvbkNvbnNpZGVyaW5nT3Zlcmxv
YWRzKCRvcGVyYXRpb24pOwogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNv
bmRpdGlvbmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsQXR0cmlidXRlKSA6IHVuZGVmOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31c
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAg
ICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpF
eGVjU3RhdGUqKTtcbiIpOwotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57RE9NSklUfSkgeworICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJE
T01KSVRJRExUeXBlLmgifSA9IDE7CiAgICAgICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9u
TmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFt
ZSk7CiAgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU2lnbmF0dXJlID0gIkpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiAke3Vuc2FmZUZ1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3Rh
dGUqLCAkY2xhc3NOYW1lKiI7Ci0gICAgICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQg
KEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAk
YXJndW1lbnQgKEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAgICAgICAgICAgICAg
ICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKICAgICAgICAgICAgICAgICAgICAgbXkgJGFy
Z3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAg
ICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblNpZ25hdHVyZSAuPSAiLCAke2FyZ3VtZW50VHlw
ZX0iOwpAQCAtMzE3MywzMSArMzE2OSwzMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiAgICAgfQogCi0gICAgaWYgKCRudW1G
dW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25z
KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RPTUpJVH07CisgICAgaWYgKCRudW1PcGVyYXRpb25zID4gMCkgeworICAgICAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEBvcGVyYXRpb25zKSB7CisgICAgICAgICAgICBuZXh0IHVubGVz
cyAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OwogICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRlci5oIn0gPSAxOwogICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIn0gPSAxOwogCi0g
ICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBA
eyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIG15ICRpc092ZXJsb2Fk
ZWQgPSAkb3BlcmF0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRvcGVyYXRpb24tPntvdmVybG9hZHN9
fSA+IDE7CiAgICAgICAgICAgICBkaWUgIk92ZXJsb2FkcyBpcyBub3Qgc3VwcG9ydGVkIGluIERP
TUpJVCIgaWYgJGlzT3ZlcmxvYWRlZDsKLSAgICAgICAgICAgIGRpZSAiQ3VycmVudGx5IFJlYWRE
T00gdmFsdWUgaXMgb25seSBhbGxvd2VkIiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVk
QXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9
LCAiUmVhZERPTSIpOworICAgICAgICAgICAgZGllICJDdXJyZW50bHkgUmVhZERPTSB2YWx1ZSBp
cyBvbmx5IGFsbG93ZWQiIHVubGVzcyAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVD
b250YWlucygkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiUmVhZERP
TSIpOwogCiAgICAgICAgICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUt
Pm5hbWU7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkZnVuY3Rp
b25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRp
b24pOwogICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7Ci0gICAgICAgICAgICBteSAk
ZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+
dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7
CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJET01KSVRTaWduYXR1cmVG
b3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0
KCRvcGVyYXRpb24tPm5hbWUpOwogICAgICAgICAgICAgbXkgJGNsYXNzSW5mbyA9ICJKUyIgLiAk
aW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gIjo6aW5mbygpIjsKLSAgICAgICAgICAgIG15ICRyZXN1
bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkaW50ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUp
OworICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRl
cmZhY2UsICRvcGVyYXRpb24tPnR5cGUpOwogICAgICAgICAgICAgbXkgJGRvbUpJVFNpZ25hdHVy
ZUhlYWRlciA9ICJzdGF0aWMgY29uc3QgSlNDOjpET01KSVQ6OlNpZ25hdHVyZSAke2RvbUpJVFNp
Z25hdHVyZU5hbWV9KCh1aW50cHRyX3QpJHt1bnNhZmVGdW5jdGlvbk5hbWV9LCI7CiAgICAgICAg
ICAgICBteSAkZG9tSklUU2lnbmF0dXJlRm9vdGVyID0gIiRjbGFzc0luZm8sIEpTQzo6RE9NSklU
OjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpET00pLCAk
e3Jlc3VsdFR5cGV9IjsKLSAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5j
dGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7
JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAgICAgICAgICAgIG15ICR0eXBlID0gJGFy
Z3VtZW50LT50eXBlOwogICAgICAgICAgICAgICAgIG15ICRhcmd1bWVudFR5cGUgPSBHZXRBcmd1
bWVudFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJHR5cGUpOwogICAgICAgICAgICAgICAgICRkb21K
SVRTaWduYXR1cmVGb290ZXIgLj0gIiwgJHthcmd1bWVudFR5cGV9IjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICRkb21KSVRTaWduYXR1cmVGb290ZXIgLj0gIik7IjsKLSAgICAgICAgICAg
IG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcg
PSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkb3BlcmF0aW9uKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9
XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiRkb21KSVRTaWduYXR1cmVIZWFkZXIgJGRvbUpJVFNpZ25hdHVyZUZvb3RlclxuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFs
U3RyaW5nOwpAQCAtMzIxNSw5ICszMjExLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICBteSBAaGFzaFNwZWNpYWxzID0gKCk7CiAgICAgbXkgJWNvbmRpdGlvbmFscyA9ICgpOwog
ICAgIG15ICRoYXNoTmFtZSA9ICRjbGFzc05hbWUgLiAiVGFibGUiOwotICAgIG15IEBydW50aW1l
RW5hYmxlZEZ1bmN0aW9ucyA9ICgpOworICAgIG15IEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMg
PSAoKTsKICAgICBteSBAcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzID0gKCk7Ci0gICAgbXkgQHNl
dHRpbmdzRW5hYmxlZEZ1bmN0aW9ucyA9ICgpOworICAgIG15IEBzZXR0aW5nc0VuYWJsZWRPcGVy
YXRpb25zID0gKCk7CiAgICAgbXkgQHNldHRpbmdzRW5hYmxlZEF0dHJpYnV0ZXMgPSAoKTsKIAog
ICAgICMgR2VuZXJhdGUgaGFzaCB0YWJsZSBmb3IgcHJvcGVydGllcyBvbiB0aGUgaW5zdGFuY2Uu
CkBAIC0zMjI1LDggKzMyMjEsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICBcQGhhc2hLZXlzLCBcQGhhc2hTcGVjaWFscywKICAgICAgICAgXEBoYXNoVmFsdWUxLCBcQGhh
c2hWYWx1ZTIsCiAgICAgICAgIFwlY29uZGl0aW9uYWxzLAotICAgICAgICBcQHJ1bnRpbWVFbmFi
bGVkRnVuY3Rpb25zLCBcQHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcywKLSAgICAgICAgXEBzZXR0
aW5nc0VuYWJsZWRGdW5jdGlvbnMsIFxAc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcyk7CisgICAg
ICAgIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBcQHJ1bnRpbWVFbmFibGVkQXR0cmlidXRl
cywKKyAgICAgICAgXEBzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zLCBcQHNldHRpbmdzRW5hYmxl
ZEF0dHJpYnV0ZXMpOwogCiAgICAgJG9iamVjdC0+R2VuZXJhdGVIYXNoVGFibGUoJGhhc2hOYW1l
LCAkbnVtSW5zdGFuY2VQcm9wZXJ0aWVzLAogICAgICAgICBcQGhhc2hLZXlzLCBcQGhhc2hTcGVj
aWFscywKQEAgLTMyOTUsMjUgKzMyOTEsMjUgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICAgICAgICAgICRoYXNoU2l6ZSsrOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgbmV4
dCB1bmxlc3MgKCRmdW5jdGlvbi0+aXNTdGF0aWMpOwotICAgICAgICAgICAgbmV4dCBpZiAkZnVu
Y3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7
Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKKyAgICAgICAgZm9yZWFj
aCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CisgICAgICAgICAg
ICBuZXh0IHVubGVzcyAoJG9wZXJhdGlvbi0+aXNTdGF0aWMpOworICAgICAgICAgICAgbmV4dCBp
ZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5k
ZXh9ID4gMTsKKyAgICAgICAgICAgIG15ICRuYW1lID0gJG9wZXJhdGlvbi0+bmFtZTsKICAgICAg
ICAgICAgIHB1c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAKLSAgICAgICAgICAgIG15ICRmdW5jdGlv
bk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9u
KTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFs
dWUxLCAkZnVuY3Rpb25OYW1lKTsKIAotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0g
R2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBo
YXNoVmFsdWUyLCAiRE9NSklURnVuY3Rpb25Gb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAu
ICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSkpOworICAgICAgICAg
ICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJG9wZXJhdGlvbik7Cisg
ICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSkg
eworICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1ZTIsICJET01KSVRGdW5jdGlvbkZvciIg
LiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG9w
ZXJhdGlvbi0+bmFtZSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBw
dXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgpOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKSk7CisgICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1
dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJG9wZXJhdGlvbikpOwogCi0gICAgICAgICAg
ICBteSAkY29uZGl0aW9uYWwgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRp
dGlvbmFsfTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbCA9ICRvcGVyYXRpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKICAgICAgICAgICAgICRjb25kaXRpb25hbHN7
JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRpb25hbDsKIAogICAgICAgICAgICAgJGhh
c2hTaXplKys7CkBAIC0zMzQyLDkgKzMzMzgsOSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgIEBoYXNoVmFsdWUyID0gKCk7CiAgICAgQGhhc2hTcGVjaWFscyA9ICgpOwogICAgICVj
b25kaXRpb25hbHMgPSAoKTsKLSAgICBAcnVudGltZUVuYWJsZWRGdW5jdGlvbnMgPSAoKTsKKyAg
ICBAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zID0gKCk7CiAgICAgQHJ1bnRpbWVFbmFibGVkQXR0
cmlidXRlcyA9ICgpOwotICAgIEBzZXR0aW5nc0VuYWJsZWRGdW5jdGlvbnMgPSAoKTsKKyAgICBA
c2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucyA9ICgpOwogICAgIEBzZXR0aW5nc0VuYWJsZWRBdHRy
aWJ1dGVzID0gKCk7CiAKICAgICAjIEdlbmVyYXRlIGhhc2ggdGFibGUgZm9yIHByb3BlcnRpZXMg
b24gdGhlIHByb3RvdHlwZS4KQEAgLTMzNTIsOCArMzM0OCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxl
bWVudGF0aW9uCiAgICAgICAgIFxAaGFzaEtleXMsIFxAaGFzaFNwZWNpYWxzLAogICAgICAgICBc
QGhhc2hWYWx1ZTEsIFxAaGFzaFZhbHVlMiwKICAgICAgICAgXCVjb25kaXRpb25hbHMsCi0gICAg
ICAgIFxAcnVudGltZUVuYWJsZWRGdW5jdGlvbnMsIFxAcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVz
LAotICAgICAgICBcQHNldHRpbmdzRW5hYmxlZEZ1bmN0aW9ucywgXEBzZXR0aW5nc0VuYWJsZWRB
dHRyaWJ1dGVzKTsKKyAgICAgICAgXEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnMsIFxAcnVudGlt
ZUVuYWJsZWRBdHRyaWJ1dGVzLAorICAgICAgICBcQHNldHRpbmdzRW5hYmxlZE9wZXJhdGlvbnMs
IFxAc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcyk7CiAKICAgICBteSAkaGFzaFNpemUgPSAkbnVt
UHJvdG90eXBlUHJvcGVydGllczsKIApAQCAtMzM5NiwxMyArMzM5MiwxMyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCAke2NsYXNzTmFtZX1Qcm90b3R5cGVUYWJsZVZhbHVl
cywgKnRoaXMpO1xuIik7CiAKLSAgICAgICAgbXkgQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcyA9
IEBydW50aW1lRW5hYmxlZEZ1bmN0aW9uczsKKyAgICAgICAgbXkgQHJ1bnRpbWVFbmFibGVkUHJv
cGVydGllcyA9IEBydW50aW1lRW5hYmxlZE9wZXJhdGlvbnM7CiAgICAgICAgIHB1c2goQHJ1bnRp
bWVFbmFibGVkUHJvcGVydGllcywgQHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcyk7Ci0gICAgICAg
IGZvcmVhY2ggbXkgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUgKEBydW50aW1lRW5hYmxlZFByb3BlcnRp
ZXMpIHsKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9y
LT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbk9yQXR0cmlidXRlKTsKKyAgICAg
ICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUgKEBydW50aW1lRW5hYmxlZFByb3Bl
cnRpZXMpIHsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJh
dG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb25PckF0dHJpYnV0ZSk7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVD
b25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
KCRmdW5jdGlvbk9yQXR0cmlidXRlKTsKLSAgICAgICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9u
T3JBdHRyaWJ1dGUtPm5hbWU7CisgICAgICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJG9wZXJh
dGlvbk9yQXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15ICRuYW1lID0gJG9wZXJhdGlvbk9yQXR0
cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCEk
e3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwogICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRu
YW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKQEAgLTM0MTEs
MTkgKzM0MDcsMTkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAg
ICAgIH0KIAotICAgICAgICBteSBAc2V0dGluZ3NFbmFibGVkUHJvcGVydGllcyA9IEBzZXR0aW5n
c0VuYWJsZWRGdW5jdGlvbnM7CisgICAgICAgIG15IEBzZXR0aW5nc0VuYWJsZWRQcm9wZXJ0aWVz
ID0gQHNldHRpbmdzRW5hYmxlZE9wZXJhdGlvbnM7CiAgICAgICAgIHB1c2goQHNldHRpbmdzRW5h
YmxlZFByb3BlcnRpZXMsIEBzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzKTsKICAgICAgICAgaWYg
KHNjYWxhcihAc2V0dGluZ3NFbmFibGVkUHJvcGVydGllcykpIHsKICAgICAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvKiBjb250ZXh0ID0gZ2xvYmFsT2JqZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKCFj
b250ZXh0IHx8IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7XG4iKTsKICAgICAgICAgICAgIAotICAg
ICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb25PckF0dHJpYnV0ZSAoQHNldHRpbmdzRW5hYmxl
ZFByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAk
Y29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb25PckF0dHJp
YnV0ZSk7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb25PckF0dHJpYnV0ZSAoQHNl
dHRpbmdzRW5hYmxlZFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkb3Bl
cmF0aW9uT3JBdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKLSAg
ICAgICAgICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24gPSBUb01ldGhvZE5hbWUoJGZ1bmN0aW9u
T3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSAuICJF
bmFibGVkIjsKLSAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbk9yQXR0cmlidXRl
LT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IFRvTWV0aG9kTmFt
ZSgkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNl
dHRpbmd9KSAuICJFbmFibGVkIjsKKyAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRvcGVyYXRp
b25PckF0dHJpYnV0ZS0+bmFtZTsKIAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGlmICghY29udGV4dCB8fCAhZG93bmNhc3Q8RG9jdW1lbnQ+KCpjb250ZXh0KS5zZXR0
aW5ncygpLiR7ZW5hYmxlRnVuY3Rpb259KCkpIHtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oXCIkbmFt
ZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CkBAIC0zNDM1LDEyICszNDMxLDEyIEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAg
ICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0g
ICAgICAgICAgICBuZXh0IHVubGVzcyAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQ
cml2YXRlSWRlbnRpZmllcn0pOworICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGlu
dGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgICAgIG5leHQgdW5sZXNzICgkb3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0pOwogICAgICAgICAg
ICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOwotICAgICAgICAg
ICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0
aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb24p
OwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5j
bGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbi0+bmFtZSAuICJQcml2YXRl
TmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmco
KSwgIiAuIEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24p
IC4gIiksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4o
dm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLiIgLiAkb3BlcmF0aW9uLT5uYW1lIC4gIlBy
aXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0
cmluZygpLCAiIC4gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVy
YXRpb24pIC4gIiksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAg
ICB9CiAKQEAgLTM1NjksMjMgKzM1NjUsMjMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24K
ICAgICB9CiAKICAgICAjIFN1cHBvcnQgZm9yIFJ1bnRpbWVFbmFibGVkIG9wZXJhdGlvbnMgb24g
aW5zdGFuY2VzLgotICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0
aW9uc30pIHsKLSAgICAgICAgbmV4dCB1bmxlc3MgTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9u
KTsKLSAgICAgICAgbmV4dCB1bmxlc3MgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRl
cmZhY2UsICRmdW5jdGlvbik7Ci0gICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJ
bmRleH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOworICAgIGZvcmVhY2ggbXkg
JG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgeworICAgICAgICBuZXh0IHVu
bGVzcyBOZWVkc1J1bnRpbWVDaGVjaygkb3BlcmF0aW9uKTsKKyAgICAgICAgbmV4dCB1bmxlc3Mg
T3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOworICAg
ICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57
b3ZlcmxvYWRJbmRleH0gPiAxOwogCi0gICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7CisgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nKCRvcGVyYXRpb24pOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAg
ICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5h
YmxlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKLSAgICAgICAgbXkgJGZ1bmN0aW9uTmFt
ZSA9ICRmdW5jdGlvbi0+bmFtZTsKLSAgICAgICAgbXkgJGltcGxlbWVudGF0aW9uRnVuY3Rpb24g
PSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKLSAg
ICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsK
LSAgICAgICAgbXkgJGpzQXR0cmlidXRlcyA9IENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0
cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb24p
OworICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJG9wZXJhdGlvbi0+bmFtZTsKKyAgICAgICAg
bXkgJGltcGxlbWVudGF0aW9uRnVuY3Rpb24gPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CisgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdl
dEZ1bmN0aW9uTGVuZ3RoKCRvcGVyYXRpb24pOworICAgICAgICBteSAkanNBdHRyaWJ1dGVzID0g
Q29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7cnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3Ry
aW5nfSlcbiIpOwogCiAgICAgICAgIG15ICRwcm9wZXJ0eU5hbWUgPSAidm0ucHJvcGVydHlOYW1l
cy0+JGZ1bmN0aW9uTmFtZSI7Ci0gICAgICAgICRwcm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5j
dGlvbk5hbWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntQcml2YXRlSWRlbnRpZmllcn07Ci0gICAgICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJm
YWNlLCAkZnVuY3Rpb24pKSB7CisgICAgICAgICRwcm9wZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8
SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5j
dGlvbk5hbWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9OworICAgICAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJG9wZXJhdGlvbikpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0sIHRoaXMsICRwcm9wZXJ0eU5hbWUsICRp
bXBsZW1lbnRhdGlvbkZ1bmN0aW9uKHZtKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZSgkanNBdHRy
aWJ1dGVzKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgJHByb3Bl
cnR5TmFtZSwgJGZ1bmN0aW9uTGVuZ3RoLCAkaW1wbGVtZW50YXRpb25GdW5jdGlvbiwgTm9JbnRy
aW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpzQXR0cmlidXRlcykpO1xuIik7CkBAIC0z
NjI1LDMyICszNjIxLDMyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBBdHRy
aWJ1dGVzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3R9KSB7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkR2V0dGVyRnVuY3Rpb24sICRuYW1lZEdldHRl
ckZ1bmN0aW9uKSk7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRP
d25Qcm9wZXJ0eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkR2V0dGVy
T3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24pKTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uIHx8ICRuYW1lZEdldHRlckZ1bmN0aW9uCisgICAg
ICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbiB8fCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24K
ICAgICAgICAgICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21OYW1lZEdldHRlcn0KICAgICAgICAgICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntKU0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3J9KSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RC
b2R5QnlJbmRleCgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdldHRlckZ1bmN0aW9u
LCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keUJ5SW5kZXgoJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlck9wZXJhdGlvbikpOwog
ICAgICAgICB9CiAKICAgICB9CiAKIAotICAgIGlmICgoJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiB8
fCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgJiYgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5fSkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eU5hbWVzKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRp
bmRleGVkR2V0dGVyRnVuY3Rpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uKSk7CisgICAgaWYgKCgk
aW5kZXhlZEdldHRlck9wZXJhdGlvbiB8fCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24pICYmICEkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21FbnVtZXJhdGVQcm9wZXJ0eX0pIHsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlOYW1lcygk
aW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdldHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0
dGVyT3BlcmF0aW9uKSk7CiAgICAgfQogCi0gICAgbXkgJG5hbWVkU2V0dGVyRnVuY3Rpb24gPSBH
ZXROYW1lZFNldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwotICAgIG15ICRpbmRleGVkU2V0dGVy
RnVuY3Rpb24gPSBHZXRJbmRleGVkU2V0dGVyRnVuY3Rpb24oJGludGVyZmFjZSk7CisgICAgbXkg
JG5hbWVkU2V0dGVyT3BlcmF0aW9uID0gR2V0TmFtZWRTZXR0ZXJPcGVyYXRpb24oJGludGVyZmFj
ZSk7CisgICAgbXkgJGluZGV4ZWRTZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRleGVkU2V0dGVyT3Bl
cmF0aW9uKCRpbnRlcmZhY2UpOwogCiAgICAgbXkgJGhhc1NldHRlciA9IEluc3RhbmNlT3ZlcnJp
ZGVzUHV0KCRpbnRlcmZhY2UpOwogICAgIGlmICgkaGFzU2V0dGVyKSB7CiAgICAgICAgIGlmICgh
JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHV0RnVuY3Rpb259KSB7Ci0g
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVQdXQoJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbiwgJG5hbWVkU2V0dGVyRnVuY3Rpb24pKTsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZVB1dCgkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiwgJG5hbWVkU2V0dGVyT3BlcmF0aW9u
KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21JbmRleGVkU2V0dGVyfSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDdXN0b21OYW1lZFNldHRlcn0pIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgR2VuZXJhdGVQdXRCeUluZGV4KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRp
bmRleGVkU2V0dGVyRnVuY3Rpb24sICRuYW1lZFNldHRlckZ1bmN0aW9uKSk7CisgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlUHV0QnlJbmRleCgkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lLCAkaW5kZXhlZFNldHRlck9wZXJhdGlvbiwgJG5hbWVkU2V0dGVyT3BlcmF0aW9u
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0zNjc2LDcgKzM2NzIsNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KCRudW1GdW5jdGlvbnMgPiAwICYmICRpbnRlcmZhY2VOYW1lIG5lICJFdmVudFRhcmdldCIpIHsK
KyAgICBpZiAoJG51bU9wZXJhdGlvbnMgPiAwICYmICRpbnRlcmZhY2VOYW1lIG5lICJFdmVudFRh
cmdldCIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NT3BlcmF0aW9uLmgiKTsK
IAogICAgICAgICAjIEZJWE1FOiBNYWtlIGNvbnNpc3RlbnQgSURMQXR0cmlidXRlPD46OmNhc3Qg
YW5kIElETE9wZXJhdGlvbjw+OjpjYXN0IGluIGNhc2Ugb2YgQ3VzdG9tUHJveHlUb0pTT2JqZWN0
LgpAQCAtMzc0MywxMSArMzczOSwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVk
QnlTZXR0aW5nfSkgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJh
bWUuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJTZXR0aW5ncy5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAgICAgICAgICAgICAgbXkg
JGVuYWJsZV9mdW5jdGlvbiA9IFRvTWV0aG9kTmFtZSgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgLiAiRW5hYmxlZCI7CisgICAgICAgICAgICAgICAg
ICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IFRvTWV0aG9kTmFtZSgkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgLiAiRW5hYmxlZCI7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVj
dC53cmFwcGVkKCkuZnJhbWUoKSkpXG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IHRo
aXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdzKCk7XG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlX2Z1
bmN0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlRnVuY3Rpb24oKSlcbiIpOwogICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4i
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00MDY4LDE3ICs0MDY0LDE3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAj
IEZ1bmN0aW9ucwotICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgewotICAgICAgICBmb3JlYWNo
IG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgR2VuZXJhdGVPcGVyYXRp
b25EZWZpbml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CisgICAgIyBP
cGVyYXRpb25zCisgICAgaWYgKCRudW1PcGVyYXRpb25zID4gMCkgeworICAgICAgICBmb3JlYWNo
IG15ICRvcGVyYXRpb24gKEBvcGVyYXRpb25zKSB7CisgICAgICAgICAgICBHZW5lcmF0ZU9wZXJh
dGlvbkRlZmluaXRpb24oJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUpOwogCi0gICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkl0ZXJhYmxl
RnVuY3Rpb25zKCRpbnRlcmZhY2UpIGlmICRpbnRlcmZhY2UtPml0ZXJhYmxlOwotICAgIEdlbmVy
YXRlU2VyaWFsaXplckZ1bmN0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpIGlmICRpbnRlcmZh
Y2UtPnNlcmlhbGl6YWJsZTsKKyAgICBHZW5lcmF0ZUl0ZXJhYmxlRGVmaW5pdGlvbigkaW50ZXJm
YWNlKSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKKyAgICBHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZp
bml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpIGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJs
ZTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTU1hcExpa2UuaCIpIGlmICRpbnRlcmZh
Y2UtPm1hcExpa2U7CiAKQEAgLTQxMzAsOCArNDEyNiw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgIyBVbmNvbW1lbnQgdGhlIGJlbG93IGxpbmUgdG8gdGVtcG9yYXJpbHkgZW5m
b3JjZSBnZW5lcmF0ZWQgbWFyayBmdW5jdGlvbnMgd2hlbiBjYWNoZWQgYXR0cmlidXRlcyBhcmUg
cHJlc2VudC4KICAgICAjIGRpZSAiQ2FuJ3QgZ2VuZXJhdGUgYmluZGluZyBmb3IgY2xhc3Mgd2l0
aCBjYWNoZWQgYXR0cmlidXRlIGFuZCBjdXN0b20gbWFyay4iIGlmICRudW1DYWNoZWRBdHRyaWJ1
dGVzID4gMCBhbmQgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SlNDdXN0b21NYXJr
RnVuY3Rpb259OwogCi0gICAgaWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAg
JGltcGxJbmNsdWRlc3siVVJMLmgifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+dHlw
ZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICBpZiAoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24p
IHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siVVJMLmgifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJP
cGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJm
YWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJh
ZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0g
MTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5vZGUuaCJ9ID0gMTsKQEAgLTQ1MjcsNyAr
NDUyMyw3IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRpb24KICAgICBwdXNoKEBpbXBs
Q29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodDsKIH0KIAot
c3ViIEdlbmVyYXRlU2VyaWFsaXplckZ1bmN0aW9uCitzdWIgR2VuZXJhdGVTZXJpYWxpemVyRGVm
aW5pdGlvbgogewogICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lKSA9IEBfOwogCkBAIC00
NjM2LDExICs0NjMyLDExIEBAIHN1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zCiAK
IHN1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24KIHsKLSAgICBteSAoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkb3BlcmF0aW9uKSA9IEBfOwogCi0gICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5j
dGlvbi0+e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSA+IDE7CisgICAg
bXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntvdmVybG9hZHN9ICYmIEB7JG9wZXJhdGlv
bi0+e292ZXJsb2Fkc319ID4gMTsKICAgICBpZiAoJGlzT3ZlcmxvYWRlZCkgewotICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xh
c3NOYW1lfSRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGNhbGwke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0oRXhlY1N0YXRlKiBz
dGF0ZSlcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbCR7Y2xhc3NOYW1lfShFeGVjU3Rh
dGUqIHN0YXRlKVxuIik7CiAgICAgfQpAQCAtNDY1MCw0NiArNDY0Niw0NiBAQCBzdWIgR2VuZXJh
dGVMZWdhY3lDYWxsZXJEZWZpbml0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7XG4iKTsKIAotICAgIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRpbnRl
cmZhY2UpOworICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAk
b3BlcmF0aW9uLCAkaW50ZXJmYWNlKTsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1
dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oc3RhdGUtPmpzQ2FsbGVlKCkp
O1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGNhc3RlZFRoaXMpO1xu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTtcbiIpOwogCi0gICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0g
JGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkY29kZUdl
bmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPm5hbWUpIHx8ICJsZWdhY3lDYWxsZXJPcGVy
YXRpb25Gcm9tQmluZGluZ3MiOwotICAgIG15ICRmdW5jdGlvblN0cmluZyA9IEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0
aW9uSW1wbGVtZW50YXRpb25OYW1lKTsKKyAgICBteSAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5h
bWUgPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAk
Y29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkb3BlcmF0aW9uLT5uYW1lKSB8fCAibGVnYWN5Q2Fs
bGVyT3BlcmF0aW9uRnJvbUJpbmRpbmdzIjsKKyAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNl
LCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUpOwogCi0gICAgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkaW50
ZXJmYWNlKTsKKyAgICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRvcGVyYXRp
b24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkaW50ZXJmYWNlKTsKIAogICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKIH0KIAogc3ViIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVy
ZW5jZXMKIHsKLSAgICBteSAoJGNhbGxXaXRoLCAkb3V0cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwg
JGZ1bmN0aW9uKSA9IEBfOworICAgIG15ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVy
blZhbHVlLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgJHN0YXRlUG9pbnRlciA9ICImc3Rh
dGUiOwogICAgIG15ICRzdGF0ZVJlZmVyZW5jZSA9ICJzdGF0ZSI7CiAgICAgbXkgJGdsb2JhbE9i
amVjdCA9ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpIjsKIAotICAgIHJldHVybiBHZW5lcmF0ZUNhbGxXaXRoKCRjYWxsV2l0aCwgJG91dHB1
dEFycmF5LCAkcmV0dXJuVmFsdWUsICRyZXR1cm5WYWx1ZSwgJGZ1bmN0aW9uLCAkc3RhdGVQb2lu
dGVyLCAkc3RhdGVSZWZlcmVuY2UsICRnbG9iYWxPYmplY3QsICRnbG9iYWxPYmplY3QpOworICAg
IHJldHVybiBHZW5lcmF0ZUNhbGxXaXRoKCRjYWxsV2l0aCwgJG91dHB1dEFycmF5LCAkcmV0dXJu
VmFsdWUsICRyZXR1cm5WYWx1ZSwgJG9wZXJhdGlvbiwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVm
ZXJlbmNlLCAkZ2xvYmFsT2JqZWN0LCAkZ2xvYmFsT2JqZWN0KTsKIH0KIAogIyBGSVhNRTogV2Ug
c2hvdWxkIHJlbW92ZSBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdQb2ludGVycyBhbmQgY29tYmluZSBH
ZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzIGFuZCBHZW5lcmF0ZUNhbGxXaXRoCiBzdWIg
R2VuZXJhdGVDYWxsV2l0aFVzaW5nUG9pbnRlcnMKIHsKLSAgICBteSAoJGNhbGxXaXRoLCAkb3V0
cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJGZ1bmN0aW9uKSA9IEBfOworICAgIG15ICgkY2FsbFdp
dGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAg
bXkgJHN0YXRlUG9pbnRlciA9ICJzdGF0ZSI7CiAgICAgbXkgJHN0YXRlUmVmZXJlbmNlID0gIipz
dGF0ZSI7CiAgICAgbXkgJGdsb2JhbE9iamVjdCA9ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSI7CiAKLSAgICByZXR1cm4gR2VuZXJhdGVD
YWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkcmV0dXJuVmFs
dWUsICRmdW5jdGlvbiwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkZ2xvYmFsT2Jq
ZWN0LCAkZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdp
dGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkcmV0dXJuVmFsdWUsICRvcGVyYXRpb24s
ICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdCwgJGdsb2JhbE9i
amVjdCk7CiB9CiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbFdpdGhVc2luZ1BvaW50ZXJz
CiB7Ci0gICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1dEFycmF5LCAkdmlzaWJsZUludGVyZmFjZU5h
bWUsICRmdW5jdGlvbikgPSBAXzsKKyAgICBteSAoJGNhbGxXaXRoLCAkb3V0cHV0QXJyYXksICR2
aXNpYmxlSW50ZXJmYWNlTmFtZSwgJG9wZXJhdGlvbikgPSBAXzsKIAogICAgIG15ICRzdGF0ZVBv
aW50ZXIgPSAic3RhdGUiOwogICAgIG15ICRzdGF0ZVJlZmVyZW5jZSA9ICIqc3RhdGUiOwpAQCAt
NDY5NywxMiArNDY5MywxMiBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxXaXRoVXNpbmdQ
b2luCiAgICAgbXkgJGNvbnRleHRNaXNzaW5nID0gInRocm93Q29uc3RydWN0b3JTY3JpcHRFeGVj
dXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsIFwiJHt2aXNp
YmxlSW50ZXJmYWNlTmFtZX1cIikiOwogICAgIG15ICRzY3JpcHRFeGVjdXRpb25Db250ZXh0QWNj
ZXNzb3IgPSAiY2FzdGVkVGhpcyI7CiAKLSAgICByZXR1cm4gR2VuZXJhdGVDYWxsV2l0aCgkY2Fs
bFdpdGgsICRvdXRwdXRBcnJheSwgIiIsICRjb250ZXh0TWlzc2luZywgJGZ1bmN0aW9uLCAkc3Rh
dGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICRnbG9iYWxPYmplY3QsICRzY3JpcHRFeGVjdXRp
b25Db250ZXh0QWNjZXNzb3IpOworICAgIHJldHVybiBHZW5lcmF0ZUNhbGxXaXRoKCRjYWxsV2l0
aCwgJG91dHB1dEFycmF5LCAiIiwgJGNvbnRleHRNaXNzaW5nLCAkb3BlcmF0aW9uLCAkc3RhdGVQ
b2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICRnbG9iYWxPYmplY3QsICRzY3JpcHRFeGVjdXRpb25D
b250ZXh0QWNjZXNzb3IpOwogfQogCiBzdWIgR2VuZXJhdGVDYWxsV2l0aAogewotICAgIG15ICgk
Y2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkY29udGV4dE1pc3NpbmcsICRm
dW5jdGlvbiwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkZ2xvYmFsT2JqZWN0LCAk
c2NyaXB0RXhlY3V0aW9uQ29udGV4dEFjY2Vzc29yKSA9IEBfOworICAgIG15ICgkY2FsbFdpdGgs
ICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkY29udGV4dE1pc3NpbmcsICRvcGVyYXRpb24s
ICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwgJGdsb2JhbE9iamVjdCwgJHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBY2Nlc3NvcikgPSBAXzsKIAogICAgIHJldHVybiAoKSB1bmxlc3MgJGNh
bGxXaXRoOwogCkBAIC00NzMyLDggKzQ3MjgsOCBAQCBzdWIgR2VuZXJhdGVDYWxsV2l0aAogICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiIgLiAoJHJldHVyblZhbHVl
ID8gIiAiIC4gJHJldHVyblZhbHVlIDogIiIpIC4gIjtcbiIpOwogICAgICAgICBwdXNoKEBjYWxs
V2l0aEFyZ3MsICIqZG9jdW1lbnQiKTsKICAgICB9Ci0gICAgaWYgKCRmdW5jdGlvbiBhbmQgJGNv
ZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiU2NyaXB0
QXJndW1lbnRzIikpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZjxJbnNw
ZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJndW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRl
U2NyaXB0QXJndW1lbnRzKCRzdGF0ZVBvaW50ZXIsICIgLiBAeyRmdW5jdGlvbi0+YXJndW1lbnRz
fSAuICIpKTtcbiIpOworICAgIGlmICgkb3BlcmF0aW9uIGFuZCAkY29kZUdlbmVyYXRvci0+RXh0
ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJTY3JpcHRBcmd1bWVudHMiKSkgewor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJn
dW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoSW5zcGVjdG9yOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMo
JHN0YXRlUG9pbnRlciwgIiAuIEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfSAuICIpKTtcbiIpOwog
ICAgICAgICAkaW1wbEluY2x1ZGVzeyI8aW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oPiJ9ID0g
MTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5Lmg+In0gPSAxOwogICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICJXVEZNb3ZlKHNjcmlw
dEFyZ3VtZW50cykiKTsKQEAgLTQ3NTksMTQgKzQ3NTUsMTQgQEAgc3ViIEdlbmVyYXRlQ2FsbFdp
dGgKIAogc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjawogewotICAgIG15ICgkb3V0cHV0
QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSkgPSBAXzsKKyAgICBteSAoJG91dHB1dEFycmF5
LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlKSA9IEBfOwogCi0gICAgIyBPdmVybG9hZGVkIGZ1bmN0
aW9ucyBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBhcmd1bWVudCBjb3VudCBzaW5jZSB0aGUgCisg
ICAgIyBPdmVybG9hZGVkIG9wZXJhdGlvbnMgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgYXJndW1l
bnQgY291bnQgc2luY2UgdGhlIAogICAgICMgZGlzcGF0Y2ggZnVuY3Rpb24gZG9lcyBmb3IgdGhl
bS4KLSAgICByZXR1cm4gaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+
e292ZXJsb2Fkc319ID4gMTsKKyAgICByZXR1cm4gaWYgJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30g
JiYgQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOwogCi0gICAgbXkgJG51bU1hbmRhdG9y
eUFyZ3VtZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9OwotICAgIGZvcmVhY2ggbXkgJGFy
Z3VtZW50IChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSkgeworICAgIG15ICRudW1N
YW5kYXRvcnlBcmd1bWVudHMgPSBAeyRvcGVyYXRpb24tPmFyZ3VtZW50c307CisgICAgZm9yZWFj
aCBteSAkYXJndW1lbnQgKHJldmVyc2UoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSkgewogICAg
ICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsIG9yICRhcmd1bWVudC0+aXNWYXJpYWRpYykg
ewogICAgICAgICAgICAgJG51bU1hbmRhdG9yeUFyZ3VtZW50cy0tOwogICAgICAgICB9IGVsc2Ug
ewpAQCAtNDgyMiwzNSArNDgxOCwzNSBAQCBzdWIgV2lsbENvbnZlcnRVbmRlZmluZWRUb0RlZmF1
bHRQYXJhbWV0CiAKIHN1YiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbAogewot
ICAgIG15ICgkZnVuY3Rpb24pID0gQF87CisgICAgbXkgKCRvcGVyYXRpb24pID0gQF87CiAKLSAg
ICByZXR1cm4gMCB1bmxlc3MgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJv
d0V4Y2VwdGlvbn07CisgICAgcmV0dXJuIDAgdW5sZXNzICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKIAotICAgIHJldHVybiAkZnVuY3Rpb24tPnR5
cGUgJiYgKCRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9pZCIgfHwgJGNvZGVHZW5lcmF0b3It
PklzUHJvbWlzZVR5cGUoJGZ1bmN0aW9uLT50eXBlKSk7CisgICAgcmV0dXJuICRvcGVyYXRpb24t
PnR5cGUgJiYgKCRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8ICRjb2RlR2VuZXJh
dG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpKTsKIH0KIAogc3ViIEdlbmVyYXRl
UGFyYW1ldGVyc0NoZWNrCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJheSwgJGZ1bmN0aW9uLCAkaW50
ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUpID0gQF87CisgICAgbXkgKCRvdXRw
dXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25O
YW1lKSA9IEBfOwogCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5u
YW1lOwogICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFtZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRW
aXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNlKTsKLSAgICBteSAkaW1wbGVtZW50ZWRCeSA9
ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRCeX07Ci0gICAgbXkg
JG51bUFyZ3VtZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9OwotICAgIG15ICRjb25kaXRp
b25hbCA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OwotICAg
IG15ICRpc0NvbnN0cnVjdG9yID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25z
dHJ1Y3Rvcn0gfHwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVj
dG9yfTsKKyAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgIG15ICRudW1Bcmd1bWVudHMgPSBAeyRvcGVyYXRp
b24tPmFyZ3VtZW50c307CisgICAgbXkgJGNvbmRpdGlvbmFsID0gJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OworICAgIG15ICRpc0NvbnN0cnVjdG9yID0gJG9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3J9IHx8ICRvcGVyYXRpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3RydWN0b3J9OwogCiAgICAgbXkgQGFyZ3Vt
ZW50czsKICAgICBteSAkZnVuY3Rpb25OYW1lOwogCiAgICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7
CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2ltcGxlbWVudGVkQnl9LmgiLCAkY29uZGl0
aW9uYWwpOwotICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICJpbXBsIikgdW5sZXNzICRmdW5j
dGlvbi0+aXNTdGF0aWM7CisgICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSB1bmxl
c3MgJG9wZXJhdGlvbi0+aXNTdGF0aWM7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29y
ZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOwotICAg
IH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMgfHwgJGlzQ29uc3RydWN0b3IpIHsKKyAgICB9
IGVsc2lmICgkb3BlcmF0aW9uLT5pc1N0YXRpYyB8fCAkaXNDb25zdHJ1Y3RvcikgewogICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFtZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRh
dGlvbk5hbWV9IjsKLSAgICB9IGVsc2lmICgkZnVuY3Rpb24tPmlzTWFwTGlrZSkgewotICAgICAg
ICAkZnVuY3Rpb25OYW1lID0gImZvcndhcmQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGZ1bmN0aW9uLT5uYW1lKSAuICJUb01hcExpa2UiOworICAgIH0gZWxzaWYgKCRvcGVyYXRpb24t
PmlzTWFwTGlrZSkgeworICAgICAgICAkZnVuY3Rpb25OYW1lID0gImZvcndhcmQiIC4gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJG9wZXJhdGlvbi0+bmFtZSkgLiAiVG9NYXBMaWtlIjsKICAg
ICAgICAgcHVzaChAYXJndW1lbnRzLCAiKnN0YXRlIik7CiAgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgIipjYXN0ZWRUaGlzIik7CiAgICAgIH0gZWxzZSB7CkBAIC00ODU5LDIwICs0ODU1LDIwIEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgbXkgJHF1b3RlZEZ1bmN0aW9uTmFt
ZTsKICAgICBpZiAoISRpc0NvbnN0cnVjdG9yKSB7Ci0gICAgICAgIG15ICRuYW1lID0gJGZ1bmN0
aW9uLT5uYW1lOworICAgICAgICBteSAkbmFtZSA9ICRvcGVyYXRpb24tPm5hbWU7CiAgICAgICAg
ICRxdW90ZWRGdW5jdGlvbk5hbWUgPSAiXCIkbmFtZVwiIjsKLSAgICAgICAgcHVzaChAYXJndW1l
bnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdQb2ludGVycygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NhbGxXaXRofSwgXEAkb3V0cHV0QXJyYXksICJKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSkiLCAkZnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5l
cmF0ZUNhbGxXaXRoVXNpbmdQb2ludGVycygkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntDYWxsV2l0aH0sIFxAJG91dHB1dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpIiwgJG9wZXJhdGlvbikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgICRxdW90ZWRGdW5jdGlv
bk5hbWUgPSAibnVsbHB0ciI7Ci0gICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDb25z
dHJ1Y3RvckNhbGxXaXRoVXNpbmdQb2ludGVycygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbnN0cnVjdG9yQ2FsbFdpdGh9LCBcQCRvdXRwdXRBcnJheSwgJHZpc2libGVJbnRlcmZh
Y2VOYW1lLCAkZnVuY3Rpb24pKTsKKyAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNv
bnN0cnVjdG9yQ2FsbFdpdGhVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NvbnN0cnVjdG9yQ2FsbFdpdGh9LCBcQCRvdXRwdXRBcnJheSwgJHZpc2libGVJbnRl
cmZhY2VOYW1lLCAkb3BlcmF0aW9uKSk7CiAgICAgfQogCiAgICAgbXkgJGFyZ3VtZW50SW5kZXgg
PSAwOwotICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkg
eworICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvcGVyYXRpb24tPmFyZ3VtZW50c30pIHsK
ICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5cGU7CiAKICAgICAgICAgZGllICJPcHRp
b25hbCBhcmd1bWVudHMgb2Ygbm9uLW51bGxhYmxlIHdyYXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBw
b3J0ZWQiIGlmICRhcmd1bWVudC0+aXNPcHRpb25hbCAmJiAhJHR5cGUtPmlzTnVsbGFibGUgJiYg
JGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5cGUpOwotICAgICAgICBkaWUgIk9wdGlv
bmFsIGFyZ3VtZW50cyBwcmVjZWRpbmcgdmFyaWFkaWMgYXJndW1lbnRzIGFyZSBub3Qgc3VwcG9y
dGVkIiBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICBAeyRmdW5jdGlvbi0+YXJndW1lbnRz
fVskbnVtQXJndW1lbnRzIC0gMV0tPmlzVmFyaWFkaWMpOworICAgICAgICBkaWUgIk9wdGlvbmFs
IGFyZ3VtZW50cyBwcmVjZWRpbmcgdmFyaWFkaWMgYXJndW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVk
IiBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICBAeyRvcGVyYXRpb24tPmFyZ3VtZW50c31b
JG51bUFyZ3VtZW50cyAtIDFdLT5pc1ZhcmlhZGljKTsKIAogICAgICAgICBpZiAoJGFyZ3VtZW50
LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVudC0+ZGVmYXVsdCkpIHsKICAgICAgICAg
ICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRpY3Rpb25hcnkgYXJndW1lbnRzIGFyZSBh
bHdheXMgY29uc2lkZXJlZCB0byBoYXZlIGEgZGVmYXVsdCB2YWx1ZSBvZiBhbiBlbXB0eSBkaWN0
aW9uYXJ5LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZC4KQEAgLTQ5MzQsNyArNDkzMCw3IEBA
IHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgICRhcmd1bWVudExv
b2t1cEZvckNvbnZlcnNpb24gPSAic3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmd1bWVudElu
ZGV4KSI7CiAgICAgICAgICAgICB9CiAgICAgCi0gICAgICAgICAgICBteSAkZ2xvYmFsT2JqZWN0
UmVmZXJlbmNlID0gJGZ1bmN0aW9uLT5pc1N0YXRpYyA/ICIqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkiIDogIipjYXN0ZWRUaGlzLT5nbG9i
YWxPYmplY3QoKSI7CisgICAgICAgICAgICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlID0gJG9w
ZXJhdGlvbi0+aXNTdGF0aWMgPyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpIiA6ICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwog
ICAgICAgICAgICAgbXkgJGFyZ3VtZW50RXhjZXB0aW9uVGhyb3dlciA9IEdldEFyZ3VtZW50RXhj
ZXB0aW9uVGhyb3dlcigkaW50ZXJmYWNlLCAkYXJndW1lbnQsICRhcmd1bWVudEluZGV4LCAkcXVv
dGVkRnVuY3Rpb25OYW1lKTsKIAogICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0gSlNWYWx1
ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVudCwgJGFyZ3VtZW50TG9va3VwRm9yQ29udmVy
c2lvbiwgJGNvbmRpdGlvbmFsLCAic3RhdGUiLCAiKnN0YXRlIiwgIipjYXN0ZWRUaGlzIiwgJGds
b2JhbE9iamVjdFJlZmVyZW5jZSwgJGFyZ3VtZW50RXhjZXB0aW9uVGhyb3dlcik7CkBAIC00OTUy
LDEwICs0OTQ4LDEwIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAkYXJn
dW1lbnRJbmRleCsrOwogICAgIH0KIAotICAgIHB1c2goQGFyZ3VtZW50cywgIldURk1vdmUocHJv
bWlzZSkiKSBpZiAkZnVuY3Rpb24tPnR5cGUgJiYgJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5
cGUoJGZ1bmN0aW9uLT50eXBlKTsKKyAgICBwdXNoKEBhcmd1bWVudHMsICJXVEZNb3ZlKHByb21p
c2UpIikgaWYgJG9wZXJhdGlvbi0+dHlwZSAmJiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlw
ZSgkb3BlcmF0aW9uLT50eXBlKTsKIAogICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIkZnVuY3Rp
b25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwotICAgICRmdW5jdGlvblN0
cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25T
dHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkZnVuY3Rpb24p
OworICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJv
d1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0
aW9uQ2FsbCgkb3BlcmF0aW9uKTsKIAogICAgIHJldHVybiAkZnVuY3Rpb25TdHJpbmc7CiB9CkBA
IC01MDIwLDExICs1MDE2LDExIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrRnVuY3Rpb25IZWFkZXIK
IAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIik7
CiAKLSAgICBteSBAZnVuY3Rpb25zID0gKCk7Ci0gICAgcHVzaChAZnVuY3Rpb25zLCAkY2FsbGJh
Y2tGdW5jdGlvbi0+b3BlcmF0aW9uKTsKKyAgICBteSBAb3BlcmF0aW9ucyA9ICgpOworICAgIHB1
c2goQG9wZXJhdGlvbnMsICRjYWxsYmFja0Z1bmN0aW9uLT5vcGVyYXRpb24pOwogICAgIG15IEBj
b25zdGFudHMgPSAoKTsKIAotICAgICRvYmplY3QtPkdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250
ZW50KCRjYWxsYmFja0Z1bmN0aW9uLCBcQGZ1bmN0aW9ucywgXEBjb25zdGFudHMsIFxAaGVhZGVy
Q29udGVudCwgXCVoZWFkZXJJbmNsdWRlcyk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVDYWxsYmFj
a0hlYWRlckNvbnRlbnQoJGNhbGxiYWNrRnVuY3Rpb24sIFxAb3BlcmF0aW9ucywgXEBjb25zdGFu
dHMsIFxAaGVhZGVyQ29udGVudCwgXCVoZWFkZXJJbmNsdWRlcyk7CiAKICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uc0hlYWRlckNvbnRlbnQoJGNhbGxiYWNrRnVu
Y3Rpb24sICRlbnVtZXJhdGlvbnMpKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5lcmF0
ZURpY3Rpb25hcmllc0hlYWRlckNvbnRlbnQoJGNhbGxiYWNrRnVuY3Rpb24sICRkaWN0aW9uYXJp
ZXMpKTsKQEAgLTUwNDcsMTEgKzUwNDMsMTEgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tGdW5jdGlv
bkltcGxlbWVudGF0aQogICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9u
c0ltcGxlbWVudGF0aW9uQ29udGVudCgkY2FsbGJhY2tGdW5jdGlvbiwgJGVudW1lcmF0aW9ucykp
OwogICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZURpY3Rpb25hcmllc0ltcGxlbWVudGF0
aW9uQ29udGVudCgkY2FsbGJhY2tGdW5jdGlvbiwgJGRpY3Rpb25hcmllcykpOwogCi0gICAgbXkg
QGZ1bmN0aW9ucyA9ICgpOwotICAgIHB1c2goQGZ1bmN0aW9ucywgJGNhbGxiYWNrRnVuY3Rpb24t
Pm9wZXJhdGlvbik7CisgICAgbXkgQG9wZXJhdGlvbnMgPSAoKTsKKyAgICBwdXNoKEBvcGVyYXRp
b25zLCAkY2FsbGJhY2tGdW5jdGlvbi0+b3BlcmF0aW9uKTsKICAgICBteSBAY29uc3RhbnRzID0g
KCk7CiAKLSAgICAkb2JqZWN0LT5HZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50
KCRjYWxsYmFja0Z1bmN0aW9uLCBcQGZ1bmN0aW9ucywgXEBjb25zdGFudHMsIFxAaW1wbENvbnRl
bnQsIFwlaW1wbEluY2x1ZGVzKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUNhbGxiYWNrSW1wbGVt
ZW50YXRpb25Db250ZW50KCRjYWxsYmFja0Z1bmN0aW9uLCBcQG9wZXJhdGlvbnMsIFxAY29uc3Rh
bnRzLCBcQGltcGxDb250ZW50LCBcJWltcGxJbmNsdWRlcyk7CiAKICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiIpOwogCkBAIC01MDY3LDcgKzUwNjMsNyBA
QCBzdWIgR2VuZXJhdGVDYWxsYmFja0ludGVyZmFjZUhlYWRlcgogCiAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIlxubmFtZXNwYWNlIFdlYkNvcmUge1xuXG4iKTsKICAgICAKLSAgICAkb2JqZWN0
LT5HZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29udGVudCgkY2FsbGJhY2tJbnRlcmZhY2UsICRjYWxs
YmFja0ludGVyZmFjZS0+ZnVuY3Rpb25zLCAkY2FsbGJhY2tJbnRlcmZhY2UtPmNvbnN0YW50cywg
XEBoZWFkZXJDb250ZW50LCBcJWhlYWRlckluY2x1ZGVzKTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0
ZUNhbGxiYWNrSGVhZGVyQ29udGVudCgkY2FsbGJhY2tJbnRlcmZhY2UsICRjYWxsYmFja0ludGVy
ZmFjZS0+b3BlcmF0aW9ucywgJGNhbGxiYWNrSW50ZXJmYWNlLT5jb25zdGFudHMsIFxAaGVhZGVy
Q29udGVudCwgXCVoZWFkZXJJbmNsdWRlcyk7CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBH
ZW5lcmF0ZUVudW1lcmF0aW9uc0hlYWRlckNvbnRlbnQoJGNhbGxiYWNrSW50ZXJmYWNlLCAkZW51
bWVyYXRpb25zKSk7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgR2VuZXJhdGVEaWN0aW9uYXJp
ZXNIZWFkZXJDb250ZW50KCRjYWxsYmFja0ludGVyZmFjZSwgJGRpY3Rpb25hcmllcykpOwpAQCAt
NTA5MCw3ICs1MDg2LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbnRlcmZhY2VJbXBsZW1lbnRh
dAogICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uc0ltcGxlbWVudGF0
aW9uQ29udGVudCgkY2FsbGJhY2tJbnRlcmZhY2UsICRlbnVtZXJhdGlvbnMpKTsKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgR2VuZXJhdGVEaWN0aW9uYXJpZXNJbXBsZW1lbnRhdGlvbkNvbnRlbnQo
JGNhbGxiYWNrSW50ZXJmYWNlLCAkZGljdGlvbmFyaWVzKSk7CiAKLSAgICAkb2JqZWN0LT5HZW5l
cmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50KCRjYWxsYmFja0ludGVyZmFjZSwgJGNh
bGxiYWNrSW50ZXJmYWNlLT5mdW5jdGlvbnMsICRjYWxsYmFja0ludGVyZmFjZS0+Y29uc3RhbnRz
LCBcQGltcGxDb250ZW50LCBcJWltcGxJbmNsdWRlcyk7CisgICAgJG9iamVjdC0+R2VuZXJhdGVD
YWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVudCgkY2FsbGJhY2tJbnRlcmZhY2UsICRjYWxsYmFj
a0ludGVyZmFjZS0+b3BlcmF0aW9ucywgJGNhbGxiYWNrSW50ZXJmYWNlLT5jb25zdGFudHMsIFxA
aW1wbENvbnRlbnQsIFwlaW1wbEluY2x1ZGVzKTsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAi
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIik7CiAKQEAgLTUxMDAsNyArNTA5Niw3IEBAIHN1YiBH
ZW5lcmF0ZUNhbGxiYWNrSW50ZXJmYWNlSW1wbGVtZW50YXQKIAogc3ViIEdlbmVyYXRlQ2FsbGJh
Y2tIZWFkZXJDb250ZW50CiB7Ci0gICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VPckNhbGxiYWNr
LCAkZnVuY3Rpb25zLCAkY29uc3RhbnRzLCAkY29udGVudFJlZiwgJGluY2x1ZGVzUmVmKSA9IEBf
OworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlT3JDYWxsYmFjaywgJG9wZXJhdGlvbnMsICRj
b25zdGFudHMsICRjb250ZW50UmVmLCAkaW5jbHVkZXNSZWYpID0gQF87CiAKICAgICBteSAkbmFt
ZSA9ICRpbnRlcmZhY2VPckNhbGxiYWNrLT50eXBlLT5uYW1lOwogICAgIG15ICRjYWxsYmFja0Rh
dGFUeXBlID0gR2V0SlNDYWxsYmFja0RhdGFUeXBlKCRpbnRlcmZhY2VPckNhbGxiYWNrKTsKQEAg
LTUxMzEsMjEgKzUxMjcsMjEgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50CiAK
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCAke25hbWV9JikgY29uc3Qgb3ZlcnJpZGU7XG5cbiIpIGlmICRpbnRlcmZhY2VPckNhbGxiYWNr
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsYmFja05lZWRzT3BlcmF0b3JFcXVhbH07CiAKLSAg
ICAjIEZ1bmN0aW9ucwotICAgIG15ICRudW1GdW5jdGlvbnMgPSBAeyRmdW5jdGlvbnN9OwotICAg
IGlmICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICMgT3BlcmF0aW9ucworICAgIG15ICRudW1P
cGVyYXRpb25zID0gQHskb3BlcmF0aW9uc307CisgICAgaWYgKCRudW1PcGVyYXRpb25zID4gMCkg
ewogICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIlxuICAgIC8vIEZ1bmN0aW9uc1xuIik7Ci0g
ICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRmdW5jdGlvbnN9KSB7CisgICAgICAgIGZv
cmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskb3BlcmF0aW9uc30pIHsKICAgICAgICAgICAgIG15IEBh
cmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRmdW5j
dGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7
JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAgICAgICAgICAgIG15ICRJRExUeXBlID0g
R2V0SURMVHlwZSgkaW50ZXJmYWNlT3JDYWxsYmFjaywgJGFyZ3VtZW50LT50eXBlKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJ0eXBlbmFtZSAke0lETFR5cGV9OjpQYXJhbWV0
ZXJUeXBlICIgLiAkYXJndW1lbnQtPm5hbWUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBteSAkbmF0aXZlUmV0dXJuVHlwZSA9ICJDYWxsYmFja1Jlc3VsdDx0eXBlbmFtZSAiIC4gR2V0
SURMVHlwZSgkaW50ZXJmYWNlT3JDYWxsYmFjaywgJGZ1bmN0aW9uLT50eXBlKSAuICI6OkltcGxl
bWVudGF0aW9uVHlwZT4iOworICAgICAgICAgICAgbXkgJG5hdGl2ZVJldHVyblR5cGUgPSAiQ2Fs
bGJhY2tSZXN1bHQ8dHlwZW5hbWUgIiAuIEdldElETFR5cGUoJGludGVyZmFjZU9yQ2FsbGJhY2ss
ICRvcGVyYXRpb24tPnR5cGUpIC4gIjo6SW1wbGVtZW50YXRpb25UeXBlPiI7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgICMgRklYTUU6IENoYW5nZSB0aGUgZGVmYXVsdCBuYW1lICh1c2VkIGZv
ciBjYWxsYmFjayBmdW5jdGlvbnMpIHRvIHNvbWV0aGluZyBvdGhlciB0aGFuIGhhbmRsZUV2ZW50
LiBJdCBtYWtlcyBsaXR0bGUgc2Vuc2UuCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0g
JGZ1bmN0aW9uLT5uYW1lID8gJGZ1bmN0aW9uLT5uYW1lIDogImhhbmRsZUV2ZW50IjsKKyAgICAg
ICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkb3BlcmF0aW9uLT5uYW1lIHx8ICJoYW5kbGVFdmVu
dCI7CiAKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIHZpcnR1YWwgJHtuYXRp
dmVSZXR1cm5UeXBlfSAke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKSBvdmVycmlkZTtcbiIpOwogICAgICAgICB9CkBAIC01MTY3LDcgKzUxNjMsNyBAQCBzdWIg
R2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQKIAogc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbkNvbnRlbnQKIHsKLSAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZU9yQ2FsbGJh
Y2ssICRmdW5jdGlvbnMsICRjb25zdGFudHMsICRjb250ZW50UmVmLCAkaW5jbHVkZXNSZWYpID0g
QF87CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VPckNhbGxiYWNrLCAkb3BlcmF0aW9ucywg
JGNvbnN0YW50cywgJGNvbnRlbnRSZWYsICRpbmNsdWRlc1JlZikgPSBAXzsKIAogICAgIG15ICRu
YW1lID0gJGludGVyZmFjZU9yQ2FsbGJhY2stPnR5cGUtPm5hbWU7CiAgICAgbXkgJGNhbGxiYWNr
RGF0YVR5cGUgPSBHZXRKU0NhbGxiYWNrRGF0YVR5cGUoJGludGVyZmFjZU9yQ2FsbGJhY2spOwpA
QCAtNTI1NCwyMSArNTI1MCwyMSBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9u
Q29udGVuCiAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAifVxuXG4iKTsKICAgICB9CiAKLSAg
ICAjIEZ1bmN0aW9ucy4KLSAgICBteSAkbnVtRnVuY3Rpb25zID0gQHskZnVuY3Rpb25zfTsKLSAg
ICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24g
KEB7JGZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDdXN0b219OworICAgICMgT3BlcmF0aW9ucworICAgIG15ICRudW1PcGVy
YXRpb25zID0gQHskb3BlcmF0aW9uc307CisgICAgaWYgKCRudW1PcGVyYXRpb25zID4gMCkgewor
ICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JG9wZXJhdGlvbnN9KSB7CisgICAgICAg
ICAgICBuZXh0IGlmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbX07CiAg
ICAgICAgIAotICAgICAgICAgICAgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUoJGZ1bmN0aW9uLT50
eXBlLCAkaW5jbHVkZXNSZWYpOworICAgICAgICAgICAgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUo
JG9wZXJhdGlvbi0+dHlwZSwgJGluY2x1ZGVzUmVmKTsKIAotICAgICAgICAgICAgbXkgJG5hdGl2
ZVJldHVyblR5cGUgPSAiQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgIiAuIEdldElETFR5cGUoJGlu
dGVyZmFjZU9yQ2FsbGJhY2ssICRmdW5jdGlvbi0+dHlwZSkgLiAiOjpJbXBsZW1lbnRhdGlvblR5
cGU+IjsKKyAgICAgICAgICAgIG15ICRuYXRpdmVSZXR1cm5UeXBlID0gIkNhbGxiYWNrUmVzdWx0
PHR5cGVuYW1lICIgLiBHZXRJRExUeXBlKCRpbnRlcmZhY2VPckNhbGxiYWNrLCAkb3BlcmF0aW9u
LT50eXBlKSAuICI6OkltcGxlbWVudGF0aW9uVHlwZT4iOwogICAgICAgICAgICAgCiAgICAgICAg
ICAgICAjIEZJWE1FOiBDaGFuZ2UgdGhlIGRlZmF1bHQgbmFtZSAodXNlZCBmb3IgY2FsbGJhY2sg
ZnVuY3Rpb25zKSB0byBzb21ldGhpbmcgb3RoZXIgdGhhbiBoYW5kbGVFdmVudC4gSXQgbWFrZXMg
bGl0dGxlIHNlbnNlLgotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+
bmFtZSA/ICRmdW5jdGlvbi0+bmFtZSA6ICJoYW5kbGVFdmVudCI7CisgICAgICAgICAgICBteSAk
ZnVuY3Rpb25OYW1lID0gJG9wZXJhdGlvbi0+bmFtZSB8fCAiaGFuZGxlRXZlbnQiOwogCiAgICAg
ICAgICAgICBteSBAYXJncyA9ICgpOwotICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQg
KEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1
bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7CiAgICAgICAgICAgICAgICAgQWRkVG9J
bmNsdWRlc0ZvcklETFR5cGUoJGFyZ3VtZW50LT50eXBlLCAkaW5jbHVkZXNSZWYsIDEpOwogCiAg
ICAgICAgICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2VPckNhbGxi
YWNrLCAkYXJndW1lbnQtPnR5cGUpOwpAQCAtNTI4MCw3ICs1Mjc2LDcgQEAgc3ViIEdlbmVyYXRl
Q2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogCiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlz
IGlzIG5lZWRlZCBmb3IgTm9kZUZpbHRlciwgd2hpY2ggd29ya3MgZXZlbiBmb3IgZGlzY29ubmVj
dGVkIGlmcmFtZXMuIFdlIHNob3VsZCBpbnZlc3RpZ2F0ZQogICAgICAgICAgICAgIyBpZiB0aGF0
IGJlaGF2aW9yIGlzIG5lZWRlZCBmb3Igb3RoZXIgY2FsbGJhY2tzLgotICAgICAgICAgICAgaWYg
KCEkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NraXBDYWxsYmFja0ludm9rZUNoZWNr
fSkgeworICAgICAgICAgICAgaWYgKCEkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntT
a2lwQ2FsbGJhY2tJbnZva2VDaGVja30pIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkY29udGVu
dFJlZiwgIiAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpXG4iKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6
VW5hYmxlVG9FeGVjdXRlO1xuXG4iKTsKICAgICAgICAgICAgIH0KQEAgLTUyOTMsNyArNTI4OSw3
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW4KICAgICAgICAgICAg
IHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8mIHN0YXRlID0gKmdsb2JhbE9iamVjdC5nbG9i
YWxFeGVjKCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7XG4iKTsKIAotICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJn
dW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgICAgICBmb3JlYWNoIG15
ICRhcmd1bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7CiAgICAgICAgICAgICAgICAg
cHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXJncy5hcHBlbmQoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVz
aW5nUmVmZXJlbmNlcygkYXJndW1lbnQsICRpbnRlcmZhY2VPckNhbGxiYWNrLCAkYXJndW1lbnQt
Pm5hbWUsICJnbG9iYWxPYmplY3QiKSAuICIpO1xuIik7CiAgICAgICAgICAgICB9CiAKQEAgLTUz
MDMsMTEgKzUyOTksMTEgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRl
bgogICAgICAgICAgICAgaWYgKHJlZigkaW50ZXJmYWNlT3JDYWxsYmFjaykgZXEgIklETENhbGxi
YWNrRnVuY3Rpb24iKSB7CiAgICAgICAgICAgICAgICAgJGNhbGxiYWNrSW52b2NhdGlvbiA9ICJt
X2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2FsbGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6
OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG15ICRjYWxsYmFja1R5cGUgPSAkbnVtRnVuY3Rp
b25zID4gMSA/ICJPYmplY3QiIDogIkZ1bmN0aW9uT3JPYmplY3QiOworICAgICAgICAgICAgICAg
IG15ICRjYWxsYmFja1R5cGUgPSAkbnVtT3BlcmF0aW9ucyA+IDEgPyAiT2JqZWN0IiA6ICJGdW5j
dGlvbk9yT2JqZWN0IjsKICAgICAgICAgICAgICAgICAkY2FsbGJhY2tJbnZvY2F0aW9uID0gIm1f
ZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxsYmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6
JHtjYWxsYmFja1R5cGV9LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgXCIke2Z1bmN0aW9u
TmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmICgkZnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiKSB7CisgICAgICAgICAgICBp
ZiAoJG9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9pZCIpIHsKICAgICAgICAgICAgICAgICBw
dXNoKEAkY29udGVudFJlZiwgIiAgICAke2NhbGxiYWNrSW52b2NhdGlvbn07XG4iKTsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAg
YXV0byBqc1Jlc3VsdCA9ICR7Y2FsbGJhY2tJbnZvY2F0aW9ufTtcbiIpOwpAQCAtNTMxNSw3ICs1
MzExLDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogCiAgICAg
ICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIn0gPSAxOwog
ICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgaWYgKHJldHVybmVkRXhjZXB0aW9u
KSB7XG4iKTsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1JldGhyb3dFeGNlcHRpb259KSB7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UmV0aHJvd0V4Y2VwdGlvbn0pIHsKICAgICAgICAgICAgICAgICBwdXNo
KEAkY29udGVudFJlZiwgIiAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAg
ICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Njb3BlLCByZXR1cm5lZEV4Y2VwdGlvbik7
XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC01MzI0LDEwICs1MzIwLDEwIEBAIHN1YiBH
ZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW4KICAgICAgICAgICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgICAgICByZXR1cm4gQ2FsbGJhY2tSZXN1bHRUeXBlOjpFeGNlcHRpb25U
aHJvd247XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICB9XG5cbiIp
OwogCi0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIikgewor
ICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiKSB7CiAgICAg
ICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgcmV0dXJuIHsgfTtcbiIpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSBKU1Zh
bHVlVG9OYXRpdmUoJGludGVyZmFjZU9yQ2FsbGJhY2ssICRmdW5jdGlvbiwgImpzUmVzdWx0Iiwg
IiIsICImc3RhdGUiLCAic3RhdGUiKTsKKyAgICAgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUg
PSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZU9yQ2FsbGJhY2ssICRvcGVyYXRpb24sICJqc1Jl
c3VsdCIsICIiLCAiJnN0YXRlIiwgInN0YXRlIik7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
ICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAi
ICAgIGF1dG8gcmV0dXJuVmFsdWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOwpAQCAtNTM1MCwxNCAr
NTM0NiwxNCBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVuCiAKIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsCiB7Ci0gICAgbXkgKCRmdW5jdGlv
biwgJGZ1bmN0aW9uU3RyaW5nLCAkaW5kZW50LCAkaW50ZXJmYWNlKSA9IEBfOworICAgIG15ICgk
b3BlcmF0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRlbnQsICRpbnRlcmZhY2UpID0gQF87CiAK
LSAgICBpZiAoJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIiB8fCAkY29kZUdlbmVyYXRv
ci0+SXNQcm9taXNlVHlwZSgkZnVuY3Rpb24tPnR5cGUpKSB7CisgICAgaWYgKCRvcGVyYXRpb24t
PnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRv
cGVyYXRpb24tPnR5cGUpKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4g
IiRmdW5jdGlvblN0cmluZztcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVu
dCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgbXkgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSA9ICRmdW5jdGlvbi0+aXNT
dGF0aWMgPyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpIiA6ICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCIgLiBOYXRp
dmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9u
U3RyaW5nLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKSAuICIpO1xuIik7CisgICAgICAgIG15ICRn
bG9iYWxPYmplY3RSZWZlcmVuY2UgPSAkb3BlcmF0aW9uLT5pc1N0YXRpYyA/ICIqanNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3QoKSkiIDogIipjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSI7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5k
ZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9p
bnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkZ2xvYmFsT2Jq
ZWN0UmVmZXJlbmNlKSAuICIpO1xuIik7CiAgICAgfQogfQogCkBAIC01MzY3LDcgKzUzNjMsNyBA
QCBzdWIgSXNWYWx1ZUl0ZXJhYmxlSW50ZXJmYWNlCiAgICAgcmV0dXJuIDAgdW5sZXNzICRpbnRl
cmZhY2UtPml0ZXJhYmxlOwogICAgIHJldHVybiAwIGlmIGxlbmd0aCAkaW50ZXJmYWNlLT5pdGVy
YWJsZS0+a2V5VHlwZTsKICAgICAjIEZJWE1FOiBTZWUgaHR0cHM6Ly93ZWJraXQub3JnL2IvMTU5
MTQwLCB3ZSBzaG91bGQgZGllIGlmIHRoZSBuZXh0IGNoZWNrIGlzIGZhbHNlLgotICAgIHJldHVy
biAwIHVubGVzcyBHZXRJbmRleGVkR2V0dGVyRnVuY3Rpb24oJGludGVyZmFjZSk7CisgICAgcmV0
dXJuIDAgdW5sZXNzIEdldEluZGV4ZWRHZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CiAgICAg
cmV0dXJuIDE7CiB9CiAKQEAgLTUzNzksNyArNTM3NSw3IEBAIHN1YiBJc0tleVZhbHVlSXRlcmFi
bGVJbnRlcmZhY2UKICAgICByZXR1cm4gMTsKIH0KIAotc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25JdGVyYWJsZUZ1bmN0aW9ucworc3ViIEdlbmVyYXRlSXRlcmFibGVEZWZpbml0aW9uCiB7CiAg
ICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogCkBAIC01NDE3LDkgKzU0MTMsOSBAQCBjb25zdCBK
U0M6OkNsYXNzSW5mbyAke2l0ZXJhdG9yUHJvdG90eXBlCiAKIEVORAogCi0gICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+aXRlcmFibGUtPmZ1bmN0aW9uc30pIHsKLSAgICAg
ICAgbXkgJHByb3BlcnR5TmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKLSAgICAgICAgbXkgJGZ1bmN0
aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rp
b24pOworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+
b3BlcmF0aW9uc30pIHsKKyAgICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICRvcGVyYXRpb24tPm5h
bWU7CisgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAKICAgICAgICAgbmV4dCBpZiAkcHJvcGVydHlO
YW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKQEAgLTYyMDcsNyArNjIwMyw3IEBAIHN1YiBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIAogc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xh
c3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFt
ZWRDb25zdHJ1Y3RvciwgJGZ1bmN0aW9uKSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRj
bGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJm
YWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IsICRvcGVyYXRpb24pID0gQF87CiAKICAg
ICByZXR1cm4gaWYgSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50ZXJmYWNlKTsKIApAQCAtNjIy
Miw5ICs2MjE4LDkgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0dXJuIGNvbnN0cnVjdCR7Y2xhc3NOYW1l
fSgqZXhlYyk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIn1cblxuIik7
CiAgICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29uc3RydWN0b3IoJGludGVyZmFjZSkgJiYg
KCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfSB8fCAk
Z2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpKSB7Ci0gICAgICAgICAgICBteSAkaXNPdmVybG9h
ZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319
ID4gMTsKKyAgICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkb3BlcmF0aW9uLT57b3Zlcmxv
YWRzfSAmJiBAeyRvcGVyYXRpb24tPntvdmVybG9hZHN9fSA+IDE7CiAgICAgICAgICAgICBpZiAo
JGlzT3ZlcmxvYWRlZCkgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0JHtjbGFzc05hbWV9JGZ1bmN0aW9u
LT57b3ZlcmxvYWRJbmRleH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0JHtjbGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3Rh
dGUpXG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAidGVtcGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwogICAg
ICAgICAgICAgfQpAQCAtNjIzOCwxMCArNjIzNCwxMCBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlZmluaXRpb24KIAogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3Iu
aD4ifSA9IDE7CiAKLSAgICAgICAgICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0
cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSk7CisgICAgICAgICAgICBHZW5lcmF0ZUFy
Z3VtZW50c0NvdW50Q2hlY2soJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlKTsK
IAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lID0gJGdlbmVyYXRp
bmdOYW1lZENvbnN0cnVjdG9yID8gImNyZWF0ZUZvckpTQ29uc3RydWN0b3IiIDogImNyZWF0ZSI7
Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
aygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uSW1wbGVtZW50
YXRpb25OYW1lKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9IEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0
aW9uSW1wbGVtZW50YXRpb25OYW1lKTsKIAogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGF1dG8gb2JqZWN0ID0gJHtmdW5jdGlvblN0cmluZ307XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmli
dXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uc3RydWN0b3JD
YWxsV2l0aH0sICJTY3JpcHRTdGF0ZSIpOwpAQCAtNjI3Myw4ICs2MjY5LDggQEAgc3ViIENvbnN0
cnVjdG9ySGFzUHJvcGVydGllcwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBmb3Jl
YWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIG5l
eHQgdW5sZXNzICgkZnVuY3Rpb24tPmlzU3RhdGljKTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRp
b24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgbmV4dCB1bmxlc3MgKCRv
cGVyYXRpb24tPmlzU3RhdGljKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCkBAIC02NDAw
LDI3ICs2Mzk2LDI1IEBAIHN1YiBIZWFkZXJOZWVkc1Byb3RvdHlwZURlY2xhcmF0aW9uCiAKIHN1
YiBJc1VuZm9yZ2VhYmxlCiB7Ci0gICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIG15ICRw
cm9wZXJ0eSA9IHNoaWZ0OworICAgIG15ICgkaW50ZXJmYWNlLCAkcHJvcGVydHkpID0gQF87CisK
ICAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntVbmZvcmdlYWJsZX0g
fHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5mb3JnZWFibGV9OwogfQogCiBz
dWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogewotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
LSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBteSAoJGludGVyZmFjZSwgJG9wZXJhdGlv
bikgPSBAXzsKIAogICAgIG15IEBzcGVjaWFscyA9ICgpOwotICAgIHB1c2goQHNwZWNpYWxzLCAo
IkRvbnREZWxldGUiLCAiUmVhZE9ubHkiKSkgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAk
ZnVuY3Rpb24pOwotICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9OwotICAgIGlmIChJc0pTQnVpbHRp
bigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKSB7CisgICAgcHVzaChAc3BlY2lhbHMsICgiRG9udERl
bGV0ZSIsICJSZWFkT25seSIpKSBpZiBJc1VuZm9yZ2VhYmxlKCRpbnRlcmZhY2UsICRvcGVyYXRp
b24pOworICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVudW0iKSBpZiAkb3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfTsKKyAgICBpZiAoSXNKU0J1aWx0aW4oJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OkJ1
aWx0aW4iKTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChA
c3BlY2lhbHMsICJKU0M6OkZ1bmN0aW9uIik7CiAgICAgfQotICAgIGlmICgkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgewotICAgICAgICBwdXNoKEBzcGVjaWFscywg
IkRPTUpJVEZ1bmN0aW9uIikgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01K
SVR9OworICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0p
IHsKKyAgICAgICAgcHVzaChAc3BlY2lhbHMsICJET01KSVRGdW5jdGlvbiIpIGlmICRvcGVyYXRp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CiAgICAgfQogICAgIHJldHVybiAoQHNw
ZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lhbHMpIDogIjAiOwogfQpAQCAtNjQ1MSwx
NSArNjQ0NSwxNyBAQCBzdWIgSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcgogCiBzdWIgR2V0SlNCdWls
dGluRnVuY3Rpb25OYW1lCiB7Ci0gICAgbXkgKCRjbGFzc05hbWUsICRmdW5jdGlvbikgPSBAXzsK
LSAgICBteSAkc2NvcGVOYW1lID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBs
ZW1lbnRlZEJ5fTsKKyAgICBteSAoJGNsYXNzTmFtZSwgJG9wZXJhdGlvbikgPSBAXzsKKworICAg
IG15ICRzY29wZU5hbWUgPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1l
bnRlZEJ5fTsKICAgICAkc2NvcGVOYW1lID0gc3Vic3RyICRjbGFzc05hbWUsIDIgdW5sZXNzICRz
Y29wZU5hbWU7Ci0gICAgcmV0dXJuIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmco
JHNjb3BlTmFtZSwgJGZ1bmN0aW9uLT5uYW1lKTsKKyAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVu
Y3Rpb25OYW1lRnJvbVN0cmluZygkc2NvcGVOYW1lLCAkb3BlcmF0aW9uLT5uYW1lKTsKIH0KIAog
c3ViIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcKIHsKICAgICBteSAoJHNjb3Bl
TmFtZSwgJGZ1bmN0aW9uTmFtZSkgPSBAXzsKKwogICAgIHJldHVybiAkY29kZUdlbmVyYXRvci0+
V0tfbGNmaXJzdCgkc2NvcGVOYW1lKSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5j
dGlvbk5hbWUpIC4gIkNvZGVHZW5lcmF0b3IiOwogfQogCkBAIC02NDc4LDggKzY0NzQsOCBAQCBz
dWIgQWRkSlNCdWlsdGluSW5jbHVkZXNJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7
Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpTQnVpbHRpblNjb3BlTmFtZSgkaW50ZXJm
YWNlLCAkZnVuY3Rpb24pIC4gIkJ1aWx0aW5zLmgiLCAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NvbmRpdGlvbmFsfSkgaWYgSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9u
KTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30p
IHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0SlNCdWlsdGluU2NvcGVOYW1lKCRpbnRl
cmZhY2UsICRvcGVyYXRpb24pIC4gIkJ1aWx0aW5zLmgiLCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVy
YXRpb24pOwogICAgIH0KIAogICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNl
LT5hdHRyaWJ1dGVzfSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9J
RExQYXJzZXIucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDIxNzQzMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4ICs1OSw4IEBA
IHN0cnVjdCggSURMSW50ZXJmYWNlID0+IHsKICAgICB0eXBlID0+ICdJRExUeXBlJywKICAgICBw
YXJlbnRUeXBlID0+ICdJRExUeXBlJywKICAgICBjb25zdGFudHMgPT4gJ0AnLCAgICAjIExpc3Qg
b2YgJ0lETENvbnN0YW50JwotICAgIGZ1bmN0aW9ucyA9PiAnQCcsICAgICMgTGlzdCBvZiAnSURM
T3BlcmF0aW9uJwotICAgIGFub255bW91c0Z1bmN0aW9ucyA9PiAnQCcsICMgTGlzdCBvZiAnSURM
T3BlcmF0aW9uJworICAgIG9wZXJhdGlvbnMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ0lETE9wZXJh
dGlvbicKKyAgICBhbm9ueW1vdXNPcGVyYXRpb25zID0+ICdAJywgIyBMaXN0IG9mICdJRExPcGVy
YXRpb24nCiAgICAgYXR0cmlidXRlcyA9PiAnQCcsICAgICMgTGlzdCBvZiAnSURMQXR0cmlidXRl
JwogICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29uc3RydWN0b3JzLCBsaXN0IG9mICdJRExP
cGVyYXRpb24nCiAgICAgY3VzdG9tQ29uc3RydWN0b3JzID0+ICdAJywgIyBDdXN0b20gY29uc3Ry
dWN0b3JzLCBsaXN0IG9mICdJRExPcGVyYXRpb24nCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RydWN0
KCBJRExJdGVyYWJsZSA9PiB7CiAgICAgaXNLZXlWYWx1ZSA9PiAnJCcsCiAgICAga2V5VHlwZSA9
PiAnSURMVHlwZScsCiAgICAgdmFsdWVUeXBlID0+ICdJRExUeXBlJywKLSAgICBmdW5jdGlvbnMg
PT4gJ0AnLCAjIEl0ZXJhYmxlIGZ1bmN0aW9ucyAoZW50cmllcywga2V5cywgdmFsdWVzLCBbU3lt
Ym9sLkl0ZXJhdG9yXSwgZm9yRWFjaCkKKyAgICBvcGVyYXRpb25zID0+ICdAJywgIyBJdGVyYWJs
ZSBvcGVyYXRpb25zIChlbnRyaWVzLCBrZXlzLCB2YWx1ZXMsIFtTeW1ib2wuSXRlcmF0b3JdLCBm
b3JFYWNoKQogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9PiAnJCcsCiB9KTsKIApAQCAtMTIzLDcg
KzEyMyw3IEBAIHN0cnVjdCggSURMTWFwTGlrZSA9PiB7CiAgICAga2V5VHlwZSA9PiAnSURMVHlw
ZScsCiAgICAgdmFsdWVUeXBlID0+ICdJRExUeXBlJywKICAgICBhdHRyaWJ1dGVzID0+ICdAJywg
IyBNYXBMaWtlIGF0dHJpYnV0ZXMgKHNpemUpCi0gICAgZnVuY3Rpb25zID0+ICdAJywgIyBNYXBM
aWtlIGZ1bmN0aW9ucyAoZW50cmllcywga2V5cywgdmFsdWVzLCBmb3JFYWNoLCBnZXQsIGhhcyBh
bmQgaWYgbm90IHJlYWRvbmx5LCBkZWxldGUsIHNldCBhbmQgY2xlYXIpCisgICAgb3BlcmF0aW9u
cyA9PiAnQCcsICMgTWFwTGlrZSBvcGVyYXRpb25zIChlbnRyaWVzLCBrZXlzLCB2YWx1ZXMsIGZv
ckVhY2gsIGdldCwgaGFzIGFuZCBpZiBub3QgcmVhZG9ubHksIGRlbGV0ZSwgc2V0IGFuZCBjbGVh
cikKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQnLAogfSk7CiAKQEAgLTEzMyw3ICsxMzMs
NyBAQCBzdHJ1Y3QoIElETFNlcmlhbGl6YWJsZSA9PiB7CiAgICAgaGFzQXR0cmlidXRlID0+ICck
JywgIyBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfQogICAgIGhhc0luaGVyaXQgPT4gJyQnLCAj
IHNlcmlhbGl6ZXIgPSB7IGluaGVyaXQgfQogICAgIGhhc0dldHRlciA9PiAnJCcsICMgc2VyaWFs
aXplciA9IHsgZ2V0dGVyIH0KLSAgICBmdW5jdGlvbnMgPT4gJ0AnLCAjIHRvSlNPTiBmdW5jdGlv
bgorICAgIG9wZXJhdGlvbnMgPT4gJ0AnLCAjIHRvSlNPTiBvcGVyYXRpb24KIH0pOwogCiAjIGh0
dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lkbC1jb25zdGFudHMKQEAgLTYzNCw3ICs2
MzQsNyBAQCBzdWIgYXBwbHlUeXBlZGVmcwogICAgICAgICAgICAgZm9yZWFjaCBteSAkYXR0cmli
dXRlIChAeyRkZWZpbml0aW9uLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICAgICAgICAgICRhdHRy
aWJ1dGUtPnR5cGUoJHNlbGYtPnR5cGVCeUFwcGx5aW5nVHlwZWRlZnMoJGF0dHJpYnV0ZS0+dHlw
ZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChA
eyRkZWZpbml0aW9uLT5mdW5jdGlvbnN9LCBAeyRkZWZpbml0aW9uLT5hbm9ueW1vdXNGdW5jdGlv
bnN9LCBAeyRkZWZpbml0aW9uLT5jb25zdHJ1Y3RvcnN9LCBAeyRkZWZpbml0aW9uLT5jdXN0b21D
b25zdHJ1Y3RvcnN9KSB7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGRl
ZmluaXRpb24tPm9wZXJhdGlvbnN9LCBAeyRkZWZpbml0aW9uLT5hbm9ueW1vdXNPcGVyYXRpb25z
fSwgQHskZGVmaW5pdGlvbi0+Y29uc3RydWN0b3JzfSwgQHskZGVmaW5pdGlvbi0+Y3VzdG9tQ29u
c3RydWN0b3JzfSkgewogICAgICAgICAgICAgICAgICRzZWxmLT5hcHBseVR5cGVkZWZzVG9PcGVy
YXRpb24oJG9wZXJhdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKHJlZigk
ZGVmaW5pdGlvbikgZXEgIklETERpY3Rpb25hcnkiKSB7CkBAIC0xMzUwLDEzICsxMzUwLDEzIEBA
IHN1YiBwYXJzZVNlcmlhbGl6ZXIKICAgICAgICAgICAgICRuZXdEYXRhTm9kZSA9IElETFNlcmlh
bGl6YWJsZS0+bmV3KCk7CiAgICAgICAgIH0KIAotICAgICAgICBteSAkdG9KU09ORnVuY3Rpb24g
PSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICAgICAkdG9KU09ORnVuY3Rpb24tPm5hbWUoInRv
SlNPTiIpOworICAgICAgICBteSAkdG9KU09OT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXco
KTsKKyAgICAgICAgJHRvSlNPTk9wZXJhdGlvbi0+bmFtZSgidG9KU09OIik7CiAKICAgICAgICAg
JHNlbGYtPmFzc2VydEV4dGVuZGVkQXR0cmlidXRlc1ZhbGlkRm9yQ29udGV4dCgkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0LCAib3BlcmF0aW9uIik7Ci0gICAgICAgICR0b0pTT05GdW5jdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICAgICAkdG9KU09O
RnVuY3Rpb24tPmlzU2VyaWFsaXplcigxKTsKLSAgICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+
ZnVuY3Rpb25zfSwgJHRvSlNPTkZ1bmN0aW9uKTsKKyAgICAgICAgJHRvSlNPTk9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICAgICAkdG9K
U09OT3BlcmF0aW9uLT5pc1NlcmlhbGl6ZXIoMSk7CisgICAgICAgIHB1c2goQHskbmV3RGF0YU5v
ZGUtPm9wZXJhdGlvbnN9LCAkdG9KU09OT3BlcmF0aW9uKTsKIAogICAgICAgICAkc2VsZi0+YXNz
ZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIjsiLCBfX0xJTkVfXyk7CiAgICAgICAg
IHJldHVybiAkbmV3RGF0YU5vZGU7CkBAIC0xNzI1LDQwICsxNzI1LDQwIEBAIHN1YiBwYXJzZU9w
dGlvbmFsSXRlcmFibGVJbnRlcmZhY2UKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFs
dWUoJHNlbGYtPmdldFRva2VuKCksICI+IiwgX19MSU5FX18pOwogCi0gICAgbXkgJHN5bWJvbEl0
ZXJhdG9yRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICRzeW1ib2xJdGVyYXRv
ckZ1bmN0aW9uLT5uYW1lKCJbU3ltYm9sLkl0ZXJhdG9yXSIpOwotICAgICRzeW1ib2xJdGVyYXRv
ckZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0g
ICAgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24tPmlzSXRlcmFibGUoMSk7Ci0KLSAgICBteSAkZW50
cmllc0Z1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKLSAgICAkZW50cmllc0Z1bmN0aW9u
LT5uYW1lKCJlbnRyaWVzIik7Ci0gICAgJGVudHJpZXNGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRlbnRyaWVzRnVuY3Rpb24tPmlzSXRl
cmFibGUoMSk7Ci0KLSAgICBteSAka2V5c0Z1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsK
LSAgICAka2V5c0Z1bmN0aW9uLT5uYW1lKCJrZXlzIik7Ci0gICAgJGtleXNGdW5jdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRrZXlzRnVuY3Rp
b24tPmlzSXRlcmFibGUoMSk7Ci0KLSAgICBteSAkdmFsdWVzRnVuY3Rpb24gPSBJRExPcGVyYXRp
b24tPm5ldygpOwotICAgICR2YWx1ZXNGdW5jdGlvbi0+bmFtZSgidmFsdWVzIik7Ci0gICAgJHZh
bHVlc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT5pc0l0ZXJhYmxlKDEpOwotCi0gICAgbXkgJGZvckVhY2hG
dW5jdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7Ci0gICAgJGZvckVhY2hGdW5jdGlvbi0+bmFt
ZSgiZm9yRWFjaCIpOwotICAgICRmb3JFYWNoRnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcygk
ZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAkZm9yRWFjaEZ1bmN0aW9uLT5pc0l0ZXJhYmxl
KDEpOworICAgIG15ICRzeW1ib2xJdGVyYXRvck9wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3
KCk7CisgICAgJHN5bWJvbEl0ZXJhdG9yT3BlcmF0aW9uLT5uYW1lKCJbU3ltYm9sLkl0ZXJhdG9y
XSIpOworICAgICRzeW1ib2xJdGVyYXRvck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRl
eHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRzeW1ib2xJdGVyYXRvck9wZXJhdGlvbi0+aXNJ
dGVyYWJsZSgxKTsKKworICAgIG15ICRlbnRyaWVzT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5u
ZXcoKTsKKyAgICAkZW50cmllc09wZXJhdGlvbi0+bmFtZSgiZW50cmllcyIpOworICAgICRlbnRy
aWVzT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
CisgICAgJGVudHJpZXNPcGVyYXRpb24tPmlzSXRlcmFibGUoMSk7CisKKyAgICBteSAka2V5c09w
ZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGtleXNPcGVyYXRpb24tPm5hbWUo
ImtleXMiKTsKKyAgICAka2V5c09wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOworICAgICRrZXlzT3BlcmF0aW9uLT5pc0l0ZXJhYmxlKDEpOworCisg
ICAgbXkgJHZhbHVlc09wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJHZhbHVl
c09wZXJhdGlvbi0+bmFtZSgidmFsdWVzIik7CisgICAgJHZhbHVlc09wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICR2YWx1ZXNPcGVyYXRp
b24tPmlzSXRlcmFibGUoMSk7CisKKyAgICBteSAkZm9yRWFjaE9wZXJhdGlvbiA9IElETE9wZXJh
dGlvbi0+bmV3KCk7CisgICAgJGZvckVhY2hPcGVyYXRpb24tPm5hbWUoImZvckVhY2giKTsKKyAg
ICAkZm9yRWFjaE9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOworICAgICRmb3JFYWNoT3BlcmF0aW9uLT5pc0l0ZXJhYmxlKDEpOwogICAgIG15ICRm
b3JFYWNoQXJndW1lbnQgPSBJRExBcmd1bWVudC0+bmV3KCk7CiAgICAgJGZvckVhY2hBcmd1bWVu
dC0+bmFtZSgiY2FsbGJhY2siKTsKICAgICAkZm9yRWFjaEFyZ3VtZW50LT50eXBlKG1ha2VTaW1w
bGVUeXBlKCJhbnkiKSk7Ci0gICAgcHVzaChAeyRmb3JFYWNoRnVuY3Rpb24tPmFyZ3VtZW50c30s
ICgkZm9yRWFjaEFyZ3VtZW50KSk7CisgICAgcHVzaChAeyRmb3JFYWNoT3BlcmF0aW9uLT5hcmd1
bWVudHN9LCAoJGZvckVhY2hBcmd1bWVudCkpOwogCi0gICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+
ZnVuY3Rpb25zfSwgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24pOwotICAgIHB1c2goQHskbmV3RGF0
YU5vZGUtPmZ1bmN0aW9uc30sICRlbnRyaWVzRnVuY3Rpb24pOwotICAgIHB1c2goQHskbmV3RGF0
YU5vZGUtPmZ1bmN0aW9uc30sICRrZXlzRnVuY3Rpb24pOwotICAgIHB1c2goQHskbmV3RGF0YU5v
ZGUtPmZ1bmN0aW9uc30sICR2YWx1ZXNGdW5jdGlvbik7Ci0gICAgcHVzaChAeyRuZXdEYXRhTm9k
ZS0+ZnVuY3Rpb25zfSwgJGZvckVhY2hGdW5jdGlvbik7CisgICAgcHVzaChAeyRuZXdEYXRhTm9k
ZS0+b3BlcmF0aW9uc30sICRzeW1ib2xJdGVyYXRvck9wZXJhdGlvbik7CisgICAgcHVzaChAeyRu
ZXdEYXRhTm9kZS0+b3BlcmF0aW9uc30sICRlbnRyaWVzT3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7
JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwgJGtleXNPcGVyYXRpb24pOworICAgIHB1c2goQHsk
bmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkdmFsdWVzT3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7
JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwgJGZvckVhY2hPcGVyYXRpb24pOwogCiAgICAgcmV0
dXJuICRuZXdEYXRhTm9kZTsKIH0KQEAgLTE4MDYsOTggKzE4MDYsOTggQEAgc3ViIHBhcnNlTWFw
TGlrZVByb3BlcnRpZXMKICAgICAkc2l6ZUF0dHJpYnV0ZS0+dHlwZShtYWtlU2ltcGxlVHlwZSgi
YW55IikpOwogICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmF0dHJpYnV0ZXN9LCAkc2l6ZUF0dHJp
YnV0ZSk7CiAKLSAgICBteSAkZ2V0RnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAg
ICRnZXRGdW5jdGlvbi0+bmFtZSgiZ2V0Iik7Ci0gICAgJGdldEZ1bmN0aW9uLT5pc01hcExpa2Uo
MSk7CisgICAgbXkgJGdldE9wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGdl
dE9wZXJhdGlvbi0+bmFtZSgiZ2V0Iik7CisgICAgJGdldE9wZXJhdGlvbi0+aXNNYXBMaWtlKDEp
OwogICAgIG15ICRnZXRBcmd1bWVudCA9IElETEFyZ3VtZW50LT5uZXcoKTsKICAgICAkZ2V0QXJn
dW1lbnQtPm5hbWUoImtleSIpOwogICAgICRnZXRBcmd1bWVudC0+dHlwZSgkbmV3RGF0YU5vZGUt
PmtleVR5cGUpOwogICAgICRnZXRBcmd1bWVudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOwotICAgIHB1c2goQHskZ2V0RnVuY3Rpb24tPmFyZ3VtZW50c30sICgk
Z2V0QXJndW1lbnQpKTsKLSAgICAkZ2V0RnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcygkbm90
RW51bWVyYWJsZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJGdldEZ1bmN0aW9uLT50eXBl
KG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7Ci0KLSAgICBteSAkaGFzRnVuY3Rpb24gPSBJRExPcGVy
YXRpb24tPm5ldygpOwotICAgICRoYXNGdW5jdGlvbi0+bmFtZSgiaGFzIik7Ci0gICAgJGhhc0Z1
bmN0aW9uLT5pc01hcExpa2UoMSk7CisgICAgcHVzaChAeyRnZXRPcGVyYXRpb24tPmFyZ3VtZW50
c30sICgkZ2V0QXJndW1lbnQpKTsKKyAgICAkZ2V0T3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRnZXRPcGVyYXRp
b24tPnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKKworICAgIG15ICRoYXNPcGVyYXRpb24g
PSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICRoYXNPcGVyYXRpb24tPm5hbWUoImhhcyIpOwor
ICAgICRoYXNPcGVyYXRpb24tPmlzTWFwTGlrZSgxKTsKICAgICBteSAkaGFzQXJndW1lbnQgPSBJ
RExBcmd1bWVudC0+bmV3KCk7CiAgICAgJGhhc0FyZ3VtZW50LT5uYW1lKCJrZXkiKTsKICAgICAk
aGFzQXJndW1lbnQtPnR5cGUoJG5ld0RhdGFOb2RlLT5rZXlUeXBlKTsKICAgICAkaGFzQXJndW1l
bnQtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICBwdXNo
KEB7JGhhc0Z1bmN0aW9uLT5hcmd1bWVudHN9LCAoJGhhc0FyZ3VtZW50KSk7Ci0gICAgJGhhc0Z1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOwotICAgICRoYXNGdW5jdGlvbi0+dHlwZShtYWtlU2ltcGxlVHlwZSgiYW55IikpOwot
Ci0gICAgbXkgJGVudHJpZXNGdW5jdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7Ci0gICAgJGVu
dHJpZXNGdW5jdGlvbi0+bmFtZSgiZW50cmllcyIpOwotICAgICRlbnRyaWVzRnVuY3Rpb24tPmlz
TWFwTGlrZSgxKTsKLSAgICAkZW50cmllc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5v
dEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRlbnRyaWVzRnVuY3Rpb24t
PnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKLQotICAgIG15ICRrZXlzRnVuY3Rpb24gPSBJ
RExPcGVyYXRpb24tPm5ldygpOwotICAgICRrZXlzRnVuY3Rpb24tPm5hbWUoImtleXMiKTsKLSAg
ICAka2V5c0Z1bmN0aW9uLT5pc01hcExpa2UoMSk7Ci0gICAgJGtleXNGdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzKCRub3RFbnVtZXJhYmxlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAk
a2V5c0Z1bmN0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7Ci0KLSAgICBteSAkdmFs
dWVzRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICR2YWx1ZXNGdW5jdGlvbi0+
bmFtZSgidmFsdWVzIik7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT5pc01hcExpa2UoMSk7Ci0gICAg
JHZhbHVlc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlz
dCk7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJh
YmxlfSA9IDE7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnki
KSk7Ci0KLSAgICBteSAkZm9yRWFjaEZ1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKLSAg
ICAkZm9yRWFjaEZ1bmN0aW9uLT5uYW1lKCJmb3JFYWNoIik7Ci0gICAgJGZvckVhY2hGdW5jdGlv
bi0+aXNNYXBMaWtlKDEpOwotICAgICRmb3JFYWNoRnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cyh7fSk7Ci0gICAgJGZvckVhY2hGdW5jdGlvbi0+dHlwZShtYWtlU2ltcGxlVHlwZSgiYW55Iikp
OworICAgIHB1c2goQHskaGFzT3BlcmF0aW9uLT5hcmd1bWVudHN9LCAoJGhhc0FyZ3VtZW50KSk7
CisgICAgJGhhc09wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRub3RFbnVtZXJhYmxlRXh0
ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAkaGFzT3BlcmF0aW9uLT50eXBlKG1ha2VTaW1wbGVU
eXBlKCJhbnkiKSk7CisKKyAgICBteSAkZW50cmllc09wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+
bmV3KCk7CisgICAgJGVudHJpZXNPcGVyYXRpb24tPm5hbWUoImVudHJpZXMiKTsKKyAgICAkZW50
cmllc09wZXJhdGlvbi0+aXNNYXBMaWtlKDEpOworICAgICRlbnRyaWVzT3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAg
ICRlbnRyaWVzT3BlcmF0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7CisKKyAgICBt
eSAka2V5c09wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGtleXNPcGVyYXRp
b24tPm5hbWUoImtleXMiKTsKKyAgICAka2V5c09wZXJhdGlvbi0+aXNNYXBMaWtlKDEpOworICAg
ICRrZXlzT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRl
ZEF0dHJpYnV0ZUxpc3QpOworICAgICRrZXlzT3BlcmF0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBl
KCJhbnkiKSk7CisKKyAgICBteSAkdmFsdWVzT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXco
KTsKKyAgICAkdmFsdWVzT3BlcmF0aW9uLT5uYW1lKCJ2YWx1ZXMiKTsKKyAgICAkdmFsdWVzT3Bl
cmF0aW9uLT5pc01hcExpa2UoMSk7CisgICAgJHZhbHVlc09wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICR2YWx1ZXNPcGVyYXRpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9ID0gMTsKKyAgICAkdmFsdWVzT3BlcmF0
aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7CisKKyAgICBteSAkZm9yRWFjaE9wZXJh
dGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGZvckVhY2hPcGVyYXRpb24tPm5hbWUo
ImZvckVhY2giKTsKKyAgICAkZm9yRWFjaE9wZXJhdGlvbi0+aXNNYXBMaWtlKDEpOworICAgICRm
b3JFYWNoT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoe30pOworICAgICRmb3JFYWNoT3Bl
cmF0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7CiAgICAgbXkgJGZvckVhY2hBcmd1
bWVudCA9IElETEFyZ3VtZW50LT5uZXcoKTsKICAgICAkZm9yRWFjaEFyZ3VtZW50LT5uYW1lKCJj
YWxsYmFjayIpOwogICAgICRmb3JFYWNoQXJndW1lbnQtPnR5cGUobWFrZVNpbXBsZVR5cGUoImFu
eSIpKTsKICAgICAkZm9yRWFjaEFyZ3VtZW50LT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVk
QXR0cmlidXRlTGlzdCk7Ci0gICAgcHVzaChAeyRmb3JFYWNoRnVuY3Rpb24tPmFyZ3VtZW50c30s
ICgkZm9yRWFjaEFyZ3VtZW50KSk7CisgICAgcHVzaChAeyRmb3JFYWNoT3BlcmF0aW9uLT5hcmd1
bWVudHN9LCAoJGZvckVhY2hBcmd1bWVudCkpOwogCi0gICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+
ZnVuY3Rpb25zfSwgJGdldEZ1bmN0aW9uKTsKLSAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5mdW5j
dGlvbnN9LCAkaGFzRnVuY3Rpb24pOwotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9u
c30sICRlbnRyaWVzRnVuY3Rpb24pOwotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9u
c30sICRrZXlzRnVuY3Rpb24pOwotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30s
ICR2YWx1ZXNGdW5jdGlvbik7Ci0gICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwg
JGZvckVhY2hGdW5jdGlvbik7CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+b3BlcmF0aW9uc30s
ICRnZXRPcGVyYXRpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAk
aGFzT3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwgJGVu
dHJpZXNPcGVyYXRpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAk
a2V5c09wZXJhdGlvbik7CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+b3BlcmF0aW9uc30sICR2
YWx1ZXNPcGVyYXRpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAk
Zm9yRWFjaE9wZXJhdGlvbik7CiAKICAgICByZXR1cm4gJG5ld0RhdGFOb2RlIGlmICRpc1JlYWRP
bmx5OwogCi0gICAgbXkgJGFkZEZ1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKLSAgICAk
YWRkRnVuY3Rpb24tPm5hbWUoImFkZCIpOwotICAgICRhZGRGdW5jdGlvbi0+aXNNYXBMaWtlKDEp
OworICAgIG15ICRhZGRPcGVyYXRpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICRhZGRP
cGVyYXRpb24tPm5hbWUoImFkZCIpOworICAgICRhZGRPcGVyYXRpb24tPmlzTWFwTGlrZSgxKTsK
ICAgICBteSAkYWRkQXJndW1lbnQgPSBJRExBcmd1bWVudC0+bmV3KCk7CiAgICAgJGFkZEFyZ3Vt
ZW50LT5uYW1lKCJrZXkiKTsKICAgICAkYWRkQXJndW1lbnQtPnR5cGUoJG5ld0RhdGFOb2RlLT5r
ZXlUeXBlKTsKICAgICAkYWRkQXJndW1lbnQtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KTsKLSAgICBwdXNoKEB7JGFkZEZ1bmN0aW9uLT5hcmd1bWVudHN9LCAoJGFk
ZEFyZ3VtZW50KSk7Ci0gICAgJGFkZEZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVu
dW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRhZGRGdW5jdGlvbi0+dHlwZSht
YWtlU2ltcGxlVHlwZSgiYW55IikpOwotCi0gICAgbXkgJGNsZWFyRnVuY3Rpb24gPSBJRExPcGVy
YXRpb24tPm5ldygpOwotICAgICRjbGVhckZ1bmN0aW9uLT5uYW1lKCJjbGVhciIpOwotICAgICRj
bGVhckZ1bmN0aW9uLT5pc01hcExpa2UoMSk7Ci0gICAgJGNsZWFyRnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcygkbm90RW51bWVyYWJsZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJGNs
ZWFyRnVuY3Rpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUoInZvaWQiKSk7Ci0KLSAgICBteSAkZGVs
ZXRlRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICRkZWxldGVGdW5jdGlvbi0+
bmFtZSgiZGVsZXRlIik7Ci0gICAgJGRlbGV0ZUZ1bmN0aW9uLT5pc01hcExpa2UoMSk7CisgICAg
cHVzaChAeyRhZGRPcGVyYXRpb24tPmFyZ3VtZW50c30sICgkYWRkQXJndW1lbnQpKTsKKyAgICAk
YWRkT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0
dHJpYnV0ZUxpc3QpOworICAgICRhZGRPcGVyYXRpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUoImFu
eSIpKTsKKworICAgIG15ICRjbGVhck9wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7Cisg
ICAgJGNsZWFyT3BlcmF0aW9uLT5uYW1lKCJjbGVhciIpOworICAgICRjbGVhck9wZXJhdGlvbi0+
aXNNYXBMaWtlKDEpOworICAgICRjbGVhck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRu
b3RFbnVtZXJhYmxlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAkY2xlYXJPcGVyYXRpb24t
PnR5cGUobWFrZVNpbXBsZVR5cGUoInZvaWQiKSk7CisKKyAgICBteSAkZGVsZXRlT3BlcmF0aW9u
ID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkZGVsZXRlT3BlcmF0aW9uLT5uYW1lKCJkZWxl
dGUiKTsKKyAgICAkZGVsZXRlT3BlcmF0aW9uLT5pc01hcExpa2UoMSk7CiAgICAgbXkgJGRlbGV0
ZUFyZ3VtZW50ID0gSURMQXJndW1lbnQtPm5ldygpOwogICAgICRkZWxldGVBcmd1bWVudC0+bmFt
ZSgia2V5Iik7CiAgICAgJGRlbGV0ZUFyZ3VtZW50LT50eXBlKCRuZXdEYXRhTm9kZS0+a2V5VHlw
ZSk7CiAgICAgJGRlbGV0ZUFyZ3VtZW50LT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0
cmlidXRlTGlzdCk7Ci0gICAgcHVzaChAeyRkZWxldGVGdW5jdGlvbi0+YXJndW1lbnRzfSwgKCRk
ZWxldGVBcmd1bWVudCkpOwotICAgICRkZWxldGVGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
KCRub3RFbnVtZXJhYmxlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAkZGVsZXRlRnVuY3Rp
b24tPnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKLQotICAgIHB1c2goQHskbmV3RGF0YU5v
ZGUtPmZ1bmN0aW9uc30sICRhZGRGdW5jdGlvbik7Ci0gICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+
ZnVuY3Rpb25zfSwgJGNsZWFyRnVuY3Rpb24pOwotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1
bmN0aW9uc30sICRkZWxldGVGdW5jdGlvbik7CisgICAgcHVzaChAeyRkZWxldGVPcGVyYXRpb24t
PmFyZ3VtZW50c30sICgkZGVsZXRlQXJndW1lbnQpKTsKKyAgICAkZGVsZXRlT3BlcmF0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwor
ICAgICRkZWxldGVPcGVyYXRpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKKworICAg
IHB1c2goQHskbmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkYWRkT3BlcmF0aW9uKTsKKyAgICBw
dXNoKEB7JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwgJGNsZWFyT3BlcmF0aW9uKTsKKyAgICBw
dXNoKEB7JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwgJGRlbGV0ZU9wZXJhdGlvbik7CiAKICAg
ICByZXR1cm4gJG5ld0RhdGFOb2RlOwogfQpAQCAtMjc2Miw5ICsyNzYyLDkgQEAgc3ViIGFwcGx5
TWVtYmVyTGlzdAogICAgICAgICB9CiAgICAgICAgIGlmIChyZWYoJGl0ZW0pIGVxICJJRExPcGVy
YXRpb24iKSB7CiAgICAgICAgICAgICBpZiAoJGl0ZW0tPm5hbWUgZXEgIiIpIHsKLSAgICAgICAg
ICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+YW5vbnltb3VzRnVuY3Rpb25zfSwgJGl0ZW0pOwor
ICAgICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5hbm9ueW1vdXNPcGVyYXRpb25zfSwg
JGl0ZW0pOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwdXNoKEB7JGlu
dGVyZmFjZS0+ZnVuY3Rpb25zfSwgJGl0ZW0pOworICAgICAgICAgICAgICAgIHB1c2goQHskaW50
ZXJmYWNlLT5vcGVyYXRpb25zfSwgJGl0ZW0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
bmV4dDsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9n
ZW5lcmF0ZS1iaW5kaW5ncy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCShyZXZpc2lvbiAyMTc0MzIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCSh3b3JraW5n
IGNvcHkpCkBAIC0xODAsMTcgKzE4MCwxNyBAQCBmb3JlYWNoIG15ICRpZGxGaWxlIChAc3VwcGxl
bWVudGVkSWRsRmlsCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICMgU3VwcG9ydCBmb3Ig
bWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0gICAgICAgICAgICBmb3JlYWNoIG15ICRm
dW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICAgICAgICAgbmV4
dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQoJGZ1bmN0aW9uLCBcQHRhcmdldEdsb2Jh
bENvbnRleHRzKTsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJm
YWNlLT5vcGVyYXRpb25zfSkgeworICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIHNob3VsZFBy
b3BlcnR5QmVFeHBvc2VkKCRvcGVyYXRpb24sIFxAdGFyZ2V0R2xvYmFsQ29udGV4dHMpOwogCiAg
ICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlzIG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBi
eSAkaW50ZXJmYWNlTmFtZS4KLSAgICAgICAgICAgICAgICAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNl
LT5pc1BhcnRpYWw7CisgICAgICAgICAgICAgICAgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZhY2VOYW1lIGlmICRpbnRlcmZhY2UtPmlz
UGFydGlhbDsKIAogICAgICAgICAgICAgICAgICMgQWRkIGludGVyZmFjZS13aWRlIGV4dGVuZGVk
IGF0dHJpYnV0ZXMgdG8gZWFjaCBtZXRob2QuCiAgICAgICAgICAgICAgICAgZm9yZWFjaCBteSAk
ZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CisgICAgICAgICAgICAgICAgICAgICRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB1c2goQHskdGFyZ2V0RGF0YU5vZGUt
PmZ1bmN0aW9uc30sICRmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgcHVzaChAeyR0YXJnZXRE
YXRhTm9kZS0+b3BlcmF0aW9uc30sICRvcGVyYXRpb24pOwogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMTc0MzcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOCBAQAorMjAxNy0wNS0yNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFtXZWJJRExdIFVzZSB0aGUgdGVybSAnb3BlcmF0aW9uJyBtb3JlIGNvbnNpc3RlbnRseQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNjAxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugd2VyZSB1
c2luZyB0aGUgdGVybSAnb3BlcmF0aW9uJywgYSBXZWJJREwgdGVybSBmb3IgZnVuY3Rpb24tbGlr
ZQorICAgICAgICBjb25zdHJ1Y3RzLCBpbmNvbnNpc3RlbnRseSBpbiB0aGUgY29kZSBnZW5lcmF0
b3IuIE5vdywgd2hlbiB3ZSB1c2UKKyAgICAgICAgJ29wZXJhdGlvbicgd2hlbiByZWZlcnJpbmcg
dG8gdGhlIElETCBjb25jZXB0ICh1c3VhbGx5IHRoZSBvYmplY3QgdGhlCisgICAgICAgIHBhcnNl
ciBwcm9kdWNlcykgYW5kICdmdW5jdGlvbicgd2hlbiByZWZlcnJpbmcgdG8gY29kZSBiZWluZyBn
ZW5lcmF0ZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9CaW5kaW5ncy9Db2RlR2VuZXJh
dG9yRHVtcFJlbmRlclRyZWUucG06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbToKKwogMjAxNy0wNS0y
NSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0FUS10g
RXhwb3NlIGRvYy1mb290bm90ZSBBUklBIHJvbGUgd2l0aCBBVEtfUk9MRV9GT09UTk9URQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJU
cmVlLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVH
ZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQkocmV2aXNpb24gMjE3NDMyKQorKysgVG9vbHMvRHVt
cFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzMsMTAgKzE3MywxMCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBjb25z
dCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZXMoKTsKIEVPRgogCi0gICAgaWYgKG15IEBmdW5j
dGlvbnMgPSBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKKyAgICBpZiAobXkgQG9wZXJhdGlv
bnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CiAgICAgICAgIHB1c2goQGNvbnRlbnRz
LCAiXG4gICAgLy8gRnVuY3Rpb25zXG5cbiIpOwotICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlv
biAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGlj
IEpTVmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmLCBKU09iamVjdFJl
ZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBKU1ZhbHVlUmVmKik7
XG4iKTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3BlcmF0aW9ucykgeworICAg
ICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIEpTVmFsdWVSZWYgQHtbJG9wZXJh
dGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmLCBzaXpl
X3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopO1xuIik7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTI2NCwxMyArMjY0LDEzIEBAIEVPRgogICAgIHB1c2goQGNvbnRlbnRzLCAkc2Vs
Zi0+X3N0YXRpY0Z1bmN0aW9uc0dldHRlckltcGxlbWVudGF0aW9uKCRpbnRlcmZhY2UpLCAiXG4i
KTsKICAgICBwdXNoKEBjb250ZW50cywgJHNlbGYtPl9zdGF0aWNWYWx1ZXNHZXR0ZXJJbXBsZW1l
bnRhdGlvbigkaW50ZXJmYWNlKSk7CiAKLSAgICBpZiAobXkgQGZ1bmN0aW9ucyA9IEB7JGludGVy
ZmFjZS0+ZnVuY3Rpb25zfSkgeworICAgIGlmIChteSBAb3BlcmF0aW9ucyA9IEB7JGludGVyZmFj
ZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgcHVzaChAY29udGVudHMsICJcbi8vIEZ1bmN0aW9u
c1xuIik7CiAKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5jdGlvbnMpIHsKKyAg
ICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3BlcmF0aW9ucykgewogICAgICAgICAgICAg
cHVzaChAY29udGVudHMsIDw8RU9GKTsKIAotSlNWYWx1ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRm
dW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK0pTVmFsdWVSZWYgJHtjbGFzc05h
bWV9OjpAe1skb3BlcmF0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0
UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgICR7
aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NO
YW1lfShjb250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBpZiAoIWltcGwpCkBAIC0yNzgsMTUgKzI3
OCwxNSBAQCBKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6QHtbJGZ1bmN0aW9uLT5uCiAKIEVPRgog
ICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2FsbDsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5nIn0pIHsKLSAgICAg
ICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAi
KGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uKSI7CisgICAgICAg
ICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50
SGFuZGxpbmcifSkgeworICAgICAgICAgICAgICAgICRmdW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAu
ICRvcGVyYXRpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywg
ZXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG15IEBh
cmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgICAgICBteSBAc3BlY2lmaWVkQXJndW1lbnRzID0g
QHskZnVuY3Rpb24tPmFyZ3VtZW50c307CisgICAgICAgICAgICAgICAgbXkgQHNwZWNpZmllZEFy
Z3VtZW50cyA9IEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfTsKIAotICAgICAgICAgICAgICAgICRz
ZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVuY3Rpb24tPnR5cGUp
OworICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1
ZGVzLCAkb3BlcmF0aW9uLT50eXBlKTsKIAotICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29udGV4dCJ9KSB7CisgICAgICAgICAgICAgICAg
aWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29udGV4dCJ9KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImNvbnRleHQiKTsKICAgICAgICAg
ICAgICAgICB9CiAKQEAgLTMwMCwxMSArMzAwLDExIEBAIEVPRgogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBhcmd1bWVudHMsICRzZWxmLT5fYXJndW1lbnRFeHByZXNzaW9uKCRhcmd1bWVudCkp
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICRmdW5jdGlvbkNhbGwgPSAi
aW1wbC0+IiAuICRmdW5jdGlvbi0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJpbXBsLT4iIC4gJG9wZXJh
dGlvbi0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgICR7
ZnVuY3Rpb25DYWxsfTtcblxuIikgaWYgJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVxICJ2b2lkIjsK
LSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVybiAiIC4gJHNlbGYtPl9yZXR1
cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xufVxuIik7
CisgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAke2Z1bmN0aW9uQ2FsbH07XG5cbiIp
IGlmICRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiOworICAgICAgICAgICAgcHVzaChA
Y29udGVudHMsICIgICAgcmV0dXJuICIgLiAkc2VsZi0+X3JldHVybkV4cHJlc3Npb24oJG9wZXJh
dGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xufVxuIik7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTUxMiwxMiArNTEyLDEyIEBAIHN1YiBfc3RhdGljRnVuY3Rpb25zR2V0dGVySW1wbGVt
ZW50YXRpb24KICAgICAgICAgcmV0dXJuICAieyBcIiRuYW1lXCIsICRuYW1lLCAiIC4gam9pbigi
IHwgIiwgQGF0dHJpYnV0ZXMpIC4gIiB9IjsKICAgICB9OwogCi0gICAgcmV0dXJuICRzZWxmLT5f
c3RhdGljRnVuY3Rpb25zT3JWYWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAi
ZnVuY3Rpb24iLCAieyAwLCAwLCAwIH0iLCAkbWFwRnVuY3Rpb24sICRpbnRlcmZhY2UtPmZ1bmN0
aW9ucyk7CisgICAgcmV0dXJuICRzZWxmLT5fc3RhdGljRnVuY3Rpb25zT3JWYWx1ZXNHZXR0ZXJJ
bXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAiZnVuY3Rpb24iLCAieyAwLCAwLCAwIH0iLCAkbWFw
RnVuY3Rpb24sICRpbnRlcmZhY2UtPm9wZXJhdGlvbnMpOwogfQogCiBzdWIgX3N0YXRpY0Z1bmN0
aW9uc09yVmFsdWVzR2V0dGVySW1wbGVtZW50YXRpb24KIHsKLSAgICBteSAoJHNlbGYsICRpbnRl
cmZhY2UsICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRlcm1pbmF0b3IsICRtYXBGdW5jdGlvbiwg
JGZ1bmN0aW9uc09yQXR0cmlidXRlcykgPSBAXzsKKyAgICBteSAoJHNlbGYsICRpbnRlcmZhY2Us
ICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRlcm1pbmF0b3IsICRtYXBGdW5jdGlvbiwgJG9wZXJh
dGlvbnNPckF0dHJpYnV0ZXMpID0gQF87CiAKICAgICBteSAkY2xhc3NOYW1lID0gX2NsYXNzTmFt
ZSgkaW50ZXJmYWNlLT50eXBlKTsKICAgICBteSAkdXBwZXJjYXNlRnVuY3Rpb25PclZhbHVlID0g
JCRzZWxme2NvZGVHZW5lcmF0b3J9LT5XS191Y2ZpcnN0KCRmdW5jdGlvbk9yVmFsdWUpOwpAQCAt
NTI3LDcgKzUyNyw3IEBAIGNvbnN0IEpTU3RhdGljJHt1cHBlcmNhc2VGdW5jdGlvbk9yVmFsdWUK
IHsKIEVPRgogCi0gICAgbXkgQGluaXRpYWxpemVycyA9IG1hcCgmJG1hcEZ1bmN0aW9uLCBAeyRm
dW5jdGlvbnNPckF0dHJpYnV0ZXN9KTsKKyAgICBteSBAaW5pdGlhbGl6ZXJzID0gbWFwKCYkbWFw
RnVuY3Rpb24sIEB7JG9wZXJhdGlvbnNPckF0dHJpYnV0ZXN9KTsKICAgICByZXR1cm4gJHJlc3Vs
dCAuICIgICAgcmV0dXJuIDA7XG59XG4iIHVubGVzcyBAaW5pdGlhbGl6ZXJzOwogCiAgICAgJHJl
c3VsdCAuPSA8PEVPRgpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5lci5wbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JU
ZXN0UnVubmVyLnBtCShyZXZpc2lvbiAyMTc0MzIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorZyMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xODcsMTAgKzE4NywxMCBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZXMoKTsKIEVPRgogCi0gICAg
aWYgKG15IEBmdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKKyAgICBpZiAo
bXkgQG9wZXJhdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CiAgICAgICAgIHB1
c2goQGNvbnRlbnRzLCAiXG4gICAgLy8gRnVuY3Rpb25zXG5cbiIpOwotICAgICAgICBmb3JlYWNo
IG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgcHVzaChAY29udGVudHMs
ICIgICAgc3RhdGljIEpTVmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVm
LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNWYWx1ZVJlZltdLCBK
U1ZhbHVlUmVmKik7XG4iKTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3BlcmF0
aW9ucykgeworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3RhdGljIEpTVmFsdWVS
ZWYgQHtbJG9wZXJhdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYsIEpTT2Jq
ZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJlZiopO1xuIik7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTI3OCwxMyArMjc4LDEzIEBAIEVPRgogICAgIHB1c2goQGNv
bnRlbnRzLCAkc2VsZi0+X3N0YXRpY0Z1bmN0aW9uc0dldHRlckltcGxlbWVudGF0aW9uKCRpbnRl
cmZhY2UpLCAiXG4iKTsKICAgICBwdXNoKEBjb250ZW50cywgJHNlbGYtPl9zdGF0aWNWYWx1ZXNH
ZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlKSk7CiAKLSAgICBpZiAobXkgQGZ1bmN0aW9u
cyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgeworICAgIGlmIChteSBAb3BlcmF0aW9ucyA9
IEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgcHVzaChAY29udGVudHMsICJc
bi8vIEZ1bmN0aW9uc1xuIik7CiAKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEBmdW5j
dGlvbnMpIHsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3BlcmF0aW9ucykgewog
ICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKIAotSlNWYWx1ZVJlZiAke2NsYXNz
TmFtZX06OkB7WyRmdW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK0pTVmFsdWVS
ZWYgJHtjbGFzc05hbWV9OjpAe1skb3BlcmF0aW9uLT5uYW1lXX0oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQogewogICAgICR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0gdG8ke2ltcGxlbWVu
dGF0aW9uQ2xhc3NOYW1lfShjb250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBpZiAoIWltcGwpCkBA
IC0yOTIsMTUgKzI5MiwxNSBAQCBKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6QHtbJGZ1bmN0aW9u
LT5uCiAKIEVPRgogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2FsbDsKLSAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1bWVudEhhbmRsaW5n
In0pIHsKLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwtPiIgLiAkZnVuY3Rp
b24tPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9u
KSI7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1
c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgeworICAgICAgICAgICAgICAgICRmdW5jdGlvbkNhbGwg
PSAiaW1wbC0+IiAuICRvcGVyYXRpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50Q291bnQs
IGFyZ3VtZW50cywgZXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgICAgICBteSBAc3BlY2lmaWVk
QXJndW1lbnRzID0gQHskZnVuY3Rpb24tPmFyZ3VtZW50c307CisgICAgICAgICAgICAgICAgbXkg
QHNwZWNpZmllZEFyZ3VtZW50cyA9IEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfTsKIAotICAgICAg
ICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkZnVu
Y3Rpb24tPnR5cGUpOworICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVj
b250ZW50c0luY2x1ZGVzLCAkb3BlcmF0aW9uLT50eXBlKTsKIAotICAgICAgICAgICAgICAgIGlm
ICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29udGV4dCJ9KSB7CisgICAg
ICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29u
dGV4dCJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgImNvbnRleHQi
KTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTMxNCwxMSArMzE0LDExIEBAIEVPRgogICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICRzZWxmLT5fYXJndW1lbnRFeHByZXNzaW9u
KCRhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICRmdW5j
dGlvbkNhbGwgPSAiaW1wbC0+IiAuICRmdW5jdGlvbi0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwg
QGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9uQ2FsbCA9ICJpbXBs
LT4iIC4gJG9wZXJhdGlvbi0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAi
KSI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHB1c2goQGNvbnRl
bnRzLCAiICAgICR7ZnVuY3Rpb25DYWxsfTtcblxuIikgaWYgJGZ1bmN0aW9uLT50eXBlLT5uYW1l
IGVxICJ2b2lkIjsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAgIHJldHVybiAiIC4g
JHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkg
LiAiO1xufVxuIik7CisgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAgICAke2Z1bmN0aW9u
Q2FsbH07XG5cbiIpIGlmICRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiOworICAgICAg
ICAgICAgcHVzaChAY29udGVudHMsICIgICAgcmV0dXJuICIgLiAkc2VsZi0+X3JldHVybkV4cHJl
c3Npb24oJG9wZXJhdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xufVxuIik7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTUyNiwxMiArNTI2LDEyIEBAIHN1YiBfc3RhdGljRnVuY3Rpb25z
R2V0dGVySW1wbGVtZW50YXRpb24KICAgICAgICAgcmV0dXJuICAieyBcIiRuYW1lXCIsICRuYW1l
LCAiIC4gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIC4gIiB9IjsKICAgICB9OwogCi0gICAgcmV0
dXJuICRzZWxmLT5fc3RhdGljRnVuY3Rpb25zT3JWYWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbigk
aW50ZXJmYWNlLCAiZnVuY3Rpb24iLCAieyAwLCAwLCAwIH0iLCAkbWFwRnVuY3Rpb24sICRpbnRl
cmZhY2UtPmZ1bmN0aW9ucyk7CisgICAgcmV0dXJuICRzZWxmLT5fc3RhdGljRnVuY3Rpb25zT3JW
YWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAiZnVuY3Rpb24iLCAieyAwLCAw
LCAwIH0iLCAkbWFwRnVuY3Rpb24sICRpbnRlcmZhY2UtPm9wZXJhdGlvbnMpOwogfQogCiBzdWIg
X3N0YXRpY0Z1bmN0aW9uc09yVmFsdWVzR2V0dGVySW1wbGVtZW50YXRpb24KIHsKLSAgICBteSAo
JHNlbGYsICRpbnRlcmZhY2UsICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRlcm1pbmF0b3IsICRt
YXBGdW5jdGlvbiwgJGZ1bmN0aW9uc09yQXR0cmlidXRlcykgPSBAXzsKKyAgICBteSAoJHNlbGYs
ICRpbnRlcmZhY2UsICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRlcm1pbmF0b3IsICRtYXBGdW5j
dGlvbiwgJG9wZXJhdGlvbnNPckF0dHJpYnV0ZXMpID0gQF87CiAKICAgICBteSAkY2xhc3NOYW1l
ID0gX2NsYXNzTmFtZSgkaW50ZXJmYWNlLT50eXBlKTsKICAgICBteSAkdXBwZXJjYXNlRnVuY3Rp
b25PclZhbHVlID0gJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5XS191Y2ZpcnN0KCRmdW5jdGlvbk9y
VmFsdWUpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIGNvbnN0IEpTU3RhdGljJHt1cHBlcmNhc2VGdW5j
dGlvbk9yVmFsdWUKIHsKIEVPRgogCi0gICAgbXkgQGluaXRpYWxpemVycyA9IG1hcCgmJG1hcEZ1
bmN0aW9uLCBAeyRmdW5jdGlvbnNPckF0dHJpYnV0ZXN9KTsKKyAgICBteSBAaW5pdGlhbGl6ZXJz
ID0gbWFwKCYkbWFwRnVuY3Rpb24sIEB7JG9wZXJhdGlvbnNPckF0dHJpYnV0ZXN9KTsKICAgICBy
ZXR1cm4gJHJlc3VsdCAuICIgICAgcmV0dXJuIDA7XG59XG4iIHVubGVzcyBAaW5pdGlhbGl6ZXJz
OwogCiAgICAgJHJlc3VsdCAuPSA8PEVPRgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311278</attachid>
            <date>2017-05-25 13:23:04 -0700</date>
            <delta_ts>2017-05-25 14:34:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172601-20170525132300.patch</filename>
            <type>text/plain</type>
            <size>124754</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzQ0MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE3LTA1LTI1ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gVXNlIHRoZSB0ZXJtICdv
cGVyYXRpb24nIG1vcmUgY29uc2lzdGVudGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzI2MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZSB3ZXJlIHVzaW5nIHRoZSB0ZXJtICdvcGVyYXRpb24nLCBh
IFdlYklETCB0ZXJtIGZvciBmdW5jdGlvbi1saWtlCisgICAgICAgIGNvbnN0cnVjdHMsIGluY29u
c2lzdGVudGx5IGluIHRoZSBjb2RlIGdlbmVyYXRvci4gTm93LCB3aGVuIHdlIHVzZQorICAgICAg
ICAnb3BlcmF0aW9uJyB3aGVuIHJlZmVycmluZyB0byB0aGUgSURMIGNvbmNlcHQgKHVzdWFsbHkg
dGhlIG9iamVjdCB0aGUKKyAgICAgICAgcGFyc2VyIHByb2R1Y2VzKSBhbmQgJ2Z1bmN0aW9uJyB3
aGVuIHJlZmVycmluZyB0byBjb2RlIGJlaW5nIGdlbmVyYXRlZC4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0lETFBhcnNlci5wbToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRp
bmdzLnBsOgorCiAyMDE3LTA1LTI1ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogIW5lZWRzU3R5bGVSZWNhbGMoKSB8fCAhZG9jdW1l
bnQoKS5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjE3NDQzKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC03NjUsMTcgKzc2NSwxNyBAQCBzdWIgTmFtZXNwYWNlRm9yQXR0cmlidXRlTmFt
ZQogCiAjIElkZW50aWZpZXMgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgYW5kIGZvciBlYWNoIGZ1bmN0
aW9uIGFkZHMgYW4gYXJyYXkgd2l0aAogIyBsaW5rcyB0byBpdHMgcmVzcGVjdGl2ZSBvdmVybG9h
ZHMgKGluY2x1ZGluZyBpdHNlbGYpLgotc3ViIExpbmtPdmVybG9hZGVkRnVuY3Rpb25zCitzdWIg
TGlua092ZXJsb2FkZWRPcGVyYXRpb25zCiB7CiAgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2Up
ID0gQF87CiAKLSAgICBteSAlbmFtZVRvRnVuY3Rpb25zTWFwID0gKCk7Ci0gICAgZm9yZWFjaCBt
eSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICBteSAkbmFt
ZSA9ICRmdW5jdGlvbi0+bmFtZTsKLSAgICAgICAgJG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX0g
PSBbXSBpZiAhZXhpc3RzICRuYW1lVG9GdW5jdGlvbnNNYXB7JG5hbWV9OwotICAgICAgICBwdXNo
KEB7JG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX19LCAkZnVuY3Rpb24pOwotICAgICAgICAkZnVu
Y3Rpb24tPntvdmVybG9hZHN9ID0gJG5hbWVUb0Z1bmN0aW9uc01hcHskbmFtZX07Ci0gICAgICAg
ICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID0gQHskbmFtZVRvRnVuY3Rpb25zTWFweyRuYW1l
fX07CisgICAgbXkgJW5hbWVUb09wZXJhdGlvbnNNYXAgPSAoKTsKKyAgICBmb3JlYWNoIG15ICRv
cGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgbXkgJG5hbWUg
PSAkb3BlcmF0aW9uLT5uYW1lOworICAgICAgICAkbmFtZVRvT3BlcmF0aW9uc01hcHskbmFtZX0g
PSBbXSBpZiAhZXhpc3RzICRuYW1lVG9PcGVyYXRpb25zTWFweyRuYW1lfTsKKyAgICAgICAgcHVz
aChAeyRuYW1lVG9PcGVyYXRpb25zTWFweyRuYW1lfX0sICRvcGVyYXRpb24pOworICAgICAgICAk
b3BlcmF0aW9uLT57b3ZlcmxvYWRzfSA9ICRuYW1lVG9PcGVyYXRpb25zTWFweyRuYW1lfTsKKyAg
ICAgICAgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID0gQHskbmFtZVRvT3BlcmF0aW9uc01h
cHskbmFtZX19OwogICAgIH0KIAogICAgIG15ICRpbmRleCA9IDE7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMjE3NDQzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdWIgR2VuZXJhdGVJ
bnRlcmZhY2UKIHsKICAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGRlZmluZXMsICRlbnVt
ZXJhdGlvbnMsICRkaWN0aW9uYXJpZXMpID0gQF87CiAKLSAgICAkY29kZUdlbmVyYXRvci0+TGlu
a092ZXJsb2FkZWRGdW5jdGlvbnMoJGludGVyZmFjZSk7CisgICAgJGNvZGVHZW5lcmF0b3ItPkxp
bmtPdmVybG9hZGVkT3BlcmF0aW9ucygkaW50ZXJmYWNlKTsKIAogICAgIEFkZFN0cmluZ2lmaWVy
T3BlcmF0aW9uSWZOZWVkZWQoJGludGVyZmFjZSk7CiAgICAgQWRkTGVnYWN5Q2FsbGVyT3BlcmF0
aW9uSWZOZWVkZWQoJGludGVyZmFjZSk7CkBAIC0xOTMsNyArMTkzLDcgQEAgc3ViIEFkZFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSWZOZWVkZWQKICAgICAgICAgbXkgJHR5cGUgPSBJRExQYXJzZXI6OmNs
b25lVHlwZSgkYXR0cmlidXRlLT50eXBlKTsKICAgICAgICAgJHN0cmluZ2lmaWVyLT50eXBlKCR0
eXBlKTsKIAotICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgJHN0cmluZ2lm
aWVyKTsKKyAgICAgICAgcHVzaChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCAkc3RyaW5naWZp
ZXIpOwogICAgICAgICBsYXN0OwogICAgIH0KIH0KQEAgLTIwMiw3ICsyMDIsNyBAQCBzdWIgQWRk
TGVnYWN5Q2FsbGVyT3BlcmF0aW9uSWZOZWVkZWQKIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hp
ZnQ7CiAKLSAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25z
fSwgQHskaW50ZXJmYWNlLT5hbm9ueW1vdXNGdW5jdGlvbnN9KSB7CisgICAgZm9yZWFjaCBteSAk
b3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmFub255
bW91c09wZXJhdGlvbnN9KSB7CiAgICAgICAgIG15ICRpc0xlZ2FjeUNhbGxlciA9IGdyZXAgeyAk
XyBlcSAibGVnYWN5Y2FsbGVyIiB9IEB7JG9wZXJhdGlvbi0+c3BlY2lhbHN9OwogICAgICAgICBp
ZiAoJGlzTGVnYWN5Q2FsbGVyKSB7CiAgICAgICAgICAgICAkaW50ZXJmYWNlLT57TGVnYWN5Q2Fs
bGVyc30gPSBbXSBpZiAhZXhpc3RzICRpbnRlcmZhY2UtPntMZWdhY3lDYWxsZXJzfTsKQEAgLTQw
Niw3ICs0MDYsNyBAQCBzdWIgU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlCiAKIHN1YiBH
ZW5lcmF0ZUluZGV4ZWRHZXR0ZXIKIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGluZGV4ZWRHZXR0
ZXJGdW5jdGlvbikgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGluZGV4ZWRHZXR0ZXJPcGVy
YXRpb24pID0gQF87CiAKICAgICBteSBAb3V0cHV0ID0gKCk7CiAKQEAgLTQxNSw4ICs0MTUsOCBA
QCBzdWIgR2VuZXJhdGVJbmRleGVkR2V0dGVyCiAKICAgICBteSAkYXR0cmlidXRlU3RyaW5nID0g
KChAYXR0cmlidXRlcyA+IDApID8gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIDogIjAiKTsKIAot
ICAgIG15ICRpbmRleGVkR2V0dGVyRnVuY3Rpb25OYW1lID0gJGluZGV4ZWRHZXR0ZXJGdW5jdGlv
bi0+bmFtZSB8fCAiaXRlbSI7Ci0gICAgbXkgJG5hdGl2ZVRvSlNDb252ZXJzaW9uID0gTmF0aXZl
VG9KU1ZhbHVlVXNpbmdQb2ludGVycygkaW5kZXhlZEdldHRlckZ1bmN0aW9uLCAkaW50ZXJmYWNl
LCAidGhpc09iamVjdC0+d3JhcHBlZCgpLiR7aW5kZXhlZEdldHRlckZ1bmN0aW9uTmFtZX0oaW5k
ZXgpIiwgIip0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSIpOworICAgIG15ICRpbmRleGVkR2V0
dGVyRnVuY3Rpb25OYW1lID0gJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPm5hbWUgfHwgIml0ZW0i
OworICAgIG15ICRuYXRpdmVUb0pTQ29udmVyc2lvbiA9IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9p
bnRlcnMoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24sICRpbnRlcmZhY2UsICJ0aGlzT2JqZWN0LT53
cmFwcGVkKCkuJHtpbmRleGVkR2V0dGVyRnVuY3Rpb25OYW1lfShpbmRleCkiLCAiKnRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpIik7CiAKICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgJHthdHRyaWJ1dGVTdHJpbmd9LCAke25hdGl2ZVRvSlNDb252
ZXJzaW9ufSk7XG4iKTsKICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIHJldHVybiB0cnVlO1xu
Iik7CkBAIC00MjYsNyArNDI2LDcgQEAgc3ViIEdlbmVyYXRlSW5kZXhlZEdldHRlcgogCiBzdWIg
R2VuZXJhdGVOYW1lZEdldHRlcgogewotICAgIG15ICgkaW50ZXJmYWNlLCAkbmFtZWRHZXR0ZXJG
dW5jdGlvbikgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyT3BlcmF0aW9u
KSA9IEBfOwogCiAgICAgbXkgQG91dHB1dCA9ICgpOwogCkBAIC00NDEsMTEgKzQ0MSwxMSBAQCBz
dWIgR2VuZXJhdGVOYW1lZEdldHRlcgogICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIGlm
ICh0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKHN0YXRlLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkge1xu
Iik7CiAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdCwgJHthdHRyaWJ1dGVTdHJpbmd9LCB2YWx1ZSk7XG4iKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBteSAkbmFtZWRHZXR0ZXJGdW5jdGlvbk5hbWUgPSAkbmFtZWRHZXR0ZXJGdW5jdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJG5hbWVkR2V0dGVyRnVu
Y3Rpb24tPm5hbWUgfHwgIm5hbWVkSXRlbSI7CisgICAgICAgIG15ICRuYW1lZEdldHRlckZ1bmN0
aW9uTmFtZSA9ICRuYW1lZEdldHRlck9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1w
bGVtZW50ZWRBc30gfHwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uLT5uYW1lIHx8ICJuYW1lZEl0ZW0i
OwogICAgICAgICBteSAkaXRlbVZhcmlhYmxlID0gIml0ZW0iOwogICAgICAgICBwdXNoKEBvdXRw
dXQsICIgICAgICAgIGF1dG8gaXRlbSA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS4ke25hbWVkR2V0
dGVyRnVuY3Rpb25OYW1lfShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUp
KTtcbiIpOwogCi0gICAgICAgIGlmICgkbmFtZWRHZXR0ZXJGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57TWF5VGhyb3dFeGNlcHRpb259KSB7CisgICAgICAgIGlmICgkbmFtZWRHZXR0ZXJP
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufSkgewogICAg
ICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICBpZiAoaXRlbS5oYXNFeGNlcHRpb24oKSkg
e1xuIik7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgICAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLT52bSgpKTtcbiIpOwogICAgICAgICAg
ICAgcHVzaChAb3V0cHV0LCAiICAgICAgICAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwg
dGhyb3dTY29wZSwgaXRlbS5yZWxlYXNlRXhjZXB0aW9uKCkpO1xuIik7CkBAIC00NTYsMTAgKzQ1
NiwxMCBAQCBzdWIgR2VuZXJhdGVOYW1lZEdldHRlcgogICAgICAgICAgICAgJGl0ZW1WYXJpYWJs
ZSA9ICJpdGVtVmFsdWUiOwogICAgICAgICB9CiAKLSAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJ
RExUeXBlKCRpbnRlcmZhY2UsICRuYW1lZEdldHRlckZ1bmN0aW9uLT50eXBlKTsKKyAgICAgICAg
bXkgJElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlv
bi0+dHlwZSk7CiAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgaWYgKCEke0lETFR5cGV9
Ojppc051bGxWYWx1ZSgke2l0ZW1WYXJpYWJsZX0pKSB7XG4iKTsKIAotICAgICAgICBteSAkbmF0
aXZlVG9KU0NvbnZlcnNpb24gPSBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRuYW1lZEdl
dHRlckZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkaXRlbVZhcmlhYmxlLCAiKnRoaXNPYmplY3QtPmds
b2JhbE9iamVjdCgpIiwgMSk7CisgICAgICAgIG15ICRuYXRpdmVUb0pTQ29udmVyc2lvbiA9IE5h
dGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG5hbWVkR2V0dGVyT3BlcmF0aW9uLCAkaW50ZXJm
YWNlLCAkaXRlbVZhcmlhYmxlLCAiKnRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpIiwgMSk7CiAg
ICAgICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgJHthdHRyaWJ1dGVTdHJpbmd9LCAke25hdGl2ZVRvSlNDb252ZXJzaW9ufSk7XG4iKTsKICAg
ICB9CiAgICAgCkBAIC00NzEsNyArNDcxLDcgQEAgc3ViIEdlbmVyYXRlTmFtZWRHZXR0ZXIKIAog
c3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keQogewotICAgIG15ICgkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdldHRlckZ1bmN0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlv
bikgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4ZWRHZXR0ZXJP
cGVyYXRpb24sICRuYW1lZEdldHRlck9wZXJhdGlvbikgPSBAXzsKIAogICAgIG15IEBvdXRwdXQg
PSAoKTsKIApAQCAtNDk1LDI2ICs0OTUsMjYgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlT
bG90Qm9keQogICAgIHB1c2goQG91dHB1dCwgIiAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KHRoaXNPYmplY3QsIGluZm8oKSk7XG4iKTsKIAogCi0gICAgaWYgKCRpbmRleGVkR2V0dGVyRnVu
Y3Rpb24pIHsKKyAgICBpZiAoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKICAgICAgICAgcHVz
aChAb3V0cHV0LCAiICAgIGF1dG8gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgocHJvcGVydHlO
YW1lKTtcbiIpOwogICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgaWYgKG9wdGlvbmFsSW5kZXgg
JiYgb3B0aW9uYWxJbmRleC52YWx1ZSgpIDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgp
KSB7XG4iKTsKICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICBhdXRvIGluZGV4ID0gb3B0
aW9uYWxJbmRleC52YWx1ZSgpO1xuIik7Ci0gICAgICAgIHB1c2goQG91dHB1dCwgR2VuZXJhdGVJ
bmRleGVkR2V0dGVyKCRpbnRlcmZhY2UsICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pKTsKKyAgICAg
ICAgcHVzaChAb3V0cHV0LCBHZW5lcmF0ZUluZGV4ZWRHZXR0ZXIoJGludGVyZmFjZSwgJGluZGV4
ZWRHZXR0ZXJPcGVyYXRpb24pKTsKICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgIH1cbiIpOwog
ICAgIH0KIAotICAgIG15ICRoYXNOYW1lZEdldHRlciA9ICRuYW1lZEdldHRlckZ1bmN0aW9uIHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5hbWVkR2V0dGVyfTsKKyAg
ICBteSAkaGFzTmFtZWRHZXR0ZXIgPSAkbmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwgJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRHZXR0ZXJ9OwogICAgIGlmICgkaGFz
TmFtZWRHZXR0ZXIpIHsKICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntPdmVycmlkZUJ1aWx0aW5zfSkgewogICAgICAgICAgICAgJiRvd25Qcm9wZXJ0eUNoZWNr
KCk7CiAgICAgICAgICAgICAmJHByb3RvdHlwZUNoZWNrKCk7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKCRpbmRleGVkR2V0dGVyRnVuY3Rpb24pIHsKKyAgICAgICAgaWYgKCRpbmRleGVkR2V0dGVy
T3BlcmF0aW9uKSB7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgaWYgKCFvcHRpb25h
bEluZGV4ICYmIHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09IGluZm8oKSAmJiAhcHJvcGVydHlO
YW1lLmlzU3ltYm9sKCkpIHtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVz
aChAb3V0cHV0LCAiICAgIGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkgJiYg
IXByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKSB7XG4iKTsKICAgICAgICAgfQotICAgICAgICBwdXNo
KEBvdXRwdXQsIEdlbmVyYXRlTmFtZWRHZXR0ZXIoJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyRnVu
Y3Rpb24pKTsKKyAgICAgICAgcHVzaChAb3V0cHV0LCBHZW5lcmF0ZU5hbWVkR2V0dGVyKCRpbnRl
cmZhY2UsICRuYW1lZEdldHRlck9wZXJhdGlvbikpOwogICAgICAgICBwdXNoKEBvdXRwdXQsICIg
ICAgfVxuIik7CiAgICAgfQogCkBAIC01MzUsNyArNTM1LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3du
UHJvcGVydHlTbG90Qm9keQogCiBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5QnlJ
bmRleAogewotICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdldHRlckZ1
bmN0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24sICRuYW1lZEdldHRlck9wZXJhdGlv
bikgPSBAXzsKIAogICAgIG15IEBvdXRwdXQgPSAoKTsKIApAQCAtNTU1LDE4ICs1NTUsMTggQEAg
c3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keUJ5SW5kZQogICAgICAgICAkZ2VuZXJh
dGVkUHJvcGVydHlOYW1lID0gMTsKICAgICB9OwogICAgIAotICAgIGlmICgkaW5kZXhlZEdldHRl
ckZ1bmN0aW9uKSB7CisgICAgaWYgKCRpbmRleGVkR2V0dGVyT3BlcmF0aW9uKSB7CiAgICAgICAg
IHB1c2goQG91dHB1dCwgIiAgICBpZiAoTElLRUxZKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBl
ZCgpLmxlbmd0aCgpKSkge1xuIik7Ci0gICAgICAgIHB1c2goQG91dHB1dCwgR2VuZXJhdGVJbmRl
eGVkR2V0dGVyKCRpbnRlcmZhY2UsICRpbmRleGVkR2V0dGVyRnVuY3Rpb24pKTsKKyAgICAgICAg
cHVzaChAb3V0cHV0LCBHZW5lcmF0ZUluZGV4ZWRHZXR0ZXIoJGludGVyZmFjZSwgJGluZGV4ZWRH
ZXR0ZXJPcGVyYXRpb24pKTsKICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgIH1cbiIpOwogICAg
IH0KIAogICAgICMgSW5kZXhpbmcgYW4gb2JqZWN0IHdpdGggYW4gaW50ZWdlciB0aGF0IGlzIG5v
dCBhIHN1cHBvcnRlZCBwcm9wZXJ0eSBpbmRleCBzaG91bGQgbm90IGNhbGwgdGhlIG5hbWVkIHBy
b3BlcnR5IGdldHRlci4KICAgICAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lk
bC1pbmRleGVkLXByb3BlcnRpZXMKLSAgICBpZiAoISRpbmRleGVkR2V0dGVyRnVuY3Rpb24gJiYg
KCRuYW1lZEdldHRlckZ1bmN0aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0N1c3RvbU5hbWVkR2V0dGVyfSkpIHsKKyAgICBpZiAoISRpbmRleGVkR2V0dGVyT3BlcmF0aW9u
ICYmICgkbmFtZWRHZXR0ZXJPcGVyYXRpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tTmFtZWRHZXR0ZXJ9KSkgewogICAgICAgICAmJHByb3BlcnR5TmFtZUdlbmVy
YXRpb24oKTsKICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgIGlmICh0aGlzT2JqZWN0LT5jbGFz
c0luZm8oKSA9PSBpbmZvKCkpIHtcbiIpOwotICAgICAgICBwdXNoKEBvdXRwdXQsIEdlbmVyYXRl
TmFtZWRHZXR0ZXIoJGludGVyZmFjZSwgJG5hbWVkR2V0dGVyRnVuY3Rpb24pKTsKKyAgICAgICAg
cHVzaChAb3V0cHV0LCBHZW5lcmF0ZU5hbWVkR2V0dGVyKCRpbnRlcmZhY2UsICRuYW1lZEdldHRl
ck9wZXJhdGlvbikpOwogICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgfVxuIik7CiAgICAgfQog
CkBAIC01ODQsNyArNTg0LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keUJ5
SW5kZQogCiBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eU5hbWVzCiB7Ci0gICAgbXkgKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkR2V0dGVyRnVuY3Rpb24sICRuYW1lZEdldHRlckZ1
bmN0aW9uKSA9IEBfOworICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdl
dHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgQG91
dHB1dCA9ICgpOwogCkBAIC01OTcsNyArNTk3LDcgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJvcGVy
dHlOYW1lcwogCiAgICAgIyAxLiBJZiB0aGUgb2JqZWN0IHN1cHBvcnRzIGluZGV4ZWQgcHJvcGVy
dGllcywgdGhlbiB0aGUgb2JqZWN04oCZcyBzdXBwb3J0ZWQKICAgICAjICAgIHByb3BlcnR5IGlu
ZGljZXMgYXJlIGVudW1lcmF0ZWQgZmlyc3QsIGluIG51bWVyaWNhbCBvcmRlci4KLSAgICBpZiAo
JGluZGV4ZWRHZXR0ZXJGdW5jdGlvbikgeworICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlv
bikgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
LCBjb3VudCA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKTsgaSA8IGNvdW50OyArK2kp
XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHByb3BlcnR5TmFtZXMu
YWRkKElkZW50aWZpZXI6OmZyb20oc3RhdGUsIGkpKTtcbiIpOwogICAgIH0KQEAgLTYwNyw3ICs2
MDcsNyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eU5hbWVzCiAgICAgIyAgICBvYmplY3Ti
gJlzIHN1cHBvcnRlZCBwcm9wZXJ0eSBuYW1lcyB0aGF0IGFyZSB2aXNpYmxlIGFjY29yZGluZyB0
byB0aGUgbmFtZWQKICAgICAjICAgIHByb3BlcnR5IHZpc2liaWxpdHkgYWxnb3JpdGhtIGFyZSBl
bnVtZXJhdGVkIG5leHQsIGluIHRoZSBvcmRlciBnaXZlbiBpbgogICAgICMgICAgdGhlIGRlZmlu
aXRpb24gb2YgdGhlIHNldCBvZiBzdXBwb3J0ZWQgcHJvcGVydHkgbmFtZXMuCi0gICAgaWYgKCRu
YW1lZEdldHRlckZ1bmN0aW9uKSB7CisgICAgaWYgKCRuYW1lZEdldHRlck9wZXJhdGlvbikgewog
ICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xlZ2FjeVVuZW51
bWVyYWJsZU5hbWVkUHJvcGVydGllc30pIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIGZvciAoYXV0byYgcHJvcGVydHlOYW1lIDogdGhpc09iamVjdC0+d3JhcHBlZCgpLnN1
cHBvcnRlZFByb3BlcnR5TmFtZXMoKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb21TdHJpbmcoc3Rh
dGUsIHByb3BlcnR5TmFtZSkpO1xuIik7CkBAIC02MjgsOSArNjI4LDkgQEAgc3ViIEdlbmVyYXRl
R2V0T3duUHJvcGVydHlOYW1lcwogCiBzdWIgR2VuZXJhdGVQdXQKIHsKLSAgICBteSAoJGludGVy
ZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbiwgJG5hbWVkU2V0dGVyRnVu
Y3Rpb24pID0gQF87CisgICAgbXkgKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkU2V0
dGVyT3BlcmF0aW9uLCAkbmFtZWRTZXR0ZXJPcGVyYXRpb24pID0gQF87CiAKLSAgICBhc3NlcnQo
Ik5hbWVkIHNldHRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyRnVuY3Rp
b247CisgICAgYXNzZXJ0KCJOYW1lZCBzZXR0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiIpIGlmICRu
YW1lZFNldHRlck9wZXJhdGlvbjsKIAogICAgIG15IEBvdXRwdXQgPSAoKTsKIApAQCAtNjM5LDI1
ICs2MzksMjUgQEAgc3ViIEdlbmVyYXRlUHV0CiAgICAgcHVzaChAb3V0cHV0LCAiICAgIGF1dG8q
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICBwdXNo
KEBvdXRwdXQsICIgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpO1xuIik7CiAgICAgCi0gICAgaWYgKCRpbmRleGVkU2V0dGVyRnVuY3Rpb24gfHwgJGludGVy
ZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tSW5kZXhlZFNldHRlcn0pIHsKKyAgICBp
ZiAoJGluZGV4ZWRTZXR0ZXJPcGVyYXRpb24gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q3VzdG9tSW5kZXhlZFNldHRlcn0pIHsKICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUluZGV4ZWRTZXR0ZXJ9KSB7CiAgICAgICAgICAgICBw
dXNoKEBvdXRwdXQsICIgICAgaWYgKGF1dG8gaW5kZXggPSBwYXJzZUluZGV4KHByb3BlcnR5TmFt
ZSkpIHtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICB0aGlzT2JqZWN0
LT5pbmRleFNldHRlcihzdGF0ZSwgaW5kZXgudmFsdWUoKSwgdmFsdWUpO1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CiAgICAgICAgICAg
ICBwdXNoKEBvdXRwdXQsICIgICAgfVxuIik7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAjIFRoZSBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIGluZGV4ZWQgc2V0dGVyIGZ1bmN0aW9uIGlz
IHRoZSBhcmd1bWVudCBiZWluZyBjb252ZXJ0ZWQuCi0gICAgICAgICAgICBteSAkYXJndW1lbnQg
PSBAeyRpbmRleGVkU2V0dGVyRnVuY3Rpb24tPmFyZ3VtZW50c31bMV07Ci0gICAgICAgICAgICBt
eSAkbmF0aXZlVmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAi
dmFsdWUiLCAkaW5kZXhlZFNldHRlckZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25k
aXRpb25hbH0sICJzdGF0ZSIsICIqc3RhdGUiLCAidGhpc09iamVjdCIsICIiLCAiIik7CisgICAg
ICAgICAgICAjIFRoZSBzZWNvbmQgYXJndW1lbnQgb2YgdGhlIGluZGV4ZWQgc2V0dGVyIG9wZXJh
dGlvbiBpcyB0aGUgYXJndW1lbnQgYmVpbmcgY29udmVydGVkLgorICAgICAgICAgICAgbXkgJGFy
Z3VtZW50ID0gQHskaW5kZXhlZFNldHRlck9wZXJhdGlvbi0+YXJndW1lbnRzfVsxXTsKKyAgICAg
ICAgICAgIG15ICRuYXRpdmVWYWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkaW50ZXJmYWNlLCAkYXJn
dW1lbnQsICJ2YWx1ZSIsICRpbmRleGVkU2V0dGVyT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntDb25kaXRpb25hbH0sICJzdGF0ZSIsICIqc3RhdGUiLCAidGhpc09iamVjdCIsICIiLCAi
Iik7CiAKICAgICAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICBpZiAoYXV0byBpbmRleCA9IHBh
cnNlSW5kZXgocHJvcGVydHlOYW1lKSkge1xuIik7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQs
ICIgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZt
KCkpO1xuIik7CiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIGF1dG8gbmF0aXZl
VmFsdWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAi
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHRydWUpO1xuIik7CiAKLSAg
ICAgICAgICAgIG15ICRpbmRleGVkU2V0dGVyRnVuY3Rpb25OYW1lID0gJGluZGV4ZWRTZXR0ZXJG
dW5jdGlvbi0+bmFtZSB8fCAic2V0SXRlbSI7CisgICAgICAgICAgICBteSAkaW5kZXhlZFNldHRl
ckZ1bmN0aW9uTmFtZSA9ICRpbmRleGVkU2V0dGVyT3BlcmF0aW9uLT5uYW1lIHx8ICJzZXRJdGVt
IjsKICAgICAgICAgICAgIG15ICRmdW5jdGlvblN0cmluZyA9ICIke2luZGV4ZWRTZXR0ZXJGdW5j
dGlvbk5hbWV9KGluZGV4LCBXVEZNb3ZlKG5hdGl2ZVZhbHVlKSkiOwotICAgICAgICAgICAgJGZ1
bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsICR7
ZnVuY3Rpb25TdHJpbmd9KSIgaWYgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlvbkNhbGwo
JGluZGV4ZWRTZXR0ZXJGdW5jdGlvbik7CisgICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAi
cHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgJHtmdW5jdGlvblN0cmluZ30p
IiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkaW5kZXhlZFNldHRlck9w
ZXJhdGlvbik7CiAKICAgICAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgJHtmdW5jdGlv
blN0cmluZ307XG4iKTsKICAgICAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgcmV0dXJu
IHRydWU7XG4iKTsKQEAgLTY3OSw5ICs2NzksOSBAQCBzdWIgR2VuZXJhdGVQdXQKIAogc3ViIEdl
bmVyYXRlUHV0QnlJbmRleAogewotICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5k
ZXhlZFNldHRlckZ1bmN0aW9uLCAkbmFtZWRTZXR0ZXJGdW5jdGlvbikgPSBAXzsKKyAgICBteSAo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4ZWRTZXR0ZXJPcGVyYXRpb24sICRuYW1lZFNl
dHRlck9wZXJhdGlvbikgPSBAXzsKIAotICAgIGFzc2VydCgiTmFtZWQgc2V0dGVycyBhcmUgbm90
IHN1cHBvcnRlZC4iKSBpZiAkbmFtZWRTZXR0ZXJGdW5jdGlvbjsKKyAgICBhc3NlcnQoIk5hbWVk
IHNldHRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuIikgaWYgJG5hbWVkU2V0dGVyT3BlcmF0aW9uOwog
CiAgICAgbXkgQG91dHB1dCA9ICgpOwogCkBAIC02OTAsMjUgKzY5MCwyNSBAQCBzdWIgR2VuZXJh
dGVQdXRCeUluZGV4CiAgICAgcHVzaChAb3V0cHV0LCAiICAgIGF1dG8qIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8JHtjbGFzc05hbWV9Kj4oY2VsbCk7XG4iKTsKICAgICBwdXNoKEBvdXRwdXQsICIgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpO1xuIik7CiAKLSAg
ICBpZiAoJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntDdXN0b21JbmRleGVkU2V0dGVyfSkgeworICAgIGlmICgkaW5kZXhlZFNldHRlck9w
ZXJhdGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21JbmRleGVk
U2V0dGVyfSkgewogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q3VzdG9tSW5kZXhlZFNldHRlcn0pIHsKICAgICAgICAgICAgIHB1c2goQG91dHB1dCwgIiAgICBp
ZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHtcbiIpOwogICAgICAgICAgICAg
cHVzaChAb3V0cHV0LCAiICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwgaW5k
ZXgsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgICAgICByZXR1
cm4gdHJ1ZTtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0cHV0LCAiICAgIH1cbiIpOwogICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBp
bmRleGVkIHNldHRlciBmdW5jdGlvbiBpcyB0aGUgYXJndW1lbnQgYmVpbmcgY29udmVydGVkLgot
ICAgICAgICAgICAgbXkgJGFyZ3VtZW50ID0gQHskaW5kZXhlZFNldHRlckZ1bmN0aW9uLT5hcmd1
bWVudHN9WzFdOwotICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVlID0gSlNWYWx1ZVRvTmF0aXZl
KCRpbnRlcmZhY2UsICRhcmd1bWVudCwgInZhbHVlIiwgJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9LCAic3RhdGUiLCAiKnN0YXRlIiwgInRo
aXNPYmplY3QiLCAiIiwgIiIpOworICAgICAgICAgICAgIyBUaGUgc2Vjb25kIGFyZ3VtZW50IG9m
IHRoZSBpbmRleGVkIHNldHRlciBvcGVyYXRpb24gaXMgdGhlIGFyZ3VtZW50IGJlaW5nIGNvbnZl
cnRlZC4KKyAgICAgICAgICAgIG15ICRhcmd1bWVudCA9IEB7JGluZGV4ZWRTZXR0ZXJPcGVyYXRp
b24tPmFyZ3VtZW50c31bMV07CisgICAgICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSBKU1ZhbHVl
VG9OYXRpdmUoJGludGVyZmFjZSwgJGFyZ3VtZW50LCAidmFsdWUiLCAkaW5kZXhlZFNldHRlck9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9LCAic3RhdGUiLCAiKnN0
YXRlIiwgInRoaXNPYmplY3QiLCAiIiwgIiIpOwogCiAgICAgICAgICAgICBwdXNoKEBvdXRwdXQs
ICIgICAgaWYgKExJS0VMWShpbmRleCA8PSBNQVhfQVJSQVlfSU5ERVgpKSB7XG4iKTsKICAgICAg
ICAgICAgIHB1c2goQG91dHB1dCwgIiAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQG91dHB1dCwg
IiAgICAgICAgYXV0byBuYXRpdmVWYWx1ZSA9ICR7bmF0aXZlVmFsdWV9O1xuIik7CiAgICAgICAg
ICAgICBwdXNoKEBvdXRwdXQsICIgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgdHJ1ZSk7XG4iKTsKIAotICAgICAgICAgICAgbXkgJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbk5h
bWUgPSAkaW5kZXhlZFNldHRlckZ1bmN0aW9uLT5uYW1lIHx8ICJzZXRJdGVtIjsKKyAgICAgICAg
ICAgIG15ICRpbmRleGVkU2V0dGVyRnVuY3Rpb25OYW1lID0gJGluZGV4ZWRTZXR0ZXJPcGVyYXRp
b24tPm5hbWUgfHwgInNldEl0ZW0iOwogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0g
IiR7aW5kZXhlZFNldHRlckZ1bmN0aW9uTmFtZX0oaW5kZXgsIFdURk1vdmUobmF0aXZlVmFsdWUp
KSI7Ci0gICAgICAgICAgICAkZnVuY3Rpb25TdHJpbmcgPSAicHJvcGFnYXRlRXhjZXB0aW9uKCpz
dGF0ZSwgdGhyb3dTY29wZSwgJHtmdW5jdGlvblN0cmluZ30pIiBpZiBOZWVkc0V4cGxpY2l0UHJv
cGFnYXRlRXhjZXB0aW9uQ2FsbCgkaW5kZXhlZFNldHRlckZ1bmN0aW9uKTsKKyAgICAgICAgICAg
ICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3Bl
LCAke2Z1bmN0aW9uU3RyaW5nfSkiIGlmIE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25D
YWxsKCRpbmRleGVkU2V0dGVyT3BlcmF0aW9uKTsKIAogICAgICAgICAgICAgcHVzaChAb3V0cHV0
LCAiICAgICAgICAke2Z1bmN0aW9uU3RyaW5nfTtcbiIpOwogICAgICAgICAgICAgcHVzaChAb3V0
cHV0LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOwpAQCAtOTE0LDMwICs5MTQsMjcgQEAgc3Vi
IEdldEF0dHJpYnV0ZVNldHRlck5hbWUKIAogc3ViIEdldEZ1bmN0aW9uTmFtZQogewotICAgIG15
ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pID0gQF87CisgICAgbXkgKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pID0gQF87CiAKLSAgICByZXR1cm4gR2V0SlNC
dWlsdGluRnVuY3Rpb25OYW1lKCRjbGFzc05hbWUsICRmdW5jdGlvbikgaWYgSXNKU0J1aWx0aW4o
JGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKKyAgICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25O
YW1lKCRjbGFzc05hbWUsICRvcGVyYXRpb24pIGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRv
cGVyYXRpb24pOwogCi0gICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKKyAg
ICBteSAkZnVuY3Rpb25OYW1lID0gJG9wZXJhdGlvbi0+bmFtZTsKICAgICAkZnVuY3Rpb25OYW1l
ID0gIlN5bWJvbEl0ZXJhdG9yIiBpZiAkZnVuY3Rpb25OYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9y
XSI7CiAKLSAgICBteSAka2luZCA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiQ29uc3RydWN0b3Ii
IDogKE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pID8g
Ikluc3RhbmNlIiA6ICJQcm90b3R5cGUiKTsKKyAgICBteSAka2luZCA9ICRvcGVyYXRpb24tPmlz
U3RhdGljID8gIkNvbnN0cnVjdG9yIiA6IChPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbikgPyAiSW5zdGFuY2UiIDogIlByb3RvdHlwZSIpOwogICAgIHJl
dHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkY2xhc3NOYW1lKSAuICRraW5kIC4gIkZ1
bmN0aW9uIiAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpOwogfQog
Ci1zdWIgR2V0U3BlY2lhbEFjY2Vzc29yRnVuY3Rpb25Gb3JUeXBlCitzdWIgR2V0U3BlY2lhbEFj
Y2Vzc29yT3BlcmF0aW9uRm9yVHlwZQogewotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAg
ICBteSAkc3BlY2lhbCA9IHNoaWZ0OwotICAgIG15ICRmaXJzdFBhcmFtZXRlclR5cGUgPSBzaGlm
dDsKLSAgICBteSAkbnVtYmVyT2ZQYXJhbWV0ZXJzID0gc2hpZnQ7CisgICAgbXkgKCRpbnRlcmZh
Y2UsICRzcGVjaWFsLCAkZmlyc3RQYXJhbWV0ZXJUeXBlLCAkbnVtYmVyT2ZQYXJhbWV0ZXJzKSA9
IEBfOwogCi0gICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25z
fSwgQHskaW50ZXJmYWNlLT5hbm9ueW1vdXNGdW5jdGlvbnN9KSB7Ci0gICAgICAgIG15ICRzcGVj
aWFscyA9ICRmdW5jdGlvbi0+c3BlY2lhbHM7CisgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChA
eyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmFub255bW91c09wZXJhdGlv
bnN9KSB7CisgICAgICAgIG15ICRzcGVjaWFscyA9ICRvcGVyYXRpb24tPnNwZWNpYWxzOwogICAg
ICAgICBteSAkc3BlY2lhbEV4aXN0cyA9IGdyZXAgeyAkXyBlcSAkc3BlY2lhbCB9IEAkc3BlY2lh
bHM7Ci0gICAgICAgIG15ICRhcmd1bWVudHMgPSAkZnVuY3Rpb24tPmFyZ3VtZW50czsKKyAgICAg
ICAgbXkgJGFyZ3VtZW50cyA9ICRvcGVyYXRpb24tPmFyZ3VtZW50czsKICAgICAgICAgaWYgKCRz
cGVjaWFsRXhpc3RzIGFuZCBzY2FsYXIoQCRhcmd1bWVudHMpID09ICRudW1iZXJPZlBhcmFtZXRl
cnMgYW5kICRhcmd1bWVudHMtPlswXS0+dHlwZS0+bmFtZSBlcSAkZmlyc3RQYXJhbWV0ZXJUeXBl
KSB7Ci0gICAgICAgICAgICByZXR1cm4gJGZ1bmN0aW9uOworICAgICAgICAgICAgcmV0dXJuICRv
cGVyYXRpb247CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMDgsMTAgKzEwMDUsMTAgQEAgc3Vi
IE5lZWRzU2V0dGluZ3NDaGVja0ZvclByb3RvdHlwZVByb3BlcgogewogICAgIG15ICRpbnRlcmZh
Y2UgPSBzaGlmdDsKIAotICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1
bmN0aW9uc30pIHsKLSAgICAgICAgbmV4dCBpZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2Uo
JGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGlu
dGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgbmV4dCBpZiBPcGVyYXRpb25TaG91bGRC
ZU9uSW5zdGFuY2UoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAKLSAgICAgICAgcmV0dXJuIDEg
aWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfTsKKyAg
ICAgICAgcmV0dXJuIDEgaWYgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxl
ZEJ5U2V0dGluZ307CiAgICAgfQogCiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRl
cmZhY2UtPmF0dHJpYnV0ZXN9KSB7CkBAIC0xMDI1LDE2ICsxMDIyLDE1IEBAIHN1YiBOZWVkc1Nl
dHRpbmdzQ2hlY2tGb3JQcm90b3R5cGVQcm9wZXIKICMgaHR0cHM6Ly9oZXljYW0uZ2l0aHViLmlv
L3dlYmlkbC8jZXMtb3BlcmF0aW9ucwogc3ViIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZQog
ewotICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsK
KyAgICBteSAoJGludGVyZmFjZSwgJG9wZXJhdGlvbikgPSBAXzsKIAogICAgIHJldHVybiAxIGlm
IElzR2xvYmFsT3JQcmltYXJ5R2xvYmFsSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwogCiAgICAgIyBG
SVhNRTogVGhlIGJpbmRpbmdzIGdlbmVyYXRvciBkb2VzIG5vdCBzdXBwb3J0IHB1dHRpbmcgcnVu
dGltZS1lbmFibGVkIG9wZXJhdGlvbnMgb24gdGhlIGluc3RhbmNlIHlldCAoZXhjZXB0IGZvciBn
bG9iYWwgb2JqZWN0cykuCi0gICAgcmV0dXJuIDAgaWYgTmVlZHNSdW50aW1lQ2hlY2soJGZ1bmN0
aW9uKTsKKyAgICByZXR1cm4gMCBpZiBOZWVkc1J1bnRpbWVDaGVjaygkb3BlcmF0aW9uKTsKIAog
ICAgICMgW1VuZm9yZ2VhYmxlXSBvcGVyYXRpb25zIHNob3VsZCBiZSBvbiB0aGUgaW5zdGFuY2Uu
IGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI1VuZm9yZ2VhYmxlCi0gICAgcmV0dXJu
IDEgaWYgSXNVbmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOworICAgIHJldHVybiAx
IGlmIElzVW5mb3JnZWFibGUoJGludGVyZmFjZSwgJG9wZXJhdGlvbik7CiAKICAgICByZXR1cm4g
MDsKIH0KQEAgLTEwNTcsNjAgKzEwNTMsNjAgQEAgc3ViIEdldEpTQ0F0dHJpYnV0ZXNGb3JBdHRy
aWJ1dGUKICAgICByZXR1cm4gKEBzcGVjaWFscyA+IDApID8gam9pbigiIHwgIiwgQHNwZWNpYWxz
KSA6ICIwIjsKIH0KIAotc3ViIEdldEluZGV4ZWRHZXR0ZXJGdW5jdGlvbgorc3ViIEdldEluZGV4
ZWRHZXR0ZXJPcGVyYXRpb24KIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0
dXJuIEdldFNwZWNpYWxBY2Nlc3NvckZ1bmN0aW9uRm9yVHlwZSgkaW50ZXJmYWNlLCAiZ2V0dGVy
IiwgInVuc2lnbmVkIGxvbmciLCAxKTsKKyAgICByZXR1cm4gR2V0U3BlY2lhbEFjY2Vzc29yT3Bl
cmF0aW9uRm9yVHlwZSgkaW50ZXJmYWNlLCAiZ2V0dGVyIiwgInVuc2lnbmVkIGxvbmciLCAxKTsK
IH0KIAotc3ViIEdldEluZGV4ZWRTZXR0ZXJGdW5jdGlvbgorc3ViIEdldEluZGV4ZWRTZXR0ZXJP
cGVyYXRpb24KIHsKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7Ci0gICAgcmV0dXJuIEdldFNw
ZWNpYWxBY2Nlc3NvckZ1bmN0aW9uRm9yVHlwZSgkaW50ZXJmYWNlLCAic2V0dGVyIiwgInVuc2ln
bmVkIGxvbmciLCAyKTsKKyAgICByZXR1cm4gR2V0U3BlY2lhbEFjY2Vzc29yT3BlcmF0aW9uRm9y
VHlwZSgkaW50ZXJmYWNlLCAic2V0dGVyIiwgInVuc2lnbmVkIGxvbmciLCAyKTsKIH0KIAotc3Vi
IEdldE5hbWVkR2V0dGVyRnVuY3Rpb24KK3N1YiBHZXROYW1lZEdldHRlck9wZXJhdGlvbgogewog
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICByZXR1cm4gR2V0U3BlY2lhbEFjY2Vzc29y
RnVuY3Rpb25Gb3JUeXBlKCRpbnRlcmZhY2UsICJnZXR0ZXIiLCAiRE9NU3RyaW5nIiwgMSk7Cisg
ICAgcmV0dXJuIEdldFNwZWNpYWxBY2Nlc3Nvck9wZXJhdGlvbkZvclR5cGUoJGludGVyZmFjZSwg
ImdldHRlciIsICJET01TdHJpbmciLCAxKTsKIH0KIAotc3ViIEdldE5hbWVkU2V0dGVyRnVuY3Rp
b24KK3N1YiBHZXROYW1lZFNldHRlck9wZXJhdGlvbgogewogICAgIG15ICRpbnRlcmZhY2UgPSBz
aGlmdDsKLSAgICByZXR1cm4gR2V0U3BlY2lhbEFjY2Vzc29yRnVuY3Rpb25Gb3JUeXBlKCRpbnRl
cmZhY2UsICJzZXR0ZXIiLCAiRE9NU3RyaW5nIiwgMik7CisgICAgcmV0dXJuIEdldFNwZWNpYWxB
Y2Nlc3Nvck9wZXJhdGlvbkZvclR5cGUoJGludGVyZmFjZSwgInNldHRlciIsICJET01TdHJpbmci
LCAyKTsKIH0KIAotc3ViIEdldE5hbWVkRGVsZXRlckZ1bmN0aW9uCitzdWIgR2V0TmFtZWREZWxl
dGVyT3BlcmF0aW9uCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwotICAgIHJldHVybiBH
ZXRTcGVjaWFsQWNjZXNzb3JGdW5jdGlvbkZvclR5cGUoJGludGVyZmFjZSwgImRlbGV0ZXIiLCAi
RE9NU3RyaW5nIiwgMSk7CisgICAgcmV0dXJuIEdldFNwZWNpYWxBY2Nlc3Nvck9wZXJhdGlvbkZv
clR5cGUoJGludGVyZmFjZSwgImRlbGV0ZXIiLCAiRE9NU3RyaW5nIiwgMSk7CiB9CiAKLXN1YiBJ
bnN0YW5jZUZ1bmN0aW9uQ291bnQKK3N1YiBJbnN0YW5jZU9wZXJhdGlvbkNvdW50CiB7CiAgICAg
bXkgJGludGVyZmFjZSA9IHNoaWZ0OwogICAgIG15ICRjb3VudCA9IDA7CiAKLSAgICBmb3JlYWNo
IG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICRjb3Vu
dCsrIGlmIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24p
OworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkg
eworICAgICAgICAkY291bnQrKyBpZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVy
ZmFjZSwgJG9wZXJhdGlvbik7CiAgICAgfQogCiAgICAgcmV0dXJuICRjb3VudDsKIH0KIAotc3Vi
IFByb3RvdHlwZUZ1bmN0aW9uQ291bnQKK3N1YiBQcm90b3R5cGVPcGVyYXRpb25Db3VudAogewog
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKICAgICBteSAkY291bnQgPSAwOwogCi0gICAgZm9y
ZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAk
Y291bnQrKyBpZiAhJGZ1bmN0aW9uLT5pc1N0YXRpYyAmJiAhT3BlcmF0aW9uU2hvdWxkQmVPbklu
c3RhbmNlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7CisgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9u
IChAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7CisgICAgICAgICRjb3VudCsrIGlmICEkb3Bl
cmF0aW9uLT5pc1N0YXRpYyAmJiAhT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZh
Y2UsICRvcGVyYXRpb24pOwogICAgIH0KIAotICAgICRjb3VudCArPSBzY2FsYXIgQHskaW50ZXJm
YWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKLSAgICAk
Y291bnQgKz0gc2NhbGFyIEB7JGludGVyZmFjZS0+bWFwTGlrZS0+ZnVuY3Rpb25zfSBpZiAkaW50
ZXJmYWNlLT5tYXBMaWtlOwotICAgICRjb3VudCArPSBzY2FsYXIgQHskaW50ZXJmYWNlLT5zZXJp
YWxpemFibGUtPmZ1bmN0aW9uc30gaWYgJGludGVyZmFjZS0+c2VyaWFsaXphYmxlOworICAgICRj
b3VudCArPSBzY2FsYXIgQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+b3BlcmF0aW9uc30gaWYgJGlu
dGVyZmFjZS0+aXRlcmFibGU7CisgICAgJGNvdW50ICs9IHNjYWxhciBAeyRpbnRlcmZhY2UtPm1h
cExpa2UtPm9wZXJhdGlvbnN9IGlmICRpbnRlcmZhY2UtPm1hcExpa2U7CisgICAgJGNvdW50ICs9
IHNjYWxhciBAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+b3BlcmF0aW9uc30gaWYgJGludGVy
ZmFjZS0+c2VyaWFsaXphYmxlOwogCiAgICAgcmV0dXJuICRjb3VudDsKIH0KQEAgLTExMjIsNyAr
MTExOCw3IEBAIHN1YiBJbnN0YW5jZVByb3BlcnR5Q291bnQKICAgICBmb3JlYWNoIG15ICRhdHRy
aWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKICAgICAgICAgJGNvdW50KysgaWYg
QXR0cmlidXRlU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUpOwogICAg
IH0KLSAgICAkY291bnQgKz0gSW5zdGFuY2VGdW5jdGlvbkNvdW50KCRpbnRlcmZhY2UpOworICAg
ICRjb3VudCArPSBJbnN0YW5jZU9wZXJhdGlvbkNvdW50KCRpbnRlcmZhY2UpOwogICAgIHJldHVy
biAkY291bnQ7CiB9CiAKQEAgLTExMzMsNyArMTEyOSw3IEBAIHN1YiBQcm90b3R5cGVQcm9wZXJ0
eUNvdW50CiAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0
ZXN9KSB7CiAgICAgICAgICRjb3VudCsrIGlmICFBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFuY2Uo
JGludGVyZmFjZSwgJGF0dHJpYnV0ZSk7CiAgICAgfQotICAgICRjb3VudCArPSBQcm90b3R5cGVG
dW5jdGlvbkNvdW50KCRpbnRlcmZhY2UpOworICAgICRjb3VudCArPSBQcm90b3R5cGVPcGVyYXRp
b25Db3VudCgkaW50ZXJmYWNlKTsKICAgICAkY291bnQrKyBpZiBOZWVkc0NvbnN0cnVjdG9yUHJv
cGVydHkoJGludGVyZmFjZSk7CiAgICAgcmV0dXJuICRjb3VudDsKIH0KQEAgLTExNDQsOCArMTE0
MCw4IEBAIHN1YiBJbnN0YW5jZU92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdAogICAgIHJldHVy
biAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Qcm9wZXJ0eVNs
b3R9CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbU5h
bWVkR2V0dGVyfQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntK
U0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3J9Ci0gICAgICAgIHx8IEdldElu
ZGV4ZWRHZXR0ZXJGdW5jdGlvbigkaW50ZXJmYWNlKQotICAgICAgICB8fCBHZXROYW1lZEdldHRl
ckZ1bmN0aW9uKCRpbnRlcmZhY2UpOworICAgICAgICB8fCBHZXRJbmRleGVkR2V0dGVyT3BlcmF0
aW9uKCRpbnRlcmZhY2UpCisgICAgICAgIHx8IEdldE5hbWVkR2V0dGVyT3BlcmF0aW9uKCRpbnRl
cmZhY2UpOwogfQogCiBzdWIgSW5zdGFuY2VPdmVycmlkZXNQdXQKQEAgLTExNTMsOCArMTE0OSw4
IEBAIHN1YiBJbnN0YW5jZU92ZXJyaWRlc1B1dAogICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsK
ICAgICByZXR1cm4gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tTmFtZWRT
ZXR0ZXJ9CiAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3Rv
bUluZGV4ZWRTZXR0ZXJ9Ci0gICAgICAgIHx8IEdldEluZGV4ZWRTZXR0ZXJGdW5jdGlvbigkaW50
ZXJmYWNlKQotICAgICAgICB8fCBHZXROYW1lZFNldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwor
ICAgICAgICB8fCBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpCisgICAgICAg
IHx8IEdldE5hbWVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogfQogCiBzdWIgUHJvdG90
eXBlSGFzU3RhdGljUHJvcGVydHlUYWJsZQpAQCAtMTc1Myw3ICsxNzQ5LDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAKICAgICBteSAkbnVtQ29uc3RhbnRzID0gQHskaW50ZXJmYWNlLT5jb25zdGFu
dHN9OwogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsK
LSAgICBteSAkbnVtRnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OworICAgIG15
ICRudW1PcGVyYXRpb25zID0gQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfTsKIAogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICJcbm5hbWVzcGFjZSBXZWJDb3JlIHtcblxuIik7CiAKQEAgLTE4NDUs
MTMgKzE4NDEsMTMgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAkaGVhZGVyVHJhaWxpbmdJ
bmNsdWRlc3siJHtjbGFzc05hbWV9Q3VzdG9tLmgifSA9IDEgaWYgJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57SlNDdXN0b21IZWFkZXJ9OwogCi0gICAgbXkgJG5hbWVkR2V0dGVyRnVu
Y3Rpb24gPSBHZXROYW1lZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOwotICAgIG15ICRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24gPSBHZXRJbmRleGVkR2V0dGVyRnVuY3Rpb24oJGludGVyZmFjZSk7
CisgICAgbXkgJG5hbWVkR2V0dGVyT3BlcmF0aW9uID0gR2V0TmFtZWRHZXR0ZXJPcGVyYXRpb24o
JGludGVyZmFjZSk7CisgICAgbXkgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24gPSBHZXRJbmRleGVk
R2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogCi0gICAgbXkgJGhhc05hbWVkR2V0dGVyID0g
JG5hbWVkR2V0dGVyRnVuY3Rpb24KKyAgICBteSAkaGFzTmFtZWRHZXR0ZXIgPSAkbmFtZWRHZXR0
ZXJPcGVyYXRpb24KICAgICAgICAgfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q3VzdG9tTmFtZWRHZXR0ZXJ9OwogCi0gICAgbXkgJGhhc0NvbXBsZXhHZXR0ZXIgPSAkaW5kZXhl
ZEdldHRlckZ1bmN0aW9uCisgICAgbXkgJGhhc0NvbXBsZXhHZXR0ZXIgPSAkaW5kZXhlZEdldHRl
ck9wZXJhdGlvbgogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntK
U0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3J9CiAgICAgICAgIHx8ICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUdldE93blByb3BlcnR5U2xvdH0KICAg
ICAgICAgfHwgJGhhc05hbWVkR2V0dGVyOwpAQCAtMTk0Myw3ICsxOTM5LDcgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgfQogCiAgICAgIyBDdXN0b20gZ2V0T3duUHJvcGVydHlOYW1lcyBmdW5j
dGlvbgotICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21FbnVt
ZXJhdGVQcm9wZXJ0eX0gfHwgJGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiB8fCAkbmFtZWRHZXR0ZXJG
dW5jdGlvbikgeworICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21FbnVtZXJhdGVQcm9wZXJ0eX0gfHwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24gfHwgJG5hbWVk
R2V0dGVyT3BlcmF0aW9uKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3Rh
dGljIHZvaWQgZ2V0T3duUHJvcGVydHlOYW1lcyhKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlByb3BlcnR5TmFtZUFycmF5JiwgSlNDOjpFbnVtZXJhdGlvbk1vZGUgPSBKU0M6
OkVudW1lcmF0aW9uTW9kZSgpKTtcbiIpOwogICAgICAgICAkc3RydWN0dXJlRmxhZ3N7IkpTQzo6
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyJ9ID0gMTsgICAgICAgCiAgICAgfQpAQCAtMTk3MSwx
MCArMTk2NywxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIFNlcmlhbGl6ZXIgZnVuY3Rp
b24uCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU09iamVjdCog
c2VyaWFsaXplKEpTQzo6RXhlY1N0YXRlKiwgSlMke2ludGVyZmFjZU5hbWV9KiB0aGlzT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmKTtcbiIpIGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKIAot
ICAgIG15ICRudW1DdXN0b21GdW5jdGlvbnMgPSAwOworICAgIG15ICRudW1DdXN0b21PcGVyYXRp
b25zID0gMDsKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRlcyA9IDA7CiAKLSAgICBteSAkaGFz
Rm9yd2FyZERlY2xhcmluZ0Z1bmN0aW9ucyA9IDA7CisgICAgbXkgJGhhc0ZvcndhcmREZWNsYXJp
bmdPcGVyYXRpb25zID0gMDsKICAgICBteSAkaGFzRm9yd2FyZERlY2xhcmluZ0F0dHJpYnV0ZXMg
PSAwOwogCiAgICAgbXkgJGhhc0RPTUpJVEF0dHJpYnV0ZXMgPSAwOwpAQCAtMjA0NiwxOSArMjA0
MiwxOSBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgfQogICAgIH0KIAotICAgIGZvcmVh
Y2ggbXkgJGZ1bmN0aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgJG51
bUN1c3RvbUZ1bmN0aW9ucysrIGlmIEhhc0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcyk7Ci0gICAgICAgICRoYXNGb3J3YXJkRGVjbGFyaW5nRnVuY3Rpb25zID0gMSBp
ZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ZvcndhcmREZWNsYXJlSW5IZWFkZXJ9
OworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkg
eworICAgICAgICAkbnVtQ3VzdG9tT3BlcmF0aW9ucysrIGlmIEhhc0N1c3RvbU1ldGhvZCgkb3Bl
cmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMpOworICAgICAgICAkaGFzRm9yd2FyZERlY2xhcmlu
Z09wZXJhdGlvbnMgPSAxIGlmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Zvcndh
cmREZWNsYXJlSW5IZWFkZXJ9OwogICAgIH0KIAotICAgIGlmICgkbnVtQ3VzdG9tRnVuY3Rpb25z
ID4gMCkgeworICAgIGlmICgkbnVtQ3VzdG9tT3BlcmF0aW9ucyA+IDApIHsKICAgICAgICAgbXkg
JGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiXG4g
ICAgLy8gQ3VzdG9tIGZ1bmN0aW9uc1xuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9u
IChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIG5leHQgdW5sZXNzIEhh
c0N1c3RvbU1ldGhvZCgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyk7Ci0gICAgICAgICAg
ICBuZXh0IGlmICRmdW5jdGlvbi0+e292ZXJsb2Fkc30gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJ
bmRleH0gIT0gMTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2Ut
Pm9wZXJhdGlvbnN9KSB7CisgICAgICAgICAgICBuZXh0IHVubGVzcyBIYXNDdXN0b21NZXRob2Qo
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgICAgIG5leHQgaWYgJG9w
ZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ICE9IDE7
CiAKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxl
Q29weXJpZ2h0fSkgeworICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgewogICAgICAgICAgICAgICAgIGlmICghJGluQXBwbGVD
b3B5cmlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGJl
Z2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CiAgICAgICAgICAgICAgICAgICAgICRp
bkFwcGxlQ29weXJpZ2h0ID0gMTsKQEAgLTIwNjgsMTYgKzIwNjQsMTYgQEAgc3ViIEdlbmVyYXRl
SGVhZGVyCiAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRv
ci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24pOworICAgICAgICAgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmcoJG9wZXJhdGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICAg
ICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGNvZGVHZW5lcmF0b3ItPldLX2xjZmly
c3QoJGZ1bmN0aW9uLT5uYW1lKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0
aW9uTmFtZSA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9
IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpOwogCiAgICAg
ICAgICAgICBteSBAZnVuY3Rpb25Bcmd1bWVudHMgPSAoKTsKICAgICAgICAgICAgIHB1c2goQGZ1
bmN0aW9uQXJndW1lbnRzLCAiSlNDOjpFeGVjU3RhdGUmIik7Ci0gICAgICAgICAgICBwdXNoKEBm
dW5jdGlvbkFyZ3VtZW50cywgIlJlZjxEZWZlcnJlZFByb21pc2U+JiYiKSBpZiAkY29kZUdlbmVy
YXRvci0+SXNQcm9taXNlVHlwZSgkZnVuY3Rpb24tPnR5cGUpICYmICEkZnVuY3Rpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1JldHVybnNPd25Qcm9taXNlfTsKKyAgICAgICAgICAgIHB1c2goQGZ1
bmN0aW9uQXJndW1lbnRzLCAiUmVmPERlZmVycmVkUHJvbWlzZT4mJiIpIGlmICRjb2RlR2VuZXJh
dG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpICYmICEkb3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntSZXR1cm5zT3duUHJvbWlzZX07CiAKLSAgICAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgIiAuICgkZnVuY3Rpb24tPmlzU3RhdGljID8gInN0YXRpYyAi
IDogIiIpIC4gIkpTQzo6SlNWYWx1ZSAiIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4g
IigiIC4gam9pbigiLCAiLCBAZnVuY3Rpb25Bcmd1bWVudHMpIC4gIik7XG4iKTsKKyAgICAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgIiAuICgkb3BlcmF0aW9uLT5pc1N0YXRpYyA/
ICJzdGF0aWMgIiA6ICIiKSAuICJKU0M6OkpTVmFsdWUgIiAuICRmdW5jdGlvbkltcGxlbWVudGF0
aW9uTmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGZ1bmN0aW9uQXJndW1lbnRzKSAuICIpO1xuIik7
CiAKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAtMjE4NSwxNCArMjE4MSwxNCBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKIAogICAgIEdlbmVyYXRlUHJvdG90eXBlRGVjbGFyYXRpb24oXEBoZWFkZXJD
b250ZW50LCAkY2xhc3NOYW1lLCAkaW50ZXJmYWNlKSBpZiBIZWFkZXJOZWVkc1Byb3RvdHlwZURl
Y2xhcmF0aW9uKCRpbnRlcmZhY2UpOwogCi0gICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nRnVu
Y3Rpb25zKSB7CisgICAgaWYgKCRoYXNGb3J3YXJkRGVjbGFyaW5nT3BlcmF0aW9ucykgewogICAg
ICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsIi8vIEZ1bmN0aW9uc1xuXG4iKTsKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7
JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewotICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24t
PntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAg
ICAgICAgICBuZXh0IHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Zvcndh
cmREZWNsYXJlSW5IZWFkZXJ9OworICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGlu
dGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgICAgIG5leHQgaWYgJG9wZXJhdGlvbi0+
e292ZXJsb2FkSW5kZXh9ICYmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSA+IDE7CisgICAg
ICAgICAgICBuZXh0IHVubGVzcyAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3
YXJkRGVjbGFyZUluSGVhZGVyfTsKIAotICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CisgICAgICAgICAgICBpZiAoJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57QXBwbGVDb3B5cmlnaHR9KSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCEkaW5BcHBsZUNvcHlyaWdodCkgewogICAgICAgICAgICAgICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAkYmVnaW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKICAg
ICAgICAgICAgICAgICAgICAgJGluQXBwbGVDb3B5cmlnaHQgPSAxOwpAQCAtMjIwMiwxMCArMjE5
OCwxMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgICAgICAkaW5BcHBsZUNvcHly
aWdodCA9IDA7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbEF0
dHJpYnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yRnVuY3Rpb25Db25zaWRlcmluZ092ZXJsb2Fkcygk
ZnVuY3Rpb24pOworICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsQXR0cmlidXRlID0gR2V0Q29u
ZGl0aW9uYWxGb3JPcGVyYXRpb25Db25zaWRlcmluZ092ZXJsb2Fkcygkb3BlcmF0aW9uKTsKICAg
ICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA/
ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZh
bHVlKCRjb25kaXRpb25hbEF0dHJpYnV0ZSkgOiB1bmRlZjsKICAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKLSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUo
JGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRmdW5j
dGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJh
dGlvbik7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0ZSopO1xuIik7
CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KQEAgLTIzMTEsNyArMjMwNyw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogCiBzdWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiB7Ci0gICAgbXkgKCRv
YmplY3QsICRpbnRlcmZhY2UsICRpc0luc3RhbmNlLCAkaGFzaEtleXMsICRoYXNoU3BlY2lhbHMs
ICRoYXNoVmFsdWUxLCAkaGFzaFZhbHVlMiwgJGNvbmRpdGlvbmFscywgJHJ1bnRpbWVFbmFibGVk
RnVuY3Rpb25zLCAkcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzLCAkc2V0dGluZ3NFbmFibGVkRnVu
Y3Rpb25zLCAkc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcykgPSBAXzsKKyAgICBteSAoJG9iamVj
dCwgJGludGVyZmFjZSwgJGlzSW5zdGFuY2UsICRoYXNoS2V5cywgJGhhc2hTcGVjaWFscywgJGhh
c2hWYWx1ZTEsICRoYXNoVmFsdWUyLCAkY29uZGl0aW9uYWxzLCAkcnVudGltZUVuYWJsZWRPcGVy
YXRpb25zLCAkcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzLCAkc2V0dGluZ3NFbmFibGVkT3BlcmF0
aW9ucywgJHNldHRpbmdzRW5hYmxlZEF0dHJpYnV0ZXMpID0gQF87CiAKICAgICAjIEZJWE1FOiBU
aGVzZSBzaG91bGQgYmUgZnVuY3Rpb25zIG9uICRpbnRlcmZhY2UuCiAgICAgbXkgJGludGVyZmFj
ZU5hbWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwpAQCAtMjM3OSw0OCArMjM3NSw0OCBAQCBz
dWIgR2VuZXJhdGVQcm9wZXJ0aWVzSGFzaFRhYmxlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBt
eSBAZnVuY3Rpb25zID0gQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9OwotICAgIHB1c2goQGZ1bmN0
aW9ucywgQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+ZnVuY3Rpb25zfSkgaWYgSXNLZXlWYWx1ZUl0
ZXJhYmxlSW50ZXJmYWNlKCRpbnRlcmZhY2UpOwotICAgIHB1c2goQGZ1bmN0aW9ucywgQHskaW50
ZXJmYWNlLT5tYXBMaWtlLT5mdW5jdGlvbnN9KSBpZiAkaW50ZXJmYWNlLT5tYXBMaWtlOwotICAg
IHB1c2goQGZ1bmN0aW9ucywgQHskaW50ZXJmYWNlLT5zZXJpYWxpemFibGUtPmZ1bmN0aW9uc30p
IGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAo
QGZ1bmN0aW9ucykgewotICAgICAgICBuZXh0IGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0pOwotICAgICAgICBuZXh0IGlmICgkZnVuY3Rpb24t
PmlzU3RhdGljKTsKLSAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAm
JiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAgICAgIG5leHQgaWYgT3BlcmF0
aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRmdW5jdGlvbikgIT0gJGlzSW5zdGFu
Y2U7Ci0gICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9y
XSI7CisgICAgbXkgQG9wZXJhdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9OworICAg
IHB1c2goQG9wZXJhdGlvbnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUtPm9wZXJhdGlvbnN9KSBp
ZiBJc0tleVZhbHVlSXRlcmFibGVJbnRlcmZhY2UoJGludGVyZmFjZSk7CisgICAgcHVzaChAb3Bl
cmF0aW9ucywgQHskaW50ZXJmYWNlLT5tYXBMaWtlLT5vcGVyYXRpb25zfSkgaWYgJGludGVyZmFj
ZS0+bWFwTGlrZTsKKyAgICBwdXNoKEBvcGVyYXRpb25zLCBAeyRpbnRlcmZhY2UtPnNlcmlhbGl6
YWJsZS0+b3BlcmF0aW9uc30pIGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKKyAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEBvcGVyYXRpb25zKSB7CisgICAgICAgIG5leHQgaWYgKCRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKKyAgICAg
ICAgbmV4dCBpZiAoJG9wZXJhdGlvbi0+aXNTdGF0aWMpOworICAgICAgICBuZXh0IGlmICRvcGVy
YXRpb24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAx
OworICAgICAgICBuZXh0IGlmIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNl
LCAkb3BlcmF0aW9uKSAhPSAkaXNJbnN0YW5jZTsKKyAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9u
LT5uYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKICAgICAgICAgIyBHbG9iYWwgb2JqZWN0
cyBhZGQgUnVudGltZUVuYWJsZWQgb3BlcmF0aW9ucyBhZnRlciBjcmVhdGlvbiBzbyBkbyBub3Qg
YWRkIHRoZW0gdG8gdGhlIHN0YXRpYyB0YWJsZS4KLSAgICAgICAgaWYgKCRpc0luc3RhbmNlICYm
IE5lZWRzUnVudGltZUNoZWNrKCRmdW5jdGlvbikpIHsKKyAgICAgICAgaWYgKCRpc0luc3RhbmNl
ICYmIE5lZWRzUnVudGltZUNoZWNrKCRvcGVyYXRpb24pKSB7CiAgICAgICAgICAgICAkcHJvcGVy
dHlDb3VudCAtPSAxOwogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQogCi0gICAgICAgIG15
ICRuYW1lID0gJGZ1bmN0aW9uLT5uYW1lOworICAgICAgICBteSAkbmFtZSA9ICRvcGVyYXRpb24t
Pm5hbWU7CiAgICAgICAgIHB1c2goQCRoYXNoS2V5cywgJG5hbWUpOwogCi0gICAgICAgIG15ICRm
dW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1
bmN0aW9uKTsKKyAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50
ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKTsKICAgICAgICAgcHVzaChAJGhhc2hWYWx1
ZTEsICRmdW5jdGlvbk5hbWUpOwogCi0gICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1
bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7CisgICAgICAgIG15ICRmdW5jdGlvbkxlbmd0aCA9IEdl
dEZ1bmN0aW9uTGVuZ3RoKCRvcGVyYXRpb24pOwogCi0gICAgICAgIGlmICgkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKLSAgICAgICAgICAgIHB1c2goQCRoYXNoVmFs
dWUyLCAiJkRPTUpJVFNpZ25hdHVyZUZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKSk7CisgICAgICAgIGlmICgk
b3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9KSB7CisgICAgICAgICAgICBw
dXNoKEAkaGFzaFZhbHVlMiwgIiZET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlw
ZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQCRoYXNoVmFsdWUyLCAkZnVuY3Rp
b25MZW5ndGgpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVzaChAJGhhc2hTcGVjaWFscywgQ29t
cHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKTsKKyAgICAgICAgcHVz
aChAJGhhc2hTcGVjaWFscywgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNlLCAkb3Bl
cmF0aW9uKSk7CiAKLSAgICAgICAgbXkgJGNvbmRpdGlvbmFsID0gR2V0Q29uZGl0aW9uYWxGb3JG
dW5jdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzKCRmdW5jdGlvbik7CisgICAgICAgIG15ICRjb25k
aXRpb25hbCA9IEdldENvbmRpdGlvbmFsRm9yT3BlcmF0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMo
JG9wZXJhdGlvbik7CiAgICAgICAgICRjb25kaXRpb25hbHMtPnskbmFtZX0gPSAkY29uZGl0aW9u
YWwgaWYgJGNvbmRpdGlvbmFsOwogCi0gICAgICAgIGlmIChOZWVkc1J1bnRpbWVDaGVjaygkZnVu
Y3Rpb24pKSB7Ci0gICAgICAgICAgICBwdXNoKEAkcnVudGltZUVuYWJsZWRGdW5jdGlvbnMsICRm
dW5jdGlvbik7CisgICAgICAgIGlmIChOZWVkc1J1bnRpbWVDaGVjaygkb3BlcmF0aW9uKSkgewor
ICAgICAgICAgICAgcHVzaChAJHJ1bnRpbWVFbmFibGVkT3BlcmF0aW9ucywgJG9wZXJhdGlvbik7
CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntFbmFibGVkQnlTZXR0aW5nfSkgewotICAgICAgICAgICAgcHVzaChAJHNldHRpbmdzRW5hYmxl
ZEZ1bmN0aW9ucywgJGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSB7CisgICAgICAgICAgICBwdXNoKEAkc2V0
dGluZ3NFbmFibGVkT3BlcmF0aW9ucywgJG9wZXJhdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTI0NDgsNyArMjQ0NCw3IEBAIHN1YiBDb21wdXRlRWZmZWN0aXZlT3ZlcmxvYWRTZXQKICAg
ICAgICAgfQogICAgIH07CiAKLSAgICBteSAkbSA9IExlbmd0aE9mTG9uZ2VzdEZ1bmN0aW9uUGFy
YW1ldGVyTGlzdCgkb3ZlcmxvYWRzKTsKKyAgICBteSAkbSA9IExlbmd0aE9mTG9uZ2VzdE9wZXJh
dGlvblBhcmFtZXRlckxpc3QoJG92ZXJsb2Fkcyk7CiAgICAgZm9yZWFjaCBteSAkb3ZlcmxvYWQg
KEB7JG92ZXJsb2Fkc30pIHsKICAgICAgICAgbXkgJG4gPSBAeyRvdmVybG9hZC0+YXJndW1lbnRz
fTsKICAgICAgICAgbXkgQHQ7CkBAIC0yNTQ2LDcgKzI1NDIsNyBAQCBzdWIgQXJlVHlwZXNEaXN0
aW5ndWlzaGFibGVGb3JPdmVybG9hZFJlCiAjIGh0dHA6Ly9oZXljYW0uZ2l0aHViLmlvL3dlYmlk
bC8jZGZuLWRpc3Rpbmd1aXNoaW5nLWFyZ3VtZW50LWluZGV4CiBzdWIgR2V0RGlzdGluZ3Vpc2hp
bmdBcmd1bWVudEluZGV4CiB7Ci0gICAgbXkgKCRmdW5jdGlvbiwgJFMpID0gQF87CisgICAgbXkg
KCRvcGVyYXRpb24sICRTKSA9IEBfOwogCiAgICAgIyBGSVhNRTogQ29uc2lkZXIgYWxsIHRoZSB0
dXBsZXMsIG5vdCBqdXN0IHRoZSAyIGZpcnN0IG9uZXM/CiAgICAgbXkgJGZpcnN0VHVwbGVUeXBl
cyA9IEB7QHskU31bMF19WzFdOwpAQCAtMjU1NCw3ICsyNTUwLDcgQEAgc3ViIEdldERpc3Rpbmd1
aXNoaW5nQXJndW1lbnRJbmRleAogICAgIGZvciAobXkgJGluZGV4ID0gMDsgJGluZGV4IDwgc2Nh
bGFyKEAkZmlyc3RUdXBsZVR5cGVzKTsgJGluZGV4KyspIHsKICAgICAgICAgcmV0dXJuICRpbmRl
eCBpZiBBcmVUeXBlc0Rpc3Rpbmd1aXNoYWJsZUZvck92ZXJsb2FkUmVzb2x1dGlvbihAeyRmaXJz
dFR1cGxlVHlwZXN9WyRpbmRleF0sIEB7JHNlY29uZFR1cGxlVHlwZXN9WyRpbmRleF0pOwogICAg
IH0KLSAgICBkaWUgIlVuZGlzdGluZ3Vpc2hhYmxlIG92ZXJsb2FkcyBmb3Igb3BlcmF0aW9uICIg
LiAkZnVuY3Rpb24tPm5hbWUgLiAiIHdpdGggbGVuZ3RoOiAiIC4gc2NhbGFyKEAkZmlyc3RUdXBs
ZVR5cGVzKTsKKyAgICBkaWUgIlVuZGlzdGluZ3Vpc2hhYmxlIG92ZXJsb2FkcyBmb3Igb3BlcmF0
aW9uICIgLiAkb3BlcmF0aW9uLT5uYW1lIC4gIiB3aXRoIGxlbmd0aDogIiAuIHNjYWxhcihAJGZp
cnN0VHVwbGVUeXBlcyk7CiB9CiAKIHN1YiBHZXRPdmVybG9hZFRoYXRNYXRjaGVzCkBAIC0yNTg1
LDE0ICsyNTgxLDE0IEBAIHN1YiBHZXRPdmVybG9hZFRoYXRNYXRjaGVzSWdub3JpbmdVbmlvblMK
ICAgICB9CiB9CiAKLXN1YiBHZXRDb25kaXRpb25hbEZvckZ1bmN0aW9uQ29uc2lkZXJpbmdPdmVy
bG9hZHMKK3N1YiBHZXRDb25kaXRpb25hbEZvck9wZXJhdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRz
CiB7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJG9wZXJhdGlvbiA9IHNoaWZ0
OwogCi0gICAgcmV0dXJuICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9u
YWx9IHVubGVzcyAkZnVuY3Rpb24tPntvdmVybG9hZHN9OworICAgIHJldHVybiAkb3BlcmF0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0gdW5sZXNzICRvcGVyYXRpb24tPntv
dmVybG9hZHN9OwogCiAgICAgbXkgJWNvbmRpdGlvbnM7Ci0gICAgZm9yZWFjaCBteSAkb3Zlcmxv
YWQgKEB7JGZ1bmN0aW9uLT57b3ZlcmxvYWRzfX0pIHsKKyAgICBmb3JlYWNoIG15ICRvdmVybG9h
ZCAoQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0pIHsKICAgICAgICAgbXkgJGNvbmRpdGlvbmFs
ID0gJG92ZXJsb2FkLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07CiAgICAgICAg
IHJldHVybiB1bmxlc3MgJGNvbmRpdGlvbmFsOwogICAgICAgICAkY29uZGl0aW9uc3skY29uZGl0
aW9uYWx9ID0gMTsKQEAgLTI2MDQsOSArMjYwMCw5IEBAIHN1YiBHZXRDb25kaXRpb25hbEZvckZ1
bmN0aW9uQ29uc2lkZXJpbmcKICMgaHR0cDovL2hleWNhbS5naXRodWIuaW8vd2ViaWRsLyNlcy1v
dmVybG9hZHMKIHN1YiBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hlcgogewotICAgIG15ICgkZnVu
Y3Rpb24sICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4LCAkZnVuY3Rpb25TaWdu
YXR1cmUpID0gQF87CisgICAgbXkgKCRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRvdmVybG9hZEZ1
bmN0aW9uUHJlZml4LCAkZnVuY3Rpb25TaWduYXR1cmUpID0gQF87CiAgICAgCi0gICAgbXkgJWFs
bFNldHMgPSBDb21wdXRlRWZmZWN0aXZlT3ZlcmxvYWRTZXQoJGZ1bmN0aW9uLT57b3ZlcmxvYWRz
fSk7CisgICAgbXkgJWFsbFNldHMgPSBDb21wdXRlRWZmZWN0aXZlT3ZlcmxvYWRTZXQoJG9wZXJh
dGlvbi0+e292ZXJsb2Fkc30pOwogCiAgICAgbXkgJGdlbmVyYXRlT3ZlcmxvYWRDYWxsSWZOZWNl
c3NhcnkgPSBzdWIgewogICAgICAgICBteSAoJG92ZXJsb2FkLCAkY29uZGl0aW9uLCAkaW5jbHVk
ZSkgPSBAXzsKQEAgLTI2ODMsOSArMjY3OSw5IEBAIHN1YiBHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0
Y2hlcgogICAgICAgICByZXR1cm4gJHR5cGUtPm5hbWUgZXEgImFueSI7CiAgICAgfTsKIAotICAg
IG15ICRtYXhBcmdDb3VudCA9IExlbmd0aE9mTG9uZ2VzdEZ1bmN0aW9uUGFyYW1ldGVyTGlzdCgk
ZnVuY3Rpb24tPntvdmVybG9hZHN9KTsKKyAgICBteSAkbWF4QXJnQ291bnQgPSBMZW5ndGhPZkxv
bmdlc3RPcGVyYXRpb25QYXJhbWV0ZXJMaXN0KCRvcGVyYXRpb24tPntvdmVybG9hZHN9KTsKIAot
ICAgIG15ICRjb25kaXRpb25hbEF0dHJpYnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yRnVuY3Rpb25D
b25zaWRlcmluZ092ZXJsb2FkcygkZnVuY3Rpb24pOworICAgIG15ICRjb25kaXRpb25hbEF0dHJp
YnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yT3BlcmF0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMoJG9w
ZXJhdGlvbik7CiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvbmRpdGlvbmFsQXR0cmli
dXRlID8gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmli
dXRlVmFsdWUoJGNvbmRpdGlvbmFsQXR0cmlidXRlKSA6IHVuZGVmOwogICAgIHB1c2goQGltcGxD
b250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJp
bmc7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZnVuY3Rpb25TaWduYXR1cmVcbiIpOwpAQCAt
MjcwMyw3ICsyNjk5LDcgQEAgRU5ECiBFTkQKICAgICAgICAgbXkgJFMgPSAkYWxsU2V0c3skbGVu
Z3RofTsKICAgICAgICAgaWYgKHNjYWxhcihAJFMpID4gMSkgewotICAgICAgICAgICAgbXkgJGQg
PSBHZXREaXN0aW5ndWlzaGluZ0FyZ3VtZW50SW5kZXgoJGZ1bmN0aW9uLCAkUyk7CisgICAgICAg
ICAgICBteSAkZCA9IEdldERpc3Rpbmd1aXNoaW5nQXJndW1lbnRJbmRleCgkb3BlcmF0aW9uLCAk
Uyk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgSlNWYWx1ZSBkaXN0
aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgkZCk7XG4iKTsKIAogICAg
ICAgICAgICAgbXkgJG92ZXJsb2FkID0gR2V0T3ZlcmxvYWRUaGF0TWF0Y2hlc0lnbm9yaW5nVW5p
b25TdWJ0eXBlcygkUywgJGQsIFwmJGlzT3B0aW9uYWxQYXJhbWV0ZXIpOwpAQCAtMjc3NSw3ICsy
NzcxLDcgQEAgRU5ECiAgICAgfQogRU5ECiAgICAgfQotICAgIG15ICRtaW5BcmdDb3VudCA9IEdl
dEZ1bmN0aW9uTGVuZ3RoKCRmdW5jdGlvbik7CisgICAgbXkgJG1pbkFyZ0NvdW50ID0gR2V0RnVu
Y3Rpb25MZW5ndGgoJG9wZXJhdGlvbik7CiAgICAgaWYgKCRtaW5BcmdDb3VudCA+IDApIHsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGFyZ3NDb3VudCA8ICRtaW5BcmdD
b3VudCA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUp
O1xuIikKICAgICB9IGVsc2UgewpAQCAtMjc4OSwyOCArMjc4NSwyOCBAQCBFTkQKICMgQXMgcGVy
IFdlYiBJREwgc3BlY2lmaWNhdGlvbiwgdGhlIGxlbmd0aCBvZiBhIGZ1bmN0aW9uIE9iamVjdCBp
cyBpdHMgbnVtYmVyIG9mIG1hbmRhdG9yeSBwYXJhbWV0ZXJzLgogc3ViIEdldEZ1bmN0aW9uTGVu
Z3RoCiB7Ci0gICAgbXkgJGZ1bmN0aW9uID0gc2hpZnQ7CisgICAgbXkgJG9wZXJhdGlvbiA9IHNo
aWZ0OwogCiAgICAgbXkgJGdldE92ZXJsb2FkTGVuZ3RoID0gc3ViIHsKLSAgICAgICAgbXkgJGZ1
bmN0aW9uID0gc2hpZnQ7CisgICAgICAgIG15ICRvcGVyYXRpb24gPSBzaGlmdDsKIAogICAgICAg
ICBteSAkbGVuZ3RoID0gMDsKLSAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0
aW9uLT5hcmd1bWVudHN9KSB7CisgICAgICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRvcGVy
YXRpb24tPmFyZ3VtZW50c30pIHsKICAgICAgICAgICAgIGxhc3QgaWYgJGFyZ3VtZW50LT5pc09w
dGlvbmFsIHx8ICRhcmd1bWVudC0+aXNWYXJpYWRpYzsKICAgICAgICAgICAgICRsZW5ndGgrKzsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gJGxlbmd0aDsKICAgICB9OwogCi0gICAgbXkgJGxl
bmd0aCA9ICYkZ2V0T3ZlcmxvYWRMZW5ndGgoJGZ1bmN0aW9uKTsKLSAgICBmb3JlYWNoIG15ICRv
dmVybG9hZCAoQHskZnVuY3Rpb24tPntvdmVybG9hZHN9fSkgeworICAgIG15ICRsZW5ndGggPSAm
JGdldE92ZXJsb2FkTGVuZ3RoKCRvcGVyYXRpb24pOworICAgIGZvcmVhY2ggbXkgJG92ZXJsb2Fk
IChAeyRvcGVyYXRpb24tPntvdmVybG9hZHN9fSkgewogICAgICAgICBteSAkbmV3TGVuZ3RoID0g
JiRnZXRPdmVybG9hZExlbmd0aCgkb3ZlcmxvYWQpOwogICAgICAgICAkbGVuZ3RoID0gJG5ld0xl
bmd0aCBpZiAkbmV3TGVuZ3RoIDwgJGxlbmd0aDsKICAgICB9CiAgICAgcmV0dXJuICRsZW5ndGg7
CiB9CiAKLXN1YiBMZW5ndGhPZkxvbmdlc3RGdW5jdGlvblBhcmFtZXRlckxpc3QKK3N1YiBMZW5n
dGhPZkxvbmdlc3RPcGVyYXRpb25QYXJhbWV0ZXJMaXN0CiB7CiAgICAgbXkgKCRvdmVybG9hZHMp
ID0gQF87CiAgICAgbXkgJHJlc3VsdCA9IDA7CkBAIC0yOTkwLDggKzI5ODYsOCBAQCBzdWIgYWRk
VW5zY29wYWJsZVByb3BlcnRpZXMKICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CiAKICAgICBt
eSBAdW5zY29wYWJsZXM7Ci0gICAgZm9yZWFjaCBteSAkZnVuY3Rpb25PckF0dHJpYnV0ZSAoQHsk
aW50ZXJmYWNlLT5mdW5jdGlvbnN9LCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7Ci0gICAg
ICAgIHB1c2goQHVuc2NvcGFibGVzLCAkZnVuY3Rpb25PckF0dHJpYnV0ZS0+bmFtZSkgaWYgJGZ1
bmN0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1Vuc2NvcGFibGV9OworICAg
IGZvcmVhY2ggbXkgJG9wZXJhdGlvbk9yQXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPm9wZXJhdGlv
bnN9LCBAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIHB1c2goQHVuc2NvcGFi
bGVzLCAkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPm5hbWUpIGlmICRvcGVyYXRpb25PckF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57VW5zY29wYWJsZX07CiAgICAgfQogICAgIHJldHVybiBp
ZiBzY2FsYXIoQHVuc2NvcGFibGVzKSA9PSAwOwogCkBAIC0zMDQ1LDcgKzMwNDEsNyBAQCBzdWIg
SW50ZXJmYWNlTmVlZHNJdGVyYXRvcgogICAgIHJldHVybiAxIGlmICRpbnRlcmZhY2UtPm1hcExp
a2U7CiAgICAgcmV0dXJuIDEgaWYgJGludGVyZmFjZS0+aXRlcmFibGU7CiAKLSAgICBpZiAoR2V0
SW5kZXhlZEdldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpKSB7CisgICAgaWYgKEdldEluZGV4ZWRH
ZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSkpIHsKICAgICAgICAgbXkgJGxlbmd0aEF0dHJpYnV0
ZSA9IEdldEF0dHJpYnV0ZVdpdGhOYW1lKCRpbnRlcmZhY2UsICJsZW5ndGgiKTsKICAgICAgICAg
cmV0dXJuIDEgaWYgJGxlbmd0aEF0dHJpYnV0ZSBhbmQgJGNvZGVHZW5lcmF0b3ItPklzSW50ZWdl
clR5cGUoJGxlbmd0aEF0dHJpYnV0ZS0+dHlwZSk7CiAgICAgfQpAQCAtMzA2Nyw4ICszMDYzLDgg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBteSAkZXZlbnRUYXJnZXQgPSAkY29k
ZUdlbmVyYXRvci0+SW5oZXJpdHNJbnRlcmZhY2UoJGludGVyZmFjZSwgIkV2ZW50VGFyZ2V0Iikg
JiYgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBuZSAiRXZlbnRUYXJnZXQiOwogICAgIG15ICRuZWVk
c1Zpc2l0Q2hpbGRyZW4gPSBJbnN0YW5jZU5lZWRzVmlzaXRDaGlsZHJlbigkaW50ZXJmYWNlKTsK
IAotICAgIG15ICRuYW1lZEdldHRlckZ1bmN0aW9uID0gR2V0TmFtZWRHZXR0ZXJGdW5jdGlvbigk
aW50ZXJmYWNlKTsKLSAgICBteSAkaW5kZXhlZEdldHRlckZ1bmN0aW9uID0gR2V0SW5kZXhlZEdl
dHRlckZ1bmN0aW9uKCRpbnRlcmZhY2UpOworICAgIG15ICRuYW1lZEdldHRlck9wZXJhdGlvbiA9
IEdldE5hbWVkR2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOworICAgIG15ICRpbmRleGVkR2V0
dGVyT3BlcmF0aW9uID0gR2V0SW5kZXhlZEdldHRlck9wZXJhdGlvbigkaW50ZXJmYWNlKTsKIAog
ICAgICMgLSBBZGQgZGVmYXVsdCBoZWFkZXIgdGVtcGxhdGUKICAgICBwdXNoKEBpbXBsQ29udGVu
dEhlYWRlciwgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkNvbnRlbnRIZWFkZXIoJGludGVyZmFjZSkp
OwpAQCAtMzA3Nyw3ICszMDczLDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAk
aW1wbEluY2x1ZGVzeyJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgifSA9IDE7CiAgICAgJGltcGxJ
bmNsdWRlc3siSlNET01XcmFwcGVyQ2FjaGUuaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyI8
d3RmL0dldFB0ci5oPiJ9ID0gMTsKLSAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9Qcm9wZXJ0
eU5hbWVBcnJheS5oPiJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlckZ1bmN0aW9uOworICAgICRpbXBs
SW5jbHVkZXN7IjxydW50aW1lL1Byb3BlcnR5TmFtZUFycmF5Lmg+In0gPSAxIGlmICRpbmRleGVk
R2V0dGVyT3BlcmF0aW9uOwogCiAgICAgbXkgJGltcGxUeXBlID0gR2V0SW1wbENsYXNzTmFtZSgk
aW50ZXJmYWNlKTsKIApAQCAtMzA5MSwyNyArMzA4NywyNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uc0ltcGxl
bWVudGF0aW9uQ29udGVudCgkaW50ZXJmYWNlLCAkZW51bWVyYXRpb25zKSk7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsIEdlbmVyYXRlRGljdGlvbmFyaWVzSW1wbGVtZW50YXRpb25Db250ZW50KCRp
bnRlcmZhY2UsICRkaWN0aW9uYXJpZXMpKTsKIAotICAgIG15IEBmdW5jdGlvbnMgPSBAeyRpbnRl
cmZhY2UtPmZ1bmN0aW9uc307Ci0gICAgcHVzaChAZnVuY3Rpb25zLCBAeyRpbnRlcmZhY2UtPml0
ZXJhYmxlLT5mdW5jdGlvbnN9KSBpZiBJc0tleVZhbHVlSXRlcmFibGVJbnRlcmZhY2UoJGludGVy
ZmFjZSk7Ci0gICAgcHVzaChAZnVuY3Rpb25zLCBAeyRpbnRlcmZhY2UtPm1hcExpa2UtPmZ1bmN0
aW9uc30pIGlmICRpbnRlcmZhY2UtPm1hcExpa2U7Ci0gICAgcHVzaChAZnVuY3Rpb25zLCBAeyRp
bnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+ZnVuY3Rpb25zfSkgaWYgJGludGVyZmFjZS0+c2VyaWFs
aXphYmxlOworICAgIG15IEBvcGVyYXRpb25zID0gQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfTsK
KyAgICBwdXNoKEBvcGVyYXRpb25zLCBAeyRpbnRlcmZhY2UtPml0ZXJhYmxlLT5vcGVyYXRpb25z
fSkgaWYgSXNLZXlWYWx1ZUl0ZXJhYmxlSW50ZXJmYWNlKCRpbnRlcmZhY2UpOworICAgIHB1c2go
QG9wZXJhdGlvbnMsIEB7JGludGVyZmFjZS0+bWFwTGlrZS0+b3BlcmF0aW9uc30pIGlmICRpbnRl
cmZhY2UtPm1hcExpa2U7CisgICAgcHVzaChAb3BlcmF0aW9ucywgQHskaW50ZXJmYWNlLT5zZXJp
YWxpemFibGUtPm9wZXJhdGlvbnN9KSBpZiAkaW50ZXJmYWNlLT5zZXJpYWxpemFibGU7CiAKICAg
ICBteSBAYXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0cmlidXRlc307CiAgICAgcHVzaChA
YXR0cmlidXRlcywgQHskaW50ZXJmYWNlLT5tYXBMaWtlLT5hdHRyaWJ1dGVzfSkgaWYgJGludGVy
ZmFjZS0+bWFwTGlrZTsKIAogICAgIG15ICRudW1Db25zdGFudHMgPSBAeyRpbnRlcmZhY2UtPmNv
bnN0YW50c307Ci0gICAgbXkgJG51bUZ1bmN0aW9ucyA9IEBmdW5jdGlvbnM7CisgICAgbXkgJG51
bU9wZXJhdGlvbnMgPSBAb3BlcmF0aW9uczsKICAgICBteSAkbnVtQXR0cmlidXRlcyA9IEBhdHRy
aWJ1dGVzOwogCi0gICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7CisgICAgaWYgKCRudW1PcGVy
YXRpb25zID4gMCkgewogICAgICAgICBteSAkaW5BcHBsZUNvcHlyaWdodCA9IDA7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCIvLyBGdW5jdGlvbnNcblxuIik7Ci0gICAgICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7Ci0gICAgICAgICAgICBuZXh0IGlmICRmdW5jdGlv
bi0+e292ZXJsb2FkSW5kZXh9ICYmICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKLSAg
ICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntGb3J3YXJk
RGVjbGFyZUluSGVhZGVyfTsKLSAgICAgICAgICAgIG5leHQgaWYgSXNKU0J1aWx0aW4oJGludGVy
ZmFjZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3BlcmF0
aW9ucykgeworICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0g
JiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKKyAgICAgICAgICAgIG5leHQgaWYg
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZERlY2xhcmVJbkhlYWRlcn07
CisgICAgICAgICAgICBuZXh0IGlmIElzSlNCdWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24p
OwogCi0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntBcHBs
ZUNvcHlyaWdodH0pIHsKKyAgICAgICAgICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntBcHBsZUNvcHlyaWdodH0pIHsKICAgICAgICAgICAgICAgICBpZiAoISRpbkFwcGxl
Q29weXJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkYmVn
aW5BcHBsZUNvcHlyaWdodEZvckhlYWRlckZpbGVzKTsKICAgICAgICAgICAgICAgICAgICAgJGlu
QXBwbGVDb3B5cmlnaHQgPSAxOwpAQCAtMzEyMSwxNiArMzExNywxNiBAQCBzdWIgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsQXR0cmlidXRlID0gR2V0
Q29uZGl0aW9uYWxGb3JGdW5jdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzKCRmdW5jdGlvbik7Cisg
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxBdHRyaWJ1dGUgPSBHZXRDb25kaXRpb25hbEZvck9w
ZXJhdGlvbkNvbnNpZGVyaW5nT3ZlcmxvYWRzKCRvcGVyYXRpb24pOwogICAgICAgICAgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvbmRpdGlvbmFsQXR0cmlidXRlID8gJGNvZGVHZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlv
bmFsQXR0cmlidXRlKSA6IHVuZGVmOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
aWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAg
ICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRG
dW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCAke2Z1bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqKTtcbiIpOwotICAgICAgICAgICAgaWYg
KCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklUfSkgeworICAgICAgICAgICAg
aWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsKICAgICAgICAg
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01KSVRJRExUeXBlLmgifSA9IDE7CiAgICAgICAgICAg
ICAgICAgbXkgJHVuc2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3It
PldLX3VjZmlyc3QoJGZ1bmN0aW9uTmFtZSk7CiAgICAgICAgICAgICAgICAgbXkgJGZ1bmN0aW9u
U2lnbmF0dXJlID0gIkpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiAke3Vuc2FmZUZ1
bmN0aW9uTmFtZX0oSlNDOjpFeGVjU3RhdGUqLCAkY2xhc3NOYW1lKiI7Ci0gICAgICAgICAgICAg
ICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAg
ICAgICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JG9wZXJhdGlvbi0+YXJndW1lbnRz
fSkgewogICAgICAgICAgICAgICAgICAgICBteSAkdHlwZSA9ICRhcmd1bWVudC0+dHlwZTsKICAg
ICAgICAgICAgICAgICAgICAgbXkgJGFyZ3VtZW50VHlwZSA9IEdldFVuc2FmZUFyZ3VtZW50VHlw
ZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICRmdW5jdGlvblNpZ25h
dHVyZSAuPSAiLCAke2FyZ3VtZW50VHlwZX0iOwpAQCAtMzE3MywzMSArMzE2OSwzMSBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7
CiAgICAgfQogCi0gICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIGZvcmVhY2gg
bXkgJGZ1bmN0aW9uIChAZnVuY3Rpb25zKSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07CisgICAgaWYgKCRudW1PcGVyYXRp
b25zID4gMCkgeworICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEBvcGVyYXRpb25zKSB7
CisgICAgICAgICAgICBuZXh0IHVubGVzcyAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntET01KSVR9OwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUSURMVHlwZUZpbHRl
ci5oIn0gPSAxOwogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS5oIn0gPSAxOwogCi0gICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1
bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAg
ICAgICAgICAgIG15ICRpc092ZXJsb2FkZWQgPSAkb3BlcmF0aW9uLT57b3ZlcmxvYWRzfSAmJiBA
eyRvcGVyYXRpb24tPntvdmVybG9hZHN9fSA+IDE7CiAgICAgICAgICAgICBkaWUgIk92ZXJsb2Fk
cyBpcyBub3Qgc3VwcG9ydGVkIGluIERPTUpJVCIgaWYgJGlzT3ZlcmxvYWRlZDsKLSAgICAgICAg
ICAgIGRpZSAiQ3VycmVudGx5IFJlYWRET00gdmFsdWUgaXMgb25seSBhbGxvd2VkIiB1bmxlc3Mg
JGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1bmN0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntET01KSVR9LCAiUmVhZERPTSIpOworICAgICAgICAgICAgZGllICJD
dXJyZW50bHkgUmVhZERPTSB2YWx1ZSBpcyBvbmx5IGFsbG93ZWQiIHVubGVzcyAkY29kZUdlbmVy
YXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntET01KSVR9LCAiUmVhZERPTSIpOwogCiAgICAgICAgICAgICBteSAkaW50ZXJmYWNl
TmFtZSA9ICRpbnRlcmZhY2UtPnR5cGUtPm5hbWU7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25O
YW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7
CisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gR2V0RnVuY3Rpb25OYW1lKCRpbnRlcmZh
Y2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pOwogICAgICAgICAgICAgbXkgJHVuc2FmZUZ1bmN0
aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9u
TmFtZSk7Ci0gICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlTmFtZSA9ICJET01KSVRTaWdu
YXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191
Y2ZpcnN0KCRmdW5jdGlvbi0+bmFtZSk7CisgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJl
TmFtZSA9ICJET01KSVRTaWduYXR1cmVGb3IiIC4gJGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRj
b2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpOwogICAgICAgICAgICAg
bXkgJGNsYXNzSW5mbyA9ICJKUyIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gIjo6aW5mbygp
IjsKLSAgICAgICAgICAgIG15ICRyZXN1bHRUeXBlID0gR2V0UmVzdWx0VHlwZUZpbHRlcigkaW50
ZXJmYWNlLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBH
ZXRSZXN1bHRUeXBlRmlsdGVyKCRpbnRlcmZhY2UsICRvcGVyYXRpb24tPnR5cGUpOwogICAgICAg
ICAgICAgbXkgJGRvbUpJVFNpZ25hdHVyZUhlYWRlciA9ICJzdGF0aWMgY29uc3QgSlNDOjpET01K
SVQ6OlNpZ25hdHVyZSAke2RvbUpJVFNpZ25hdHVyZU5hbWV9KCh1aW50cHRyX3QpJHt1bnNhZmVG
dW5jdGlvbk5hbWV9LCI7CiAgICAgICAgICAgICBteSAkZG9tSklUU2lnbmF0dXJlRm9vdGVyID0g
IiRjbGFzc0luZm8sIEpTQzo6RE9NSklUOjpFZmZlY3Q6OmZvclJlYWQoRE9NSklUOjpBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5OjpET00pLCAke3Jlc3VsdFR5cGV9IjsKLSAgICAgICAgICAgIGZvcmVh
Y2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAg
Zm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAg
ICAgICAgICAgIG15ICR0eXBlID0gJGFyZ3VtZW50LT50eXBlOwogICAgICAgICAgICAgICAgIG15
ICRhcmd1bWVudFR5cGUgPSBHZXRBcmd1bWVudFR5cGVGaWx0ZXIoJGludGVyZmFjZSwgJHR5cGUp
OwogICAgICAgICAgICAgICAgICRkb21KSVRTaWduYXR1cmVGb290ZXIgLj0gIiwgJHthcmd1bWVu
dFR5cGV9IjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICRkb21KSVRTaWduYXR1cmVGb290
ZXIgLj0gIik7IjsKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkb3BlcmF0aW9uKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
I2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRkb21KSVRTaWduYXR1cmVIZWFkZXIgJGRvbUpJ
VFNpZ25hdHVyZUZvb3RlclxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNl
bmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMzIxNSw5ICszMjExLDkgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBteSBAaGFzaFNwZWNpYWxzID0gKCk7CiAgICAg
bXkgJWNvbmRpdGlvbmFscyA9ICgpOwogICAgIG15ICRoYXNoTmFtZSA9ICRjbGFzc05hbWUgLiAi
VGFibGUiOwotICAgIG15IEBydW50aW1lRW5hYmxlZEZ1bmN0aW9ucyA9ICgpOworICAgIG15IEBy
dW50aW1lRW5hYmxlZE9wZXJhdGlvbnMgPSAoKTsKICAgICBteSBAcnVudGltZUVuYWJsZWRBdHRy
aWJ1dGVzID0gKCk7Ci0gICAgbXkgQHNldHRpbmdzRW5hYmxlZEZ1bmN0aW9ucyA9ICgpOworICAg
IG15IEBzZXR0aW5nc0VuYWJsZWRPcGVyYXRpb25zID0gKCk7CiAgICAgbXkgQHNldHRpbmdzRW5h
YmxlZEF0dHJpYnV0ZXMgPSAoKTsKIAogICAgICMgR2VuZXJhdGUgaGFzaCB0YWJsZSBmb3IgcHJv
cGVydGllcyBvbiB0aGUgaW5zdGFuY2UuCkBAIC0zMjI1LDggKzMyMjEsOCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBcQGhhc2hLZXlzLCBcQGhhc2hTcGVjaWFscywKICAg
ICAgICAgXEBoYXNoVmFsdWUxLCBcQGhhc2hWYWx1ZTIsCiAgICAgICAgIFwlY29uZGl0aW9uYWxz
LAotICAgICAgICBcQHJ1bnRpbWVFbmFibGVkRnVuY3Rpb25zLCBcQHJ1bnRpbWVFbmFibGVkQXR0
cmlidXRlcywKLSAgICAgICAgXEBzZXR0aW5nc0VuYWJsZWRGdW5jdGlvbnMsIFxAc2V0dGluZ3NF
bmFibGVkQXR0cmlidXRlcyk7CisgICAgICAgIFxAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zLCBc
QHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcywKKyAgICAgICAgXEBzZXR0aW5nc0VuYWJsZWRPcGVy
YXRpb25zLCBcQHNldHRpbmdzRW5hYmxlZEF0dHJpYnV0ZXMpOwogCiAgICAgJG9iamVjdC0+R2Vu
ZXJhdGVIYXNoVGFibGUoJGhhc2hOYW1lLCAkbnVtSW5zdGFuY2VQcm9wZXJ0aWVzLAogICAgICAg
ICBcQGhhc2hLZXlzLCBcQGhhc2hTcGVjaWFscywKQEAgLTMyOTUsMjUgKzMyOTEsMjUgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICRoYXNoU2l6ZSsrOwogICAgICAg
ICB9CiAKLSAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rp
b25zfSkgewotICAgICAgICAgICAgbmV4dCB1bmxlc3MgKCRmdW5jdGlvbi0+aXNTdGF0aWMpOwot
ICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZEluZGV4fSAmJiAkZnVuY3Rp
b24tPntvdmVybG9hZEluZGV4fSA+IDE7Ci0gICAgICAgICAgICBteSAkbmFtZSA9ICRmdW5jdGlv
bi0+bmFtZTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRpbnRlcmZhY2UtPm9w
ZXJhdGlvbnN9KSB7CisgICAgICAgICAgICBuZXh0IHVubGVzcyAoJG9wZXJhdGlvbi0+aXNTdGF0
aWMpOworICAgICAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYg
JG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsKKyAgICAgICAgICAgIG15ICRuYW1lID0g
JG9wZXJhdGlvbi0+bmFtZTsKICAgICAgICAgICAgIHB1c2goQGhhc2hLZXlzLCAkbmFtZSk7CiAK
LSAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFj
ZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUg
PSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAg
ICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUxLCAkZnVuY3Rpb25OYW1lKTsKIAotICAgICAgICAg
ICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKLSAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH0pIHsK
LSAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAiRE9NSklURnVuY3Rpb25Gb3IiIC4g
JGludGVyZmFjZS0+dHlwZS0+bmFtZSAuICRjb2RlR2VuZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5j
dGlvbi0+bmFtZSkpOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVuY3Rp
b25MZW5ndGgoJG9wZXJhdGlvbik7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RE9NSklUfSkgeworICAgICAgICAgICAgICAgIHB1c2goQGhhc2hWYWx1
ZTIsICJET01KSVRGdW5jdGlvbkZvciIgLiAkaW50ZXJmYWNlLT50eXBlLT5uYW1lIC4gJGNvZGVH
ZW5lcmF0b3ItPldLX3VjZmlyc3QoJG9wZXJhdGlvbi0+bmFtZSkpOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkZnVuY3Rpb25MZW5ndGgp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBwdXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1
dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKSk7CisgICAgICAgICAgICBw
dXNoKEBoYXNoU3BlY2lhbHMsIENvbXB1dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJG9w
ZXJhdGlvbikpOwogCi0gICAgICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkZnVuY3Rpb24tPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKKyAgICAgICAgICAgIG15ICRjb25kaXRp
b25hbCA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfTsKICAg
ICAgICAgICAgICRjb25kaXRpb25hbHN7JG5hbWV9ID0gJGNvbmRpdGlvbmFsIGlmICRjb25kaXRp
b25hbDsKIAogICAgICAgICAgICAgJGhhc2hTaXplKys7CkBAIC0zMzQyLDkgKzMzMzgsOSBAQCBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIEBoYXNoVmFsdWUyID0gKCk7CiAgICAgQGhh
c2hTcGVjaWFscyA9ICgpOwogICAgICVjb25kaXRpb25hbHMgPSAoKTsKLSAgICBAcnVudGltZUVu
YWJsZWRGdW5jdGlvbnMgPSAoKTsKKyAgICBAcnVudGltZUVuYWJsZWRPcGVyYXRpb25zID0gKCk7
CiAgICAgQHJ1bnRpbWVFbmFibGVkQXR0cmlidXRlcyA9ICgpOwotICAgIEBzZXR0aW5nc0VuYWJs
ZWRGdW5jdGlvbnMgPSAoKTsKKyAgICBAc2V0dGluZ3NFbmFibGVkT3BlcmF0aW9ucyA9ICgpOwog
ICAgIEBzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzID0gKCk7CiAKICAgICAjIEdlbmVyYXRlIGhh
c2ggdGFibGUgZm9yIHByb3BlcnRpZXMgb24gdGhlIHByb3RvdHlwZS4KQEAgLTMzNTIsOCArMzM0
OCw4IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIFxAaGFzaEtleXMsIFxA
aGFzaFNwZWNpYWxzLAogICAgICAgICBcQGhhc2hWYWx1ZTEsIFxAaGFzaFZhbHVlMiwKICAgICAg
ICAgXCVjb25kaXRpb25hbHMsCi0gICAgICAgIFxAcnVudGltZUVuYWJsZWRGdW5jdGlvbnMsIFxA
cnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzLAotICAgICAgICBcQHNldHRpbmdzRW5hYmxlZEZ1bmN0
aW9ucywgXEBzZXR0aW5nc0VuYWJsZWRBdHRyaWJ1dGVzKTsKKyAgICAgICAgXEBydW50aW1lRW5h
YmxlZE9wZXJhdGlvbnMsIFxAcnVudGltZUVuYWJsZWRBdHRyaWJ1dGVzLAorICAgICAgICBcQHNl
dHRpbmdzRW5hYmxlZE9wZXJhdGlvbnMsIFxAc2V0dGluZ3NFbmFibGVkQXR0cmlidXRlcyk7CiAK
ICAgICBteSAkaGFzaFNpemUgPSAkbnVtUHJvdG90eXBlUHJvcGVydGllczsKIApAQCAtMzM5Niwx
MyArMzM5MiwxMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7XG4iKTsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVzKHZtLCAke2NsYXNz
TmFtZX1Qcm90b3R5cGVUYWJsZVZhbHVlcywgKnRoaXMpO1xuIik7CiAKLSAgICAgICAgbXkgQHJ1
bnRpbWVFbmFibGVkUHJvcGVydGllcyA9IEBydW50aW1lRW5hYmxlZEZ1bmN0aW9uczsKKyAgICAg
ICAgbXkgQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcyA9IEBydW50aW1lRW5hYmxlZE9wZXJhdGlv
bnM7CiAgICAgICAgIHB1c2goQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcywgQHJ1bnRpbWVFbmFi
bGVkQXR0cmlidXRlcyk7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uT3JBdHRyaWJ1dGUg
KEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgIG15ICRjb25kaXRpb25h
bFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5j
dGlvbk9yQXR0cmlidXRlKTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uT3JBdHRyaWJ1
dGUgKEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRv
cGVyYXRpb25PckF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNp
ZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwotICAgICAg
ICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbk9yQXR0cmlidXRlKTsKLSAgICAgICAg
ICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPm5hbWU7CisgICAgICAgICAgICBt
eSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmcoJG9wZXJhdGlvbk9yQXR0cmlidXRlKTsKKyAgICAgICAgICAgIG15
ICRuYW1lID0gJG9wZXJhdGlvbk9yQXR0cmlidXRlLT5uYW1lOwogICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30p
IHtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIpLCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZp
Z3VyYWJsZSk7XG4iKTsKQEAgLTM0MTEsMTkgKzM0MDcsMTkgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIH0KIAotICAgICAgICBteSBAc2V0dGluZ3NFbmFi
bGVkUHJvcGVydGllcyA9IEBzZXR0aW5nc0VuYWJsZWRGdW5jdGlvbnM7CisgICAgICAgIG15IEBz
ZXR0aW5nc0VuYWJsZWRQcm9wZXJ0aWVzID0gQHNldHRpbmdzRW5hYmxlZE9wZXJhdGlvbnM7CiAg
ICAgICAgIHB1c2goQHNldHRpbmdzRW5hYmxlZFByb3BlcnRpZXMsIEBzZXR0aW5nc0VuYWJsZWRB
dHRyaWJ1dGVzKTsKICAgICAgICAgaWYgKHNjYWxhcihAc2V0dGluZ3NFbmFibGVkUHJvcGVydGll
cykpIHsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIik7CiAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBjb250ZXh0ID0gZ2xvYmFsT2Jq
ZWN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgQVNTRVJUKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7
XG4iKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb25PckF0
dHJpYnV0ZSAoQHNldHRpbmdzRW5hYmxlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgICAgICAgICBt
eSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25h
bFN0cmluZygkZnVuY3Rpb25PckF0dHJpYnV0ZSk7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRv
cGVyYXRpb25PckF0dHJpYnV0ZSAoQHNldHRpbmdzRW5hYmxlZFByb3BlcnRpZXMpIHsKKyAgICAg
ICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJh
dGVDb25kaXRpb25hbFN0cmluZygkb3BlcmF0aW9uT3JBdHRyaWJ1dGUpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiAKLSAgICAgICAgICAgICAgICBteSAkZW5hYmxlRnVuY3Rpb24g
PSBUb01ldGhvZE5hbWUoJGZ1bmN0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0VuYWJsZWRCeVNldHRpbmd9KSAuICJFbmFibGVkIjsKLSAgICAgICAgICAgICAgICBteSAkbmFt
ZSA9ICRmdW5jdGlvbk9yQXR0cmlidXRlLT5uYW1lOworICAgICAgICAgICAgICAgIG15ICRlbmFi
bGVGdW5jdGlvbiA9IFRvTWV0aG9kTmFtZSgkb3BlcmF0aW9uT3JBdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KSAuICJFbmFibGVkIjsKKyAgICAgICAgICAg
ICAgICBteSAkbmFtZSA9ICRvcGVyYXRpb25PckF0dHJpYnV0ZS0+bmFtZTsKIAogICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY29udGV4dCB8fCAhZG93bmNhc3Q8
RG9jdW1lbnQ+KCpjb250ZXh0KS5zZXR0aW5ncygpLiR7ZW5hYmxlRnVuY3Rpb259KCkpIHtcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CkBA
IC0zNDM1LDEyICszNDMxLDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50
ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgICAgICBuZXh0IHVubGVzcyAoJGZ1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0pOworICAgICAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAg
ICAgIG5leHQgdW5sZXNzICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRl
SWRlbnRpZmllcn0pOwogICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIpOwotICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVH
ZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsKKyAgICAgICAg
ICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nKCRvcGVyYXRpb24pOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRm
dW5jdGlvbi0+bmFtZSAuICJQcml2YXRlTmFtZSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgIiAuIEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pIC4gIiksIFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLiIg
LiAkb3BlcmF0aW9uLT5uYW1lIC4gIlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0KCksIDAsIFN0cmluZygpLCAiIC4gR2V0RnVuY3Rpb25OYW1lKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24pIC4gIiksIFJlYWRPbmx5IHwgRG9udEVudW0p
O1xuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwogICAgICAgICB9CiAKQEAgLTM1NjksMjMgKzM1NjUsMjMgQEAgc3Vi
IEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICB9CiAKICAgICAjIFN1cHBvcnQgZm9yIFJ1bnRp
bWVFbmFibGVkIG9wZXJhdGlvbnMgb24gaW5zdGFuY2VzLgotICAgIGZvcmVhY2ggbXkgJGZ1bmN0
aW9uIChAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgbmV4dCB1bmxlc3MgTmVl
ZHNSdW50aW1lQ2hlY2soJGZ1bmN0aW9uKTsKLSAgICAgICAgbmV4dCB1bmxlc3MgT3BlcmF0aW9u
U2hvdWxkQmVPbkluc3RhbmNlKCRpbnRlcmZhY2UsICRmdW5jdGlvbik7Ci0gICAgICAgIG5leHQg
aWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRl
eH0gPiAxOworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRp
b25zfSkgeworICAgICAgICBuZXh0IHVubGVzcyBOZWVkc1J1bnRpbWVDaGVjaygkb3BlcmF0aW9u
KTsKKyAgICAgICAgbmV4dCB1bmxlc3MgT3BlcmF0aW9uU2hvdWxkQmVPbkluc3RhbmNlKCRpbnRl
cmZhY2UsICRvcGVyYXRpb24pOworICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9h
ZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAxOwogCi0gICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRmdW5jdGlvbik7CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2Rl
R2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb24pOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNv
bmRpdGlvbmFsU3RyaW5nOwotICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3Ry
aW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uKTsK
LSAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+bmFtZTsKLSAgICAgICAgbXkg
JGltcGxlbWVudGF0aW9uRnVuY3Rpb24gPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNs
YXNzTmFtZSwgJGZ1bmN0aW9uKTsKLSAgICAgICAgbXkgJGZ1bmN0aW9uTGVuZ3RoID0gR2V0RnVu
Y3Rpb25MZW5ndGgoJGZ1bmN0aW9uKTsKLSAgICAgICAgbXkgJGpzQXR0cmlidXRlcyA9IENvbXB1
dGVGdW5jdGlvblNwZWNpYWwoJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKKyAgICAgICAgbXkgJHJ1
bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRp
dGlvbmFsU3RyaW5nKCRvcGVyYXRpb24pOworICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJG9w
ZXJhdGlvbi0+bmFtZTsKKyAgICAgICAgbXkgJGltcGxlbWVudGF0aW9uRnVuY3Rpb24gPSBHZXRG
dW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CisgICAgICAg
IG15ICRmdW5jdGlvbkxlbmd0aCA9IEdldEZ1bmN0aW9uTGVuZ3RoKCRvcGVyYXRpb24pOworICAg
ICAgICBteSAkanNBdHRyaWJ1dGVzID0gQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbCgkaW50ZXJmYWNl
LCAkb3BlcmF0aW9uKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7cnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSlcbiIpOwogCiAgICAgICAgIG15ICRwcm9wZXJ0
eU5hbWUgPSAidm0ucHJvcGVydHlOYW1lcy0+JGZ1bmN0aW9uTmFtZSI7Ci0gICAgICAgICRwcm9w
ZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbk5hbWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJGZ1
bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn07Ci0gICAgICAg
IGlmIChJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKSB7CisgICAgICAgICRwcm9w
ZXJ0eU5hbWUgPSAic3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+
YnVpbHRpbk5hbWVzKCkuIiAuICRmdW5jdGlvbk5hbWUgLiAiUHJpdmF0ZU5hbWUoKSIgaWYgJG9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9OworICAgICAg
ICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3RCdWlsdGluRnVuY3Rpb24odm0s
IHRoaXMsICRwcm9wZXJ0eU5hbWUsICRpbXBsZW1lbnRhdGlvbkZ1bmN0aW9uKHZtKSwgYXR0cmli
dXRlc0ZvclN0cnVjdHVyZSgkanNBdHRyaWJ1dGVzKSk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgJHByb3BlcnR5TmFtZSwgJGZ1bmN0aW9uTGVuZ3RoLCAkaW1wbGVt
ZW50YXRpb25GdW5jdGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoJGpz
QXR0cmlidXRlcykpO1xuIik7CkBAIC0zNjI1LDMyICszNjIxLDMyIEBAIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCiAgICAgIyBBdHRyaWJ1dGVzCiAgICAgaWYgKCRoYXNHZXR0ZXIpIHsKICAg
ICAgICAgaWYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21HZXRPd25Q
cm9wZXJ0eVNsb3R9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVH
ZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkR2V0
dGVyRnVuY3Rpb24sICRuYW1lZEdldHRlckZ1bmN0aW9uKSk7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5KCRpbnRlcmZhY2UsICRj
bGFzc05hbWUsICRpbmRleGVkR2V0dGVyT3BlcmF0aW9uLCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24p
KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICgkaW5kZXhlZEdldHRlckZ1bmN0aW9uIHx8ICRu
YW1lZEdldHRlckZ1bmN0aW9uCisgICAgICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbiB8
fCAkbmFtZWRHZXR0ZXJPcGVyYXRpb24KICAgICAgICAgICAgICAgICB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZEdldHRlcn0KICAgICAgICAgICAgICAgICB8
fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntKU0N1c3RvbUdldE93blByb3BlcnR5
U2xvdEFuZERlc2NyaXB0b3J9KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2Vu
ZXJhdGVHZXRPd25Qcm9wZXJ0eVNsb3RCb2R5QnlJbmRleCgkaW50ZXJmYWNlLCAkY2xhc3NOYW1l
LCAkaW5kZXhlZEdldHRlckZ1bmN0aW9uLCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikpOworICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRlR2V0T3duUHJvcGVydHlTbG90Qm9keUJ5
SW5kZXgoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24sICRu
YW1lZEdldHRlck9wZXJhdGlvbikpOwogICAgICAgICB9CiAKICAgICB9CiAKIAotICAgIGlmICgo
JGluZGV4ZWRHZXR0ZXJGdW5jdGlvbiB8fCAkbmFtZWRHZXR0ZXJGdW5jdGlvbikgJiYgISRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0N1c3RvbUVudW1lcmF0ZVByb3BlcnR5fSkgewot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eU5hbWVzKCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkR2V0dGVyRnVuY3Rpb24sICRuYW1lZEdldHRl
ckZ1bmN0aW9uKSk7CisgICAgaWYgKCgkaW5kZXhlZEdldHRlck9wZXJhdGlvbiB8fCAkbmFtZWRH
ZXR0ZXJPcGVyYXRpb24pICYmICEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0
b21FbnVtZXJhdGVQcm9wZXJ0eX0pIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVy
YXRlR2V0T3duUHJvcGVydHlOYW1lcygkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZEdl
dHRlck9wZXJhdGlvbiwgJG5hbWVkR2V0dGVyT3BlcmF0aW9uKSk7CiAgICAgfQogCi0gICAgbXkg
JG5hbWVkU2V0dGVyRnVuY3Rpb24gPSBHZXROYW1lZFNldHRlckZ1bmN0aW9uKCRpbnRlcmZhY2Up
OwotICAgIG15ICRpbmRleGVkU2V0dGVyRnVuY3Rpb24gPSBHZXRJbmRleGVkU2V0dGVyRnVuY3Rp
b24oJGludGVyZmFjZSk7CisgICAgbXkgJG5hbWVkU2V0dGVyT3BlcmF0aW9uID0gR2V0TmFtZWRT
ZXR0ZXJPcGVyYXRpb24oJGludGVyZmFjZSk7CisgICAgbXkgJGluZGV4ZWRTZXR0ZXJPcGVyYXRp
b24gPSBHZXRJbmRleGVkU2V0dGVyT3BlcmF0aW9uKCRpbnRlcmZhY2UpOwogCiAgICAgbXkgJGhh
c1NldHRlciA9IEluc3RhbmNlT3ZlcnJpZGVzUHV0KCRpbnRlcmZhY2UpOwogICAgIGlmICgkaGFz
U2V0dGVyKSB7CiAgICAgICAgIGlmICghJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q3VzdG9tUHV0RnVuY3Rpb259KSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2Vu
ZXJhdGVQdXQoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGluZGV4ZWRTZXR0ZXJGdW5jdGlvbiwg
JG5hbWVkU2V0dGVyRnVuY3Rpb24pKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBH
ZW5lcmF0ZVB1dCgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZFNldHRlck9wZXJhdGlv
biwgJG5hbWVkU2V0dGVyT3BlcmF0aW9uKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21JbmRleGVkU2V0dGVyfSB8
fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21OYW1lZFNldHRlcn0pIHsK
LSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVQdXRCeUluZGV4KCRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRpbmRleGVkU2V0dGVyRnVuY3Rpb24sICRuYW1lZFNldHRl
ckZ1bmN0aW9uKSk7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEdlbmVyYXRl
UHV0QnlJbmRleCgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkaW5kZXhlZFNldHRlck9wZXJhdGlv
biwgJG5hbWVkU2V0dGVyT3BlcmF0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0zNjc2LDcgKzM2NzIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwICYmICRpbnRlcmZhY2VO
YW1lIG5lICJFdmVudFRhcmdldCIpIHsKKyAgICBpZiAoJG51bU9wZXJhdGlvbnMgPiAwICYmICRp
bnRlcmZhY2VOYW1lIG5lICJFdmVudFRhcmdldCIpIHsKICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIkpTRE9NT3BlcmF0aW9uLmgiKTsKIAogICAgICAgICAjIEZJWE1FOiBNYWtlIGNvbnNpc3Rl
bnQgSURMQXR0cmlidXRlPD46OmNhc3QgYW5kIElETE9wZXJhdGlvbjw+OjpjYXN0IGluIGNhc2Ug
b2YgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LgpAQCAtMzc0MywxMSArMzczOSwxMSBAQCBzdWIgR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewogICAgICAgICAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgICAg
ICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTZXR0aW5ncy5oIiwgJGNvbmRpdGlvbmFsKTsK
LSAgICAgICAgICAgICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IFRvTWV0aG9kTmFtZSgk
YXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgLiAiRW5h
YmxlZCI7CisgICAgICAgICAgICAgICAgICAgIG15ICRlbmFibGVGdW5jdGlvbiA9IFRvTWV0aG9k
TmFtZSgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkg
LiAiRW5hYmxlZCI7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChVTkxJS0VMWSghdGhpc09iamVjdC53cmFwcGVkKCkuZnJhbWUoKSkpXG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFNldHRpbmdzJiBzZXR0aW5ncyA9IHRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1lKCktPnNldHRp
bmdzKCk7XG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFzZXR0aW5ncy4kZW5hYmxlX2Z1bmN0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlRnVuY3Rpb24o
KSlcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7XG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9CkBAIC00MDY4LDE3ICs0MDY0LDE3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICAjIEZ1bmN0aW9ucwotICAgIGlmICgkbnVtRnVuY3Rpb25z
ID4gMCkgewotICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAg
ICAgICAgICAgR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05h
bWUsICRmdW5jdGlvbik7CisgICAgIyBPcGVyYXRpb25zCisgICAgaWYgKCRudW1PcGVyYXRpb25z
ID4gMCkgeworICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEBvcGVyYXRpb25zKSB7Cisg
ICAgICAgICAgICBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRpb24oJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJG9wZXJhdGlvbik7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBHZW5lcmF0ZUxlZ2Fj
eUNhbGxlckRlZmluaXRpb25zKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpOwogCi0gICAgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbkl0ZXJhYmxlRnVuY3Rpb25zKCRpbnRlcmZhY2UpIGlmICRpbnRlcmZh
Y2UtPml0ZXJhYmxlOwotICAgIEdlbmVyYXRlU2VyaWFsaXplckZ1bmN0aW9uKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUpIGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKKyAgICBHZW5lcmF0ZUl0
ZXJhYmxlRGVmaW5pdGlvbigkaW50ZXJmYWNlKSBpZiAkaW50ZXJmYWNlLT5pdGVyYWJsZTsKKyAg
ICBHZW5lcmF0ZVNlcmlhbGl6ZXJEZWZpbml0aW9uKCRpbnRlcmZhY2UsICRjbGFzc05hbWUpIGlm
ICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RP
TU1hcExpa2UuaCIpIGlmICRpbnRlcmZhY2UtPm1hcExpa2U7CiAKQEAgLTQxMzAsOCArNDEyNiw4
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgIyBVbmNvbW1lbnQgdGhlIGJlbG93
IGxpbmUgdG8gdGVtcG9yYXJpbHkgZW5mb3JjZSBnZW5lcmF0ZWQgbWFyayBmdW5jdGlvbnMgd2hl
biBjYWNoZWQgYXR0cmlidXRlcyBhcmUgcHJlc2VudC4KICAgICAjIGRpZSAiQ2FuJ3QgZ2VuZXJh
dGUgYmluZGluZyBmb3IgY2xhc3Mgd2l0aCBjYWNoZWQgYXR0cmlidXRlIGFuZCBjdXN0b20gbWFy
ay4iIGlmICRudW1DYWNoZWRBdHRyaWJ1dGVzID4gMCBhbmQgJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57SlNDdXN0b21NYXJrRnVuY3Rpb259OwogCi0gICAgaWYgKCRpbmRleGVkR2V0
dGVyRnVuY3Rpb24pIHsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siVVJMLmgifSA9IDEgaWYgJGlu
ZGV4ZWRHZXR0ZXJGdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKKyAgICBpZiAo
JGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKKyAgICAgICAgJGltcGxJbmNsdWRlc3siVVJMLmgi
fSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgIkRPTVN0cmlu
ZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhUTUxcdypDb2xsZWN0aW9uJC8g
b3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7CiAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJKU05vZGUuaCJ9ID0gMTsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7Ik5v
ZGUuaCJ9ID0gMTsKQEAgLTQ1MjcsNyArNDUyMyw3IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRl
ZmluaXRpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAk
aW5BcHBsZUNvcHlyaWdodDsKIH0KIAotc3ViIEdlbmVyYXRlU2VyaWFsaXplckZ1bmN0aW9uCitz
dWIgR2VuZXJhdGVTZXJpYWxpemVyRGVmaW5pdGlvbgogewogICAgIG15ICgkaW50ZXJmYWNlLCAk
Y2xhc3NOYW1lKSA9IEBfOwogCkBAIC00NjM2LDExICs0NjMyLDExIEBAIHN1YiBHZW5lcmF0ZUxl
Z2FjeUNhbGxlckRlZmluaXRpb25zCiAKIHN1YiBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRp
b24KIHsKLSAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGZ1bmN0aW9uKSA9IEBfOwor
ICAgIG15ICgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uKSA9IEBfOwogCi0gICAg
bXkgJGlzT3ZlcmxvYWRlZCA9ICRmdW5jdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskZnVuY3Rpb24t
PntvdmVybG9hZHN9fSA+IDE7CisgICAgbXkgJGlzT3ZlcmxvYWRlZCA9ICRvcGVyYXRpb24tPntv
dmVybG9hZHN9ICYmIEB7JG9wZXJhdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKICAgICBpZiAoJGlz
T3ZlcmxvYWRlZCkgewotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUgY2FsbCR7Y2xhc3NOYW1lfSRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9
KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGNhbGwke2NsYXNzTmFtZX0kb3BlcmF0aW9uLT57b3Zl
cmxvYWRJbmRleH0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y2FsbCR7Y2xhc3NOYW1lfShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CiAgICAgfQpAQCAtNDY1MCw0
NiArNDY0Niw0NiBAQCBzdWIgR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9uCiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7XG4iKTsKIAotICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxD
b250ZW50LCAkZnVuY3Rpb24sICRpbnRlcmZhY2UpOworICAgIEdlbmVyYXRlQXJndW1lbnRzQ291
bnRDaGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlKTsKIAogICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8qIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8JHtjbGFzc05h
bWV9Kj4oc3RhdGUtPmpzQ2FsbGVlKCkpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgQVNTRVJUKGNhc3RlZFRoaXMpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
YXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpOwogCi0gICAgbXkgJGZ1bmN0
aW9uSW1wbGVtZW50YXRpb25OYW1lID0gJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJ
bXBsZW1lbnRlZEFzfSB8fCAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkZnVuY3Rpb24tPm5h
bWUpIHx8ICJsZWdhY3lDYWxsZXJPcGVyYXRpb25Gcm9tQmluZGluZ3MiOwotICAgIG15ICRmdW5j
dGlvblN0cmluZyA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRmdW5j
dGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lKTsKKyAgICBteSAk
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkb3BlcmF0
aW9uLT5uYW1lKSB8fCAibGVnYWN5Q2FsbGVyT3BlcmF0aW9uRnJvbUJpbmRpbmdzIjsKKyAgICBt
eSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50
LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUpOwog
Ci0gICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkZnVuY3Rpb24sICRmdW5j
dGlvblN0cmluZywgIiAgICAiLCAkaW50ZXJmYWNlKTsKKyAgICBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKCRvcGVyYXRpb24sICRmdW5jdGlvblN0cmluZywgIiAgICAiLCAkaW50
ZXJmYWNlKTsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIH0KIAogc3ViIEdl
bmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMKIHsKLSAgICBteSAoJGNhbGxXaXRoLCAkb3V0
cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJGZ1bmN0aW9uKSA9IEBfOworICAgIG15ICgkY2FsbFdp
dGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkb3BlcmF0aW9uKSA9IEBfOwogCiAgICAg
bXkgJHN0YXRlUG9pbnRlciA9ICImc3RhdGUiOwogICAgIG15ICRzdGF0ZVJlZmVyZW5jZSA9ICJz
dGF0ZSI7CiAgICAgbXkgJGdsb2JhbE9iamVjdCA9ICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihzdGF0ZS5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpIjsKIAotICAgIHJldHVybiBHZW5lcmF0ZUNh
bGxXaXRoKCRjYWxsV2l0aCwgJG91dHB1dEFycmF5LCAkcmV0dXJuVmFsdWUsICRyZXR1cm5WYWx1
ZSwgJGZ1bmN0aW9uLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICRnbG9iYWxPYmpl
Y3QsICRnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBHZW5lcmF0ZUNhbGxXaXRoKCRjYWxsV2l0
aCwgJG91dHB1dEFycmF5LCAkcmV0dXJuVmFsdWUsICRyZXR1cm5WYWx1ZSwgJG9wZXJhdGlvbiwg
JHN0YXRlUG9pbnRlciwgJHN0YXRlUmVmZXJlbmNlLCAkZ2xvYmFsT2JqZWN0LCAkZ2xvYmFsT2Jq
ZWN0KTsKIH0KIAogIyBGSVhNRTogV2Ugc2hvdWxkIHJlbW92ZSBHZW5lcmF0ZUNhbGxXaXRoVXNp
bmdQb2ludGVycyBhbmQgY29tYmluZSBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdSZWZlcmVuY2VzIGFu
ZCBHZW5lcmF0ZUNhbGxXaXRoCiBzdWIgR2VuZXJhdGVDYWxsV2l0aFVzaW5nUG9pbnRlcnMKIHsK
LSAgICBteSAoJGNhbGxXaXRoLCAkb3V0cHV0QXJyYXksICRyZXR1cm5WYWx1ZSwgJGZ1bmN0aW9u
KSA9IEBfOworICAgIG15ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAk
b3BlcmF0aW9uKSA9IEBfOwogCiAgICAgbXkgJHN0YXRlUG9pbnRlciA9ICJzdGF0ZSI7CiAgICAg
bXkgJHN0YXRlUmVmZXJlbmNlID0gIipzdGF0ZSI7CiAgICAgbXkgJGdsb2JhbE9iamVjdCA9ICJq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSI7
CiAKLSAgICByZXR1cm4gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwg
JHJldHVyblZhbHVlLCAkcmV0dXJuVmFsdWUsICRmdW5jdGlvbiwgJHN0YXRlUG9pbnRlciwgJHN0
YXRlUmVmZXJlbmNlLCAkZ2xvYmFsT2JqZWN0LCAkZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
R2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAk
cmV0dXJuVmFsdWUsICRvcGVyYXRpb24sICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwg
JGdsb2JhbE9iamVjdCwgJGdsb2JhbE9iamVjdCk7CiB9CiAKIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9yQ2FsbFdpdGhVc2luZ1BvaW50ZXJzCiB7Ci0gICAgbXkgKCRjYWxsV2l0aCwgJG91dHB1dEFy
cmF5LCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRmdW5jdGlvbikgPSBAXzsKKyAgICBteSAoJGNh
bGxXaXRoLCAkb3V0cHV0QXJyYXksICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJG9wZXJhdGlvbikg
PSBAXzsKIAogICAgIG15ICRzdGF0ZVBvaW50ZXIgPSAic3RhdGUiOwogICAgIG15ICRzdGF0ZVJl
ZmVyZW5jZSA9ICIqc3RhdGUiOwpAQCAtNDY5NywxMiArNDY5MywxMiBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckNhbGxXaXRoVXNpbmdQb2luCiAgICAgbXkgJGNvbnRleHRNaXNzaW5nID0gInRo
cm93Q29uc3RydWN0b3JTY3JpcHRFeGVjdXRpb25Db250ZXh0VW5hdmFpbGFibGVFcnJvcigqc3Rh
dGUsIHRocm93U2NvcGUsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIikiOwogICAgIG15ICRz
Y3JpcHRFeGVjdXRpb25Db250ZXh0QWNjZXNzb3IgPSAiY2FzdGVkVGhpcyI7CiAKLSAgICByZXR1
cm4gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgIiIsICRjb250ZXh0
TWlzc2luZywgJGZ1bmN0aW9uLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICRnbG9i
YWxPYmplY3QsICRzY3JpcHRFeGVjdXRpb25Db250ZXh0QWNjZXNzb3IpOworICAgIHJldHVybiBH
ZW5lcmF0ZUNhbGxXaXRoKCRjYWxsV2l0aCwgJG91dHB1dEFycmF5LCAiIiwgJGNvbnRleHRNaXNz
aW5nLCAkb3BlcmF0aW9uLCAkc3RhdGVQb2ludGVyLCAkc3RhdGVSZWZlcmVuY2UsICRnbG9iYWxP
YmplY3QsICRzY3JpcHRFeGVjdXRpb25Db250ZXh0QWNjZXNzb3IpOwogfQogCiBzdWIgR2VuZXJh
dGVDYWxsV2l0aAogewotICAgIG15ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZh
bHVlLCAkY29udGV4dE1pc3NpbmcsICRmdW5jdGlvbiwgJHN0YXRlUG9pbnRlciwgJHN0YXRlUmVm
ZXJlbmNlLCAkZ2xvYmFsT2JqZWN0LCAkc2NyaXB0RXhlY3V0aW9uQ29udGV4dEFjY2Vzc29yKSA9
IEBfOworICAgIG15ICgkY2FsbFdpdGgsICRvdXRwdXRBcnJheSwgJHJldHVyblZhbHVlLCAkY29u
dGV4dE1pc3NpbmcsICRvcGVyYXRpb24sICRzdGF0ZVBvaW50ZXIsICRzdGF0ZVJlZmVyZW5jZSwg
JGdsb2JhbE9iamVjdCwgJHNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBY2Nlc3NvcikgPSBAXzsKIAog
ICAgIHJldHVybiAoKSB1bmxlc3MgJGNhbGxXaXRoOwogCkBAIC00NzMyLDggKzQ3MjgsOCBAQCBz
dWIgR2VuZXJhdGVDYWxsV2l0aAogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiIgLiAoJHJldHVyblZhbHVlID8gIiAiIC4gJHJldHVyblZhbHVlIDogIiIpIC4gIjtc
biIpOwogICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICIqZG9jdW1lbnQiKTsKICAgICB9Ci0g
ICAgaWYgKCRmdW5jdGlvbiBhbmQgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29u
dGFpbnMoJGNhbGxXaXRoLCAiU2NyaXB0QXJndW1lbnRzIikpIHsKLSAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIFJlZjxJbnNwZWN0b3I6OlNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJn
dW1lbnRzKEluc3BlY3Rvcjo6Y3JlYXRlU2NyaXB0QXJndW1lbnRzKCRzdGF0ZVBvaW50ZXIsICIg
LiBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSAuICIpKTtcbiIpOworICAgIGlmICgkb3BlcmF0aW9u
IGFuZCAkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgs
ICJTY3JpcHRBcmd1bWVudHMiKSkgeworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
UmVmPEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzPiBzY3JpcHRBcmd1bWVudHMoSW5zcGVjdG9y
OjpjcmVhdGVTY3JpcHRBcmd1bWVudHMoJHN0YXRlUG9pbnRlciwgIiAuIEB7JG9wZXJhdGlvbi0+
YXJndW1lbnRzfSAuICIpKTtcbiIpOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyI8aW5zcGVjdG9y
L1NjcmlwdEFyZ3VtZW50cy5oPiJ9ID0gMTsKICAgICAgICAgJGltcGxJbmNsdWRlc3siPGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+In0gPSAxOwogICAgICAgICBwdXNoKEBjYWxs
V2l0aEFyZ3MsICJXVEZNb3ZlKHNjcmlwdEFyZ3VtZW50cykiKTsKQEAgLTQ3NTksMTQgKzQ3NTUs
MTQgQEAgc3ViIEdlbmVyYXRlQ2FsbFdpdGgKIAogc3ViIEdlbmVyYXRlQXJndW1lbnRzQ291bnRD
aGVjawogewotICAgIG15ICgkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSkgPSBA
XzsKKyAgICBteSAoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlKSA9IEBfOwog
Ci0gICAgIyBPdmVybG9hZGVkIGZ1bmN0aW9ucyBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBhcmd1
bWVudCBjb3VudCBzaW5jZSB0aGUgCisgICAgIyBPdmVybG9hZGVkIG9wZXJhdGlvbnMgZG9uJ3Qg
bmVlZCB0byBjaGVjayB0aGUgYXJndW1lbnQgY291bnQgc2luY2UgdGhlIAogICAgICMgZGlzcGF0
Y2ggZnVuY3Rpb24gZG9lcyBmb3IgdGhlbS4KLSAgICByZXR1cm4gaWYgJGZ1bmN0aW9uLT57b3Zl
cmxvYWRzfSAmJiBAeyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICByZXR1cm4gaWYg
JG9wZXJhdGlvbi0+e292ZXJsb2Fkc30gJiYgQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0gPiAx
OwogCi0gICAgbXkgJG51bU1hbmRhdG9yeUFyZ3VtZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1bWVu
dHN9OwotICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChyZXZlcnNlKEB7JGZ1bmN0aW9uLT5hcmd1
bWVudHN9KSkgeworICAgIG15ICRudW1NYW5kYXRvcnlBcmd1bWVudHMgPSBAeyRvcGVyYXRpb24t
PmFyZ3VtZW50c307CisgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKHJldmVyc2UoQHskb3BlcmF0
aW9uLT5hcmd1bWVudHN9KSkgewogICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsIG9y
ICRhcmd1bWVudC0+aXNWYXJpYWRpYykgewogICAgICAgICAgICAgJG51bU1hbmRhdG9yeUFyZ3Vt
ZW50cy0tOwogICAgICAgICB9IGVsc2UgewpAQCAtNDgyMiwzNSArNDgxOCwzNSBAQCBzdWIgV2ls
bENvbnZlcnRVbmRlZmluZWRUb0RlZmF1bHRQYXJhbWV0CiAKIHN1YiBOZWVkc0V4cGxpY2l0UHJv
cGFnYXRlRXhjZXB0aW9uQ2FsbAogewotICAgIG15ICgkZnVuY3Rpb24pID0gQF87CisgICAgbXkg
KCRvcGVyYXRpb24pID0gQF87CiAKLSAgICByZXR1cm4gMCB1bmxlc3MgJGZ1bmN0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntNYXlUaHJvd0V4Y2VwdGlvbn07CisgICAgcmV0dXJuIDAgdW5sZXNz
ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e01heVRocm93RXhjZXB0aW9ufTsKIAot
ICAgIHJldHVybiAkZnVuY3Rpb24tPnR5cGUgJiYgKCRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAi
dm9pZCIgfHwgJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJGZ1bmN0aW9uLT50eXBlKSk7
CisgICAgcmV0dXJuICRvcGVyYXRpb24tPnR5cGUgJiYgKCRvcGVyYXRpb24tPnR5cGUtPm5hbWUg
ZXEgInZvaWQiIHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24tPnR5
cGUpKTsKIH0KIAogc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiB7Ci0gICAgbXkgKCRvdXRw
dXRBcnJheSwgJGZ1bmN0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5h
bWUpID0gQF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwg
JGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lKSA9IEBfOwogCiAgICAgbXkgJGludGVyZmFjZU5h
bWUgPSAkaW50ZXJmYWNlLT50eXBlLT5uYW1lOwogICAgIG15ICR2aXNpYmxlSW50ZXJmYWNlTmFt
ZSA9ICRjb2RlR2VuZXJhdG9yLT5HZXRWaXNpYmxlSW50ZXJmYWNlTmFtZSgkaW50ZXJmYWNlKTsK
LSAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
SW1wbGVtZW50ZWRCeX07Ci0gICAgbXkgJG51bUFyZ3VtZW50cyA9IEB7JGZ1bmN0aW9uLT5hcmd1
bWVudHN9OwotICAgIG15ICRjb25kaXRpb25hbCA9ICRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q29uZGl0aW9uYWx9OwotICAgIG15ICRpc0NvbnN0cnVjdG9yID0gJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntDb25zdHJ1Y3Rvcn0gfHwgJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntOYW1lZENvbnN0cnVjdG9yfTsKKyAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9OworICAgIG15ICRu
dW1Bcmd1bWVudHMgPSBAeyRvcGVyYXRpb24tPmFyZ3VtZW50c307CisgICAgbXkgJGNvbmRpdGlv
bmFsID0gJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9OworICAg
IG15ICRpc0NvbnN0cnVjdG9yID0gJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29u
c3RydWN0b3J9IHx8ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e05hbWVkQ29uc3Ry
dWN0b3J9OwogCiAgICAgbXkgQGFyZ3VtZW50czsKICAgICBteSAkZnVuY3Rpb25OYW1lOwogCiAg
ICAgaWYgKCRpbXBsZW1lbnRlZEJ5KSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCIke2lt
cGxlbWVudGVkQnl9LmgiLCAkY29uZGl0aW9uYWwpOwotICAgICAgICB1bnNoaWZ0KEBhcmd1bWVu
dHMsICJpbXBsIikgdW5sZXNzICRmdW5jdGlvbi0+aXNTdGF0aWM7CisgICAgICAgIHVuc2hpZnQo
QGFyZ3VtZW50cywgImltcGwiKSB1bmxlc3MgJG9wZXJhdGlvbi0+aXNTdGF0aWM7CiAgICAgICAg
ICRmdW5jdGlvbk5hbWUgPSAiV2ViQ29yZTo6JHtpbXBsZW1lbnRlZEJ5fTo6JHtmdW5jdGlvbklt
cGxlbWVudGF0aW9uTmFtZX0iOwotICAgIH0gZWxzaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMgfHwg
JGlzQ29uc3RydWN0b3IpIHsKKyAgICB9IGVsc2lmICgkb3BlcmF0aW9uLT5pc1N0YXRpYyB8fCAk
aXNDb25zdHJ1Y3RvcikgewogICAgICAgICAkZnVuY3Rpb25OYW1lID0gIiR7aW50ZXJmYWNlTmFt
ZX06OiR7ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWV9IjsKLSAgICB9IGVsc2lmICgkZnVuY3Rp
b24tPmlzTWFwTGlrZSkgewotICAgICAgICAkZnVuY3Rpb25OYW1lID0gImZvcndhcmQiIC4gJGNv
ZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGZ1bmN0aW9uLT5uYW1lKSAuICJUb01hcExpa2UiOwor
ICAgIH0gZWxzaWYgKCRvcGVyYXRpb24tPmlzTWFwTGlrZSkgeworICAgICAgICAkZnVuY3Rpb25O
YW1lID0gImZvcndhcmQiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJG9wZXJhdGlvbi0+
bmFtZSkgLiAiVG9NYXBMaWtlIjsKICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAiKnN0YXRlIik7
CiAgICAgICAgIHB1c2goQGFyZ3VtZW50cywgIipjYXN0ZWRUaGlzIik7CiAgICAgIH0gZWxzZSB7
CkBAIC00ODU5LDIwICs0ODU1LDIwIEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAg
ICAgbXkgJHF1b3RlZEZ1bmN0aW9uTmFtZTsKICAgICBpZiAoISRpc0NvbnN0cnVjdG9yKSB7Ci0g
ICAgICAgIG15ICRuYW1lID0gJGZ1bmN0aW9uLT5uYW1lOworICAgICAgICBteSAkbmFtZSA9ICRv
cGVyYXRpb24tPm5hbWU7CiAgICAgICAgICRxdW90ZWRGdW5jdGlvbk5hbWUgPSAiXCIkbmFtZVwi
IjsKLSAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdQb2ludGVy
cygkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxXaXRofSwgXEAkb3V0cHV0QXJy
YXksICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiLCAkZnVuY3Rpb24pKTsKKyAgICAg
ICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoVXNpbmdQb2ludGVycygkb3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsV2l0aH0sIFxAJG91dHB1dEFycmF5LCAiSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIiwgJG9wZXJhdGlvbikpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgICRxdW90ZWRGdW5jdGlvbk5hbWUgPSAibnVsbHB0ciI7Ci0gICAgICAgIHB1c2go
QGFyZ3VtZW50cywgR2VuZXJhdGVDb25zdHJ1Y3RvckNhbGxXaXRoVXNpbmdQb2ludGVycygkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yQ2FsbFdpdGh9LCBcQCRvdXRw
dXRBcnJheSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkZnVuY3Rpb24pKTsKKyAgICAgICAgcHVz
aChAYXJndW1lbnRzLCBHZW5lcmF0ZUNvbnN0cnVjdG9yQ2FsbFdpdGhVc2luZ1BvaW50ZXJzKCRv
cGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnN0cnVjdG9yQ2FsbFdpdGh9LCBcQCRv
dXRwdXRBcnJheSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkb3BlcmF0aW9uKSk7CiAgICAgfQog
CiAgICAgbXkgJGFyZ3VtZW50SW5kZXggPSAwOwotICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChA
eyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgIGZvcmVhY2ggbXkgJGFyZ3VtZW50IChAeyRv
cGVyYXRpb24tPmFyZ3VtZW50c30pIHsKICAgICAgICAgbXkgJHR5cGUgPSAkYXJndW1lbnQtPnR5
cGU7CiAKICAgICAgICAgZGllICJPcHRpb25hbCBhcmd1bWVudHMgb2Ygbm9uLW51bGxhYmxlIHdy
YXBwZXIgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQiIGlmICRhcmd1bWVudC0+aXNPcHRpb25hbCAm
JiAhJHR5cGUtPmlzTnVsbGFibGUgJiYgJGNvZGVHZW5lcmF0b3ItPklzV3JhcHBlclR5cGUoJHR5
cGUpOwotICAgICAgICBkaWUgIk9wdGlvbmFsIGFyZ3VtZW50cyBwcmVjZWRpbmcgdmFyaWFkaWMg
YXJndW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYm
ICBAeyRmdW5jdGlvbi0+YXJndW1lbnRzfVskbnVtQXJndW1lbnRzIC0gMV0tPmlzVmFyaWFkaWMp
OworICAgICAgICBkaWUgIk9wdGlvbmFsIGFyZ3VtZW50cyBwcmVjZWRpbmcgdmFyaWFkaWMgYXJn
dW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkIiBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICBA
eyRvcGVyYXRpb24tPmFyZ3VtZW50c31bJG51bUFyZ3VtZW50cyAtIDFdLT5pc1ZhcmlhZGljKTsK
IAogICAgICAgICBpZiAoJGFyZ3VtZW50LT5pc09wdGlvbmFsICYmICFkZWZpbmVkKCRhcmd1bWVu
dC0+ZGVmYXVsdCkpIHsKICAgICAgICAgICAgICMgQXMgcGVyIFdlYiBJREwsIG9wdGlvbmFsIGRp
Y3Rpb25hcnkgYXJndW1lbnRzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBoYXZlIGEgZGVmYXVs
dCB2YWx1ZSBvZiBhbiBlbXB0eSBkaWN0aW9uYXJ5LCB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmll
ZC4KQEAgLTQ5MzQsNyArNDkzMCw3IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAg
ICAgICAgICAgICAgICRhcmd1bWVudExvb2t1cEZvckNvbnZlcnNpb24gPSAic3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KCRhcmd1bWVudEluZGV4KSI7CiAgICAgICAgICAgICB9CiAgICAgCi0gICAg
ICAgICAgICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlID0gJGZ1bmN0aW9uLT5pc1N0YXRpYyA/
ICIqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSkiIDogIipjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSI7CisgICAgICAgICAgICBteSAkZ2xv
YmFsT2JqZWN0UmVmZXJlbmNlID0gJG9wZXJhdGlvbi0+aXNTdGF0aWMgPyAiKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpIiA6ICIqY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwogICAgICAgICAgICAgbXkgJGFyZ3VtZW50RXhjZXB0aW9u
VGhyb3dlciA9IEdldEFyZ3VtZW50RXhjZXB0aW9uVGhyb3dlcigkaW50ZXJmYWNlLCAkYXJndW1l
bnQsICRhcmd1bWVudEluZGV4LCAkcXVvdGVkRnVuY3Rpb25OYW1lKTsKIAogICAgICAgICAgICAg
bXkgJG5hdGl2ZVZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRpbnRlcmZhY2UsICRhcmd1bWVudCwg
JGFyZ3VtZW50TG9va3VwRm9yQ29udmVyc2lvbiwgJGNvbmRpdGlvbmFsLCAic3RhdGUiLCAiKnN0
YXRlIiwgIipjYXN0ZWRUaGlzIiwgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSwgJGFyZ3VtZW50RXhj
ZXB0aW9uVGhyb3dlcik7CkBAIC00OTUyLDEwICs0OTQ4LDEwIEBAIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogICAgICAgICAkYXJndW1lbnRJbmRleCsrOwogICAgIH0KIAotICAgIHB1c2go
QGFyZ3VtZW50cywgIldURk1vdmUocHJvbWlzZSkiKSBpZiAkZnVuY3Rpb24tPnR5cGUgJiYgJGNv
ZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJGZ1bmN0aW9uLT50eXBlKTsKKyAgICBwdXNoKEBh
cmd1bWVudHMsICJXVEZNb3ZlKHByb21pc2UpIikgaWYgJG9wZXJhdGlvbi0+dHlwZSAmJiAkY29k
ZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBlKTsKIAogICAgIG15ICRm
dW5jdGlvblN0cmluZyA9ICIkZnVuY3Rpb25OYW1lKCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMp
IC4gIikiOwotICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdhdGVFeGNlcHRpb24oKnN0YXRl
LCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVkc0V4cGxpY2l0UHJvcGFnYXRl
RXhjZXB0aW9uQ2FsbCgkZnVuY3Rpb24pOworICAgICRmdW5jdGlvblN0cmluZyA9ICJwcm9wYWdh
dGVFeGNlcHRpb24oKnN0YXRlLCB0aHJvd1Njb3BlLCAkZnVuY3Rpb25TdHJpbmcpIiBpZiBOZWVk
c0V4cGxpY2l0UHJvcGFnYXRlRXhjZXB0aW9uQ2FsbCgkb3BlcmF0aW9uKTsKIAogICAgIHJldHVy
biAkZnVuY3Rpb25TdHJpbmc7CiB9CkBAIC01MDIwLDExICs1MDE2LDExIEBAIHN1YiBHZW5lcmF0
ZUNhbGxiYWNrRnVuY3Rpb25IZWFkZXIKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJcbm5h
bWVzcGFjZSBXZWJDb3JlIHtcblxuIik7CiAKLSAgICBteSBAZnVuY3Rpb25zID0gKCk7Ci0gICAg
cHVzaChAZnVuY3Rpb25zLCAkY2FsbGJhY2tGdW5jdGlvbi0+b3BlcmF0aW9uKTsKKyAgICBteSBA
b3BlcmF0aW9ucyA9ICgpOworICAgIHB1c2goQG9wZXJhdGlvbnMsICRjYWxsYmFja0Z1bmN0aW9u
LT5vcGVyYXRpb24pOwogICAgIG15IEBjb25zdGFudHMgPSAoKTsKIAotICAgICRvYmplY3QtPkdl
bmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50KCRjYWxsYmFja0Z1bmN0aW9uLCBcQGZ1bmN0aW9u
cywgXEBjb25zdGFudHMsIFxAaGVhZGVyQ29udGVudCwgXCVoZWFkZXJJbmNsdWRlcyk7CisgICAg
JG9iamVjdC0+R2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQoJGNhbGxiYWNrRnVuY3Rpb24s
IFxAb3BlcmF0aW9ucywgXEBjb25zdGFudHMsIFxAaGVhZGVyQ29udGVudCwgXCVoZWFkZXJJbmNs
dWRlcyk7CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uc0hl
YWRlckNvbnRlbnQoJGNhbGxiYWNrRnVuY3Rpb24sICRlbnVtZXJhdGlvbnMpKTsKICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCBHZW5lcmF0ZURpY3Rpb25hcmllc0hlYWRlckNvbnRlbnQoJGNhbGxi
YWNrRnVuY3Rpb24sICRkaWN0aW9uYXJpZXMpKTsKQEAgLTUwNDcsMTEgKzUwNDMsMTEgQEAgc3Vi
IEdlbmVyYXRlQ2FsbGJhY2tGdW5jdGlvbkltcGxlbWVudGF0aQogICAgIHB1c2goQGltcGxDb250
ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uc0ltcGxlbWVudGF0aW9uQ29udGVudCgkY2FsbGJhY2tG
dW5jdGlvbiwgJGVudW1lcmF0aW9ucykpOwogICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0
ZURpY3Rpb25hcmllc0ltcGxlbWVudGF0aW9uQ29udGVudCgkY2FsbGJhY2tGdW5jdGlvbiwgJGRp
Y3Rpb25hcmllcykpOwogCi0gICAgbXkgQGZ1bmN0aW9ucyA9ICgpOwotICAgIHB1c2goQGZ1bmN0
aW9ucywgJGNhbGxiYWNrRnVuY3Rpb24tPm9wZXJhdGlvbik7CisgICAgbXkgQG9wZXJhdGlvbnMg
PSAoKTsKKyAgICBwdXNoKEBvcGVyYXRpb25zLCAkY2FsbGJhY2tGdW5jdGlvbi0+b3BlcmF0aW9u
KTsKICAgICBteSBAY29uc3RhbnRzID0gKCk7CiAKLSAgICAkb2JqZWN0LT5HZW5lcmF0ZUNhbGxi
YWNrSW1wbGVtZW50YXRpb25Db250ZW50KCRjYWxsYmFja0Z1bmN0aW9uLCBcQGZ1bmN0aW9ucywg
XEBjb25zdGFudHMsIFxAaW1wbENvbnRlbnQsIFwlaW1wbEluY2x1ZGVzKTsKKyAgICAkb2JqZWN0
LT5HZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50KCRjYWxsYmFja0Z1bmN0aW9u
LCBcQG9wZXJhdGlvbnMsIFxAY29uc3RhbnRzLCBcQGltcGxDb250ZW50LCBcJWltcGxJbmNsdWRl
cyk7CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn0gLy8gbmFtZXNwYWNlIFdlYkNvcmVcbiIp
OwogCkBAIC01MDY3LDcgKzUwNjMsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0ludGVyZmFjZUhl
YWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxubmFtZXNwYWNlIFdlYkNvcmUge1xu
XG4iKTsKICAgICAKLSAgICAkb2JqZWN0LT5HZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29udGVudCgk
Y2FsbGJhY2tJbnRlcmZhY2UsICRjYWxsYmFja0ludGVyZmFjZS0+ZnVuY3Rpb25zLCAkY2FsbGJh
Y2tJbnRlcmZhY2UtPmNvbnN0YW50cywgXEBoZWFkZXJDb250ZW50LCBcJWhlYWRlckluY2x1ZGVz
KTsKKyAgICAkb2JqZWN0LT5HZW5lcmF0ZUNhbGxiYWNrSGVhZGVyQ29udGVudCgkY2FsbGJhY2tJ
bnRlcmZhY2UsICRjYWxsYmFja0ludGVyZmFjZS0+b3BlcmF0aW9ucywgJGNhbGxiYWNrSW50ZXJm
YWNlLT5jb25zdGFudHMsIFxAaGVhZGVyQ29udGVudCwgXCVoZWFkZXJJbmNsdWRlcyk7CiAKICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCBHZW5lcmF0ZUVudW1lcmF0aW9uc0hlYWRlckNvbnRlbnQo
JGNhbGxiYWNrSW50ZXJmYWNlLCAkZW51bWVyYXRpb25zKSk7CiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgR2VuZXJhdGVEaWN0aW9uYXJpZXNIZWFkZXJDb250ZW50KCRjYWxsYmFja0ludGVyZmFj
ZSwgJGRpY3Rpb25hcmllcykpOwpAQCAtNTA5MCw3ICs1MDg2LDcgQEAgc3ViIEdlbmVyYXRlQ2Fs
bGJhY2tJbnRlcmZhY2VJbXBsZW1lbnRhdAogICAgIHB1c2goQGltcGxDb250ZW50LCBHZW5lcmF0
ZUVudW1lcmF0aW9uc0ltcGxlbWVudGF0aW9uQ29udGVudCgkY2FsbGJhY2tJbnRlcmZhY2UsICRl
bnVtZXJhdGlvbnMpKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgR2VuZXJhdGVEaWN0aW9uYXJp
ZXNJbXBsZW1lbnRhdGlvbkNvbnRlbnQoJGNhbGxiYWNrSW50ZXJmYWNlLCAkZGljdGlvbmFyaWVz
KSk7CiAKLSAgICAkb2JqZWN0LT5HZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250ZW50
KCRjYWxsYmFja0ludGVyZmFjZSwgJGNhbGxiYWNrSW50ZXJmYWNlLT5mdW5jdGlvbnMsICRjYWxs
YmFja0ludGVyZmFjZS0+Y29uc3RhbnRzLCBcQGltcGxDb250ZW50LCBcJWltcGxJbmNsdWRlcyk7
CisgICAgJG9iamVjdC0+R2VuZXJhdGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVudCgkY2Fs
bGJhY2tJbnRlcmZhY2UsICRjYWxsYmFja0ludGVyZmFjZS0+b3BlcmF0aW9ucywgJGNhbGxiYWNr
SW50ZXJmYWNlLT5jb25zdGFudHMsIFxAaW1wbENvbnRlbnQsIFwlaW1wbEluY2x1ZGVzKTsKIAog
ICAgIHB1c2goQGltcGxDb250ZW50LCAifSAvLyBuYW1lc3BhY2UgV2ViQ29yZVxuIik7CiAKQEAg
LTUxMDAsNyArNTA5Niw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW50ZXJmYWNlSW1wbGVtZW50
YXQKIAogc3ViIEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50CiB7Ci0gICAgbXkgKCRvYmpl
Y3QsICRpbnRlcmZhY2VPckNhbGxiYWNrLCAkZnVuY3Rpb25zLCAkY29uc3RhbnRzLCAkY29udGVu
dFJlZiwgJGluY2x1ZGVzUmVmKSA9IEBfOworICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNlT3JD
YWxsYmFjaywgJG9wZXJhdGlvbnMsICRjb25zdGFudHMsICRjb250ZW50UmVmLCAkaW5jbHVkZXNS
ZWYpID0gQF87CiAKICAgICBteSAkbmFtZSA9ICRpbnRlcmZhY2VPckNhbGxiYWNrLT50eXBlLT5u
YW1lOwogICAgIG15ICRjYWxsYmFja0RhdGFUeXBlID0gR2V0SlNDYWxsYmFja0RhdGFUeXBlKCRp
bnRlcmZhY2VPckNhbGxiYWNrKTsKQEAgLTUxMzEsMjEgKzUxMjcsMjEgQEAgc3ViIEdlbmVyYXRl
Q2FsbGJhY2tIZWFkZXJDb250ZW50CiAKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCAke25hbWV9JikgY29uc3Qgb3ZlcnJpZGU7XG5cbiIp
IGlmICRpbnRlcmZhY2VPckNhbGxiYWNrLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDYWxsYmFja05l
ZWRzT3BlcmF0b3JFcXVhbH07CiAKLSAgICAjIEZ1bmN0aW9ucwotICAgIG15ICRudW1GdW5jdGlv
bnMgPSBAeyRmdW5jdGlvbnN9OwotICAgIGlmICgkbnVtRnVuY3Rpb25zID4gMCkgeworICAgICMg
T3BlcmF0aW9ucworICAgIG15ICRudW1PcGVyYXRpb25zID0gQHskb3BlcmF0aW9uc307CisgICAg
aWYgKCRudW1PcGVyYXRpb25zID4gMCkgewogICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIlxu
ICAgIC8vIEZ1bmN0aW9uc1xuIik7Ci0gICAgICAgIGZvcmVhY2ggbXkgJGZ1bmN0aW9uIChAeyRm
dW5jdGlvbnN9KSB7CisgICAgICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAoQHskb3BlcmF0aW9u
c30pIHsKICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgIGZvcmVh
Y2ggbXkgJGFyZ3VtZW50IChAeyRmdW5jdGlvbi0+YXJndW1lbnRzfSkgeworICAgICAgICAgICAg
Zm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewogICAgICAg
ICAgICAgICAgIG15ICRJRExUeXBlID0gR2V0SURMVHlwZSgkaW50ZXJmYWNlT3JDYWxsYmFjaywg
JGFyZ3VtZW50LT50eXBlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJ0eXBl
bmFtZSAke0lETFR5cGV9OjpQYXJhbWV0ZXJUeXBlICIgLiAkYXJndW1lbnQtPm5hbWUpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBteSAkbmF0aXZlUmV0dXJuVHlwZSA9ICJDYWxsYmFj
a1Jlc3VsdDx0eXBlbmFtZSAiIC4gR2V0SURMVHlwZSgkaW50ZXJmYWNlT3JDYWxsYmFjaywgJGZ1
bmN0aW9uLT50eXBlKSAuICI6OkltcGxlbWVudGF0aW9uVHlwZT4iOworICAgICAgICAgICAgbXkg
JG5hdGl2ZVJldHVyblR5cGUgPSAiQ2FsbGJhY2tSZXN1bHQ8dHlwZW5hbWUgIiAuIEdldElETFR5
cGUoJGludGVyZmFjZU9yQ2FsbGJhY2ssICRvcGVyYXRpb24tPnR5cGUpIC4gIjo6SW1wbGVtZW50
YXRpb25UeXBlPiI7CiAgICAgICAgICAgICAKICAgICAgICAgICAgICMgRklYTUU6IENoYW5nZSB0
aGUgZGVmYXVsdCBuYW1lICh1c2VkIGZvciBjYWxsYmFjayBmdW5jdGlvbnMpIHRvIHNvbWV0aGlu
ZyBvdGhlciB0aGFuIGhhbmRsZUV2ZW50LiBJdCBtYWtlcyBsaXR0bGUgc2Vuc2UuCi0gICAgICAg
ICAgICBteSAkZnVuY3Rpb25OYW1lID0gJGZ1bmN0aW9uLT5uYW1lID8gJGZ1bmN0aW9uLT5uYW1l
IDogImhhbmRsZUV2ZW50IjsKKyAgICAgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSAkb3BlcmF0
aW9uLT5uYW1lIHx8ICJoYW5kbGVFdmVudCI7CiAKICAgICAgICAgICAgIHB1c2goQCRjb250ZW50
UmVmLCAiICAgIHZpcnR1YWwgJHtuYXRpdmVSZXR1cm5UeXBlfSAke2Z1bmN0aW9uTmFtZX0oIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSBvdmVycmlkZTtcbiIpOwogICAgICAgICB9CkBA
IC01MTY3LDcgKzUxNjMsNyBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0hlYWRlckNvbnRlbnQKIAog
c3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbnQKIHsKLSAgICBteSAoJG9i
amVjdCwgJGludGVyZmFjZU9yQ2FsbGJhY2ssICRmdW5jdGlvbnMsICRjb25zdGFudHMsICRjb250
ZW50UmVmLCAkaW5jbHVkZXNSZWYpID0gQF87CisgICAgbXkgKCRvYmplY3QsICRpbnRlcmZhY2VP
ckNhbGxiYWNrLCAkb3BlcmF0aW9ucywgJGNvbnN0YW50cywgJGNvbnRlbnRSZWYsICRpbmNsdWRl
c1JlZikgPSBAXzsKIAogICAgIG15ICRuYW1lID0gJGludGVyZmFjZU9yQ2FsbGJhY2stPnR5cGUt
Pm5hbWU7CiAgICAgbXkgJGNhbGxiYWNrRGF0YVR5cGUgPSBHZXRKU0NhbGxiYWNrRGF0YVR5cGUo
JGludGVyZmFjZU9yQ2FsbGJhY2spOwpAQCAtNTI1NCwyMSArNTI1MCwyMSBAQCBzdWIgR2VuZXJh
dGVDYWxsYmFja0ltcGxlbWVudGF0aW9uQ29udGVuCiAgICAgICAgIHB1c2goQCRjb250ZW50UmVm
LCAifVxuXG4iKTsKICAgICB9CiAKLSAgICAjIEZ1bmN0aW9ucy4KLSAgICBteSAkbnVtRnVuY3Rp
b25zID0gQHskZnVuY3Rpb25zfTsKLSAgICBpZiAoJG51bUZ1bmN0aW9ucyA+IDApIHsKLSAgICAg
ICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGZ1bmN0aW9uc30pIHsKLSAgICAgICAgICAgIG5l
eHQgaWYgJGZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b219OworICAgICMgT3Bl
cmF0aW9ucworICAgIG15ICRudW1PcGVyYXRpb25zID0gQHskb3BlcmF0aW9uc307CisgICAgaWYg
KCRudW1PcGVyYXRpb25zID4gMCkgeworICAgICAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7
JG9wZXJhdGlvbnN9KSB7CisgICAgICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0N1c3RvbX07CiAgICAgICAgIAotICAgICAgICAgICAgQWRkVG9JbmNsdWRl
c0ZvcklETFR5cGUoJGZ1bmN0aW9uLT50eXBlLCAkaW5jbHVkZXNSZWYpOworICAgICAgICAgICAg
QWRkVG9JbmNsdWRlc0ZvcklETFR5cGUoJG9wZXJhdGlvbi0+dHlwZSwgJGluY2x1ZGVzUmVmKTsK
IAotICAgICAgICAgICAgbXkgJG5hdGl2ZVJldHVyblR5cGUgPSAiQ2FsbGJhY2tSZXN1bHQ8dHlw
ZW5hbWUgIiAuIEdldElETFR5cGUoJGludGVyZmFjZU9yQ2FsbGJhY2ssICRmdW5jdGlvbi0+dHlw
ZSkgLiAiOjpJbXBsZW1lbnRhdGlvblR5cGU+IjsKKyAgICAgICAgICAgIG15ICRuYXRpdmVSZXR1
cm5UeXBlID0gIkNhbGxiYWNrUmVzdWx0PHR5cGVuYW1lICIgLiBHZXRJRExUeXBlKCRpbnRlcmZh
Y2VPckNhbGxiYWNrLCAkb3BlcmF0aW9uLT50eXBlKSAuICI6OkltcGxlbWVudGF0aW9uVHlwZT4i
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICAjIEZJWE1FOiBDaGFuZ2UgdGhlIGRlZmF1bHQg
bmFtZSAodXNlZCBmb3IgY2FsbGJhY2sgZnVuY3Rpb25zKSB0byBzb21ldGhpbmcgb3RoZXIgdGhh
biBoYW5kbGVFdmVudC4gSXQgbWFrZXMgbGl0dGxlIHNlbnNlLgotICAgICAgICAgICAgbXkgJGZ1
bmN0aW9uTmFtZSA9ICRmdW5jdGlvbi0+bmFtZSA/ICRmdW5jdGlvbi0+bmFtZSA6ICJoYW5kbGVF
dmVudCI7CisgICAgICAgICAgICBteSAkZnVuY3Rpb25OYW1lID0gJG9wZXJhdGlvbi0+bmFtZSB8
fCAiaGFuZGxlRXZlbnQiOwogCiAgICAgICAgICAgICBteSBAYXJncyA9ICgpOwotICAgICAgICAg
ICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7CisgICAg
ICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVudHN9KSB7
CiAgICAgICAgICAgICAgICAgQWRkVG9JbmNsdWRlc0ZvcklETFR5cGUoJGFyZ3VtZW50LT50eXBl
LCAkaW5jbHVkZXNSZWYsIDEpOwogCiAgICAgICAgICAgICAgICAgbXkgJElETFR5cGUgPSBHZXRJ
RExUeXBlKCRpbnRlcmZhY2VPckNhbGxiYWNrLCAkYXJndW1lbnQtPnR5cGUpOwpAQCAtNTI4MCw3
ICs1Mjc2LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogCiAg
ICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIG5lZWRlZCBmb3IgTm9kZUZpbHRlciwgd2hpY2gg
d29ya3MgZXZlbiBmb3IgZGlzY29ubmVjdGVkIGlmcmFtZXMuIFdlIHNob3VsZCBpbnZlc3RpZ2F0
ZQogICAgICAgICAgICAgIyBpZiB0aGF0IGJlaGF2aW9yIGlzIG5lZWRlZCBmb3Igb3RoZXIgY2Fs
bGJhY2tzLgotICAgICAgICAgICAgaWYgKCEkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e1NraXBDYWxsYmFja0ludm9rZUNoZWNrfSkgeworICAgICAgICAgICAgaWYgKCEkb3BlcmF0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTa2lwQ2FsbGJhY2tJbnZva2VDaGVja30pIHsKICAgICAg
ICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNr
KCkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgcmV0
dXJuIENhbGxiYWNrUmVzdWx0VHlwZTo6VW5hYmxlVG9FeGVjdXRlO1xuXG4iKTsKICAgICAgICAg
ICAgIH0KQEAgLTUyOTMsNyArNTI4OSw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50
YXRpb25Db250ZW4KICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8mIHN0
YXRlID0gKmdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCk7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QCRjb250ZW50UmVmLCAiICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7XG4iKTsKIAotICAg
ICAgICAgICAgZm9yZWFjaCBteSAkYXJndW1lbnQgKEB7JGZ1bmN0aW9uLT5hcmd1bWVudHN9KSB7
CisgICAgICAgICAgICBmb3JlYWNoIG15ICRhcmd1bWVudCAoQHskb3BlcmF0aW9uLT5hcmd1bWVu
dHN9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXJncy5hcHBl
bmQoIiAuIE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUmVmZXJlbmNlcygkYXJndW1lbnQsICRpbnRlcmZh
Y2VPckNhbGxiYWNrLCAkYXJndW1lbnQtPm5hbWUsICJnbG9iYWxPYmplY3QiKSAuICIpO1xuIik7
CiAgICAgICAgICAgICB9CiAKQEAgLTUzMDMsMTEgKzUyOTksMTEgQEAgc3ViIEdlbmVyYXRlQ2Fs
bGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogICAgICAgICAgICAgaWYgKHJlZigkaW50ZXJmYWNl
T3JDYWxsYmFjaykgZXEgIklETENhbGxiYWNrRnVuY3Rpb24iKSB7CiAgICAgICAgICAgICAgICAg
JGNhbGxiYWNrSW52b2NhdGlvbiA9ICJtX2RhdGEtPmludm9rZUNhbGxiYWNrKGFyZ3MsIEpTQ2Fs
bGJhY2tEYXRhOjpDYWxsYmFja1R5cGU6OkZ1bmN0aW9uLCBJZGVudGlmaWVyKCksIHJldHVybmVk
RXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG15ICRj
YWxsYmFja1R5cGUgPSAkbnVtRnVuY3Rpb25zID4gMSA/ICJPYmplY3QiIDogIkZ1bmN0aW9uT3JP
YmplY3QiOworICAgICAgICAgICAgICAgIG15ICRjYWxsYmFja1R5cGUgPSAkbnVtT3BlcmF0aW9u
cyA+IDEgPyAiT2JqZWN0IiA6ICJGdW5jdGlvbk9yT2JqZWN0IjsKICAgICAgICAgICAgICAgICAk
Y2FsbGJhY2tJbnZvY2F0aW9uID0gIm1fZGF0YS0+aW52b2tlQ2FsbGJhY2soYXJncywgSlNDYWxs
YmFja0RhdGE6OkNhbGxiYWNrVHlwZTo6JHtjYWxsYmFja1R5cGV9LCBJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKCZ2bSwgXCIke2Z1bmN0aW9uTmFtZX1cIiksIHJldHVybmVkRXhjZXB0aW9uKSI7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEg
InZvaWQiKSB7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9p
ZCIpIHsKICAgICAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAke2NhbGxiYWNr
SW52b2NhdGlvbn07XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
cHVzaChAJGNvbnRlbnRSZWYsICIgICAgYXV0byBqc1Jlc3VsdCA9ICR7Y2FsbGJhY2tJbnZvY2F0
aW9ufTtcbiIpOwpAQCAtNTMxNSw3ICs1MzExLDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBs
ZW1lbnRhdGlvbkNvbnRlbgogCiAgICAgICAgICAgICAkaW5jbHVkZXNSZWYtPnsiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIn0gPSAxOwogICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIg
ICAgaWYgKHJldHVybmVkRXhjZXB0aW9uKSB7XG4iKTsKLSAgICAgICAgICAgIGlmICgkZnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JldGhyb3dFeGNlcHRpb259KSB7CisgICAgICAgICAg
ICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0aHJvd0V4Y2VwdGlvbn0p
IHsKICAgICAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEAkY29udGVudFJlZiwgIiAgICAgICAgdGhyb3dFeGNlcHRpb24oJnN0YXRlLCB0aHJvd1Nj
b3BlLCByZXR1cm5lZEV4Y2VwdGlvbik7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC01
MzI0LDEwICs1MzIwLDEwIEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb25Db250
ZW4KICAgICAgICAgICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgICAgICByZXR1cm4gQ2FsbGJh
Y2tSZXN1bHRUeXBlOjpFeGNlcHRpb25UaHJvd247XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgICB9XG5cbiIpOwogCi0gICAgICAgICAgICBpZiAoJGZ1bmN0aW9uLT50
eXBlLT5uYW1lIGVxICJ2b2lkIikgeworICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPnR5cGUt
Pm5hbWUgZXEgInZvaWQiKSB7CiAgICAgICAgICAgICAgICAgcHVzaChAJGNvbnRlbnRSZWYsICIg
ICAgcmV0dXJuIHsgfTtcbiIpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBteSAkbmF0aXZlVmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZU9yQ2FsbGJhY2ss
ICRmdW5jdGlvbiwgImpzUmVzdWx0IiwgIiIsICImc3RhdGUiLCAic3RhdGUiKTsKKyAgICAgICAg
ICAgICAgICBteSAkbmF0aXZlVmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJGludGVyZmFjZU9yQ2Fs
bGJhY2ssICRvcGVyYXRpb24sICJqc1Jlc3VsdCIsICIiLCAiJnN0YXRlIiwgInN0YXRlIik7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBhdXRv
IHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQCRjb250ZW50UmVmLCAiICAgIGF1dG8gcmV0dXJuVmFsdWUgPSAke25hdGl2ZVZh
bHVlfTtcbiIpOwpAQCAtNTM1MCwxNCArNTM0NiwxNCBAQCBzdWIgR2VuZXJhdGVDYWxsYmFja0lt
cGxlbWVudGF0aW9uQ29udGVuCiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25D
YWxsCiB7Ci0gICAgbXkgKCRmdW5jdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAkaW5kZW50LCAkaW50
ZXJmYWNlKSA9IEBfOworICAgIG15ICgkb3BlcmF0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRl
bnQsICRpbnRlcmZhY2UpID0gQF87CiAKLSAgICBpZiAoJGZ1bmN0aW9uLT50eXBlLT5uYW1lIGVx
ICJ2b2lkIiB8fCAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkZnVuY3Rpb24tPnR5cGUp
KSB7CisgICAgaWYgKCRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpKSB7CiAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiIpOwogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpO1xuIik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbXkgJGdsb2JhbE9iamVjdFJl
ZmVyZW5jZSA9ICRmdW5jdGlvbi0+aXNTdGF0aWMgPyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KHN0YXRlLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpIiA6ICIqY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkiOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKCIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRmdW5jdGlv
biwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKSAu
ICIpO1xuIik7CisgICAgICAgIG15ICRnbG9iYWxPYmplY3RSZWZlcmVuY2UgPSAkb3BlcmF0aW9u
LT5pc1N0YXRpYyA/ICIqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUtPmxleGljYWxH
bG9iYWxPYmplY3QoKSkiIDogIipjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSI7CisgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoIiAu
IE5hdGl2ZVRvSlNWYWx1ZVVzaW5nUG9pbnRlcnMoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1
bmN0aW9uU3RyaW5nLCAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlKSAuICIpO1xuIik7CiAgICAgfQog
fQogCkBAIC01MzY3LDcgKzUzNjMsNyBAQCBzdWIgSXNWYWx1ZUl0ZXJhYmxlSW50ZXJmYWNlCiAg
ICAgcmV0dXJuIDAgdW5sZXNzICRpbnRlcmZhY2UtPml0ZXJhYmxlOwogICAgIHJldHVybiAwIGlm
IGxlbmd0aCAkaW50ZXJmYWNlLT5pdGVyYWJsZS0+a2V5VHlwZTsKICAgICAjIEZJWE1FOiBTZWUg
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTU5MTQwLCB3ZSBzaG91bGQgZGllIGlmIHRoZSBuZXh0IGNo
ZWNrIGlzIGZhbHNlLgotICAgIHJldHVybiAwIHVubGVzcyBHZXRJbmRleGVkR2V0dGVyRnVuY3Rp
b24oJGludGVyZmFjZSk7CisgICAgcmV0dXJuIDAgdW5sZXNzIEdldEluZGV4ZWRHZXR0ZXJPcGVy
YXRpb24oJGludGVyZmFjZSk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTUzNzksNyArNTM3NSw3
IEBAIHN1YiBJc0tleVZhbHVlSXRlcmFibGVJbnRlcmZhY2UKICAgICByZXR1cm4gMTsKIH0KIAot
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucworc3ViIEdlbmVyYXRl
SXRlcmFibGVEZWZpbml0aW9uCiB7CiAgICAgbXkgJGludGVyZmFjZSA9IHNoaWZ0OwogCkBAIC01
NDE3LDkgKzU0MTMsOSBAQCBjb25zdCBKU0M6OkNsYXNzSW5mbyAke2l0ZXJhdG9yUHJvdG90eXBl
CiAKIEVORAogCi0gICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+aXRlcmFi
bGUtPmZ1bmN0aW9uc30pIHsKLSAgICAgICAgbXkgJHByb3BlcnR5TmFtZSA9ICRmdW5jdGlvbi0+
bmFtZTsKLSAgICAgICAgbXkgJGZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJm
YWNlLCAkY2xhc3NOYW1lLCAkZnVuY3Rpb24pOworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbiAo
QHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgbXkgJHByb3Bl
cnR5TmFtZSA9ICRvcGVyYXRpb24tPm5hbWU7CisgICAgICAgIG15ICRmdW5jdGlvbk5hbWUgPSBH
ZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7CiAKICAg
ICAgICAgbmV4dCBpZiAkcHJvcGVydHlOYW1lIGVxICJbU3ltYm9sLkl0ZXJhdG9yXSI7CiAKQEAg
LTYyMDcsNyArNjIwMyw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMKIAog
c3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uCiB7Ci0gICAgbXkgKCRvdXRwdXRBcnJh
eSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRp
bnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGZ1bmN0aW9uKSA9IEBfOwor
ICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNzTmFtZSwgJHZpc2li
bGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3Is
ICRvcGVyYXRpb24pID0gQF87CiAKICAgICByZXR1cm4gaWYgSXNKU0J1aWx0aW5Db25zdHJ1Y3Rv
cigkaW50ZXJmYWNlKTsKIApAQCAtNjIyMiw5ICs2MjE4LDkgQEAgc3ViIEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWZpbml0aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmV0
dXJuIGNvbnN0cnVjdCR7Y2xhc3NOYW1lfSgqZXhlYyk7XG4iKTsKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIn1cblxuIik7CiAgICAgICAgICB9IGVsc2lmICghSGFzQ3VzdG9tQ29u
c3RydWN0b3IoJGludGVyZmFjZSkgJiYgKCEkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntOYW1lZENvbnN0cnVjdG9yfSB8fCAkZ2VuZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpKSB7Ci0g
ICAgICAgICAgICBteSAkaXNPdmVybG9hZGVkID0gJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiBA
eyRmdW5jdGlvbi0+e292ZXJsb2Fkc319ID4gMTsKKyAgICAgICAgICAgIG15ICRpc092ZXJsb2Fk
ZWQgPSAkb3BlcmF0aW9uLT57b3ZlcmxvYWRzfSAmJiBAeyRvcGVyYXRpb24tPntvdmVybG9hZHN9
fSA+IDE7CiAgICAgICAgICAgICBpZiAoJGlzT3ZlcmxvYWRlZCkgewotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY29uc3Ry
dWN0JHtjbGFzc05hbWV9JGZ1bmN0aW9uLT57b3ZlcmxvYWRJbmRleH0oRXhlY1N0YXRlKiBzdGF0
ZSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInN0YXRpYyBpbmxp
bmUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0JHtjbGFzc05hbWV9JG9wZXJhdGlvbi0+e292ZXJs
b2FkSW5kZXh9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAidGVtcGxhdGU8PiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMICR7Y29uc3RydWN0b3JDbGFzc05hbWV9Ojpjb25zdHJ1Y3QoRXhl
Y1N0YXRlKiBzdGF0ZSlcbiIpOwogICAgICAgICAgICAgfQpAQCAtNjIzOCwxMCArNjIzNCwxMCBA
QCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24KIAogICAgICAgICAgICAgJGltcGxJ
bmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAKLSAgICAgICAgICAgIEdlbmVyYXRl
QXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVyZmFjZSk7
CisgICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1dEFycmF5LCAk
b3BlcmF0aW9uLCAkaW50ZXJmYWNlKTsKIAogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uSW1wbGVt
ZW50YXRpb25OYW1lID0gJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9yID8gImNyZWF0ZUZvckpT
Q29uc3RydWN0b3IiIDogImNyZWF0ZSI7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcg
PSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGludGVy
ZmFjZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lKTsKKyAgICAgICAgICAgIG15ICRmdW5j
dGlvblN0cmluZyA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKCRvdXRwdXRBcnJheSwgJG9wZXJh
dGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lKTsKIAogICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gb2JqZWN0ID0gJHtmdW5jdGlvblN0
cmluZ307XG4iKTsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpO1xuIikgaWYgJGNvZGVH
ZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uc3RydWN0b3JDYWxsV2l0aH0sICJTY3JpcHRTdGF0ZSIpOwpAQCAtNjI3
Myw4ICs2MjY5LDggQEAgc3ViIENvbnN0cnVjdG9ySGFzUHJvcGVydGllcwogICAgICAgICByZXR1
cm4gMTsKICAgICB9CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5m
dW5jdGlvbnN9KSB7Ci0gICAgICAgIG5leHQgdW5sZXNzICgkZnVuY3Rpb24tPmlzU3RhdGljKTsK
KyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsK
KyAgICAgICAgbmV4dCB1bmxlc3MgKCRvcGVyYXRpb24tPmlzU3RhdGljKTsKICAgICAgICAgcmV0
dXJuIDE7CiAgICAgfQogCkBAIC02NDAwLDI3ICs2Mzk2LDI1IEBAIHN1YiBIZWFkZXJOZWVkc1By
b3RvdHlwZURlY2xhcmF0aW9uCiAKIHN1YiBJc1VuZm9yZ2VhYmxlCiB7Ci0gICAgbXkgJGludGVy
ZmFjZSA9IHNoaWZ0OwotICAgIG15ICRwcm9wZXJ0eSA9IHNoaWZ0OworICAgIG15ICgkaW50ZXJm
YWNlLCAkcHJvcGVydHkpID0gQF87CisKICAgICByZXR1cm4gJHByb3BlcnR5LT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntVbmZvcmdlYWJsZX0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57VW5mb3JnZWFibGV9OwogfQogCiBzdWIgQ29tcHV0ZUZ1bmN0aW9uU3BlY2lhbAogewotICAg
IG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKLSAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICBt
eSAoJGludGVyZmFjZSwgJG9wZXJhdGlvbikgPSBAXzsKIAogICAgIG15IEBzcGVjaWFscyA9ICgp
OwotICAgIHB1c2goQHNwZWNpYWxzLCAoIkRvbnREZWxldGUiLCAiUmVhZE9ubHkiKSkgaWYgSXNV
bmZvcmdlYWJsZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pOwotICAgIHB1c2goQHNwZWNpYWxzLCAi
RG9udEVudW0iKSBpZiAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vdEVudW1lcmFi
bGV9OwotICAgIGlmIChJc0pTQnVpbHRpbigkaW50ZXJmYWNlLCAkZnVuY3Rpb24pKSB7CisgICAg
cHVzaChAc3BlY2lhbHMsICgiRG9udERlbGV0ZSIsICJSZWFkT25seSIpKSBpZiBJc1VuZm9yZ2Vh
YmxlKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOworICAgIHB1c2goQHNwZWNpYWxzLCAiRG9udEVu
dW0iKSBpZiAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfTsK
KyAgICBpZiAoSXNKU0J1aWx0aW4oJGludGVyZmFjZSwgJG9wZXJhdGlvbikpIHsKICAgICAgICAg
cHVzaChAc3BlY2lhbHMsICJKU0M6OkJ1aWx0aW4iKTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAg
fSBlbHNlIHsKICAgICAgICAgcHVzaChAc3BlY2lhbHMsICJKU0M6OkZ1bmN0aW9uIik7CiAgICAg
fQotICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJET01KSVQifSkgewot
ICAgICAgICBwdXNoKEBzcGVjaWFscywgIkRPTUpJVEZ1bmN0aW9uIikgaWYgJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntET01KSVR9OworICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiRE9NSklUIn0pIHsKKyAgICAgICAgcHVzaChAc3BlY2lhbHMsICJET01K
SVRGdW5jdGlvbiIpIGlmICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RPTUpJVH07
CiAgICAgfQogICAgIHJldHVybiAoQHNwZWNpYWxzID4gMCkgPyBqb2luKCIgfCAiLCBAc3BlY2lh
bHMpIDogIjAiOwogfQpAQCAtNjQ1MSwxNSArNjQ0NSwxNyBAQCBzdWIgSXNKU0J1aWx0aW5Db25z
dHJ1Y3RvcgogCiBzdWIgR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lCiB7Ci0gICAgbXkgKCRjbGFz
c05hbWUsICRmdW5jdGlvbikgPSBAXzsKLSAgICBteSAkc2NvcGVOYW1lID0gJGZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKKyAgICBteSAoJGNsYXNzTmFtZSwg
JG9wZXJhdGlvbikgPSBAXzsKKworICAgIG15ICRzY29wZU5hbWUgPSAkb3BlcmF0aW9uLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEJ5fTsKICAgICAkc2NvcGVOYW1lID0gc3Vic3Ry
ICRjbGFzc05hbWUsIDIgdW5sZXNzICRzY29wZU5hbWU7Ci0gICAgcmV0dXJuIEdldEpTQnVpbHRp
bkZ1bmN0aW9uTmFtZUZyb21TdHJpbmcoJHNjb3BlTmFtZSwgJGZ1bmN0aW9uLT5uYW1lKTsKKyAg
ICByZXR1cm4gR2V0SlNCdWlsdGluRnVuY3Rpb25OYW1lRnJvbVN0cmluZygkc2NvcGVOYW1lLCAk
b3BlcmF0aW9uLT5uYW1lKTsKIH0KIAogc3ViIEdldEpTQnVpbHRpbkZ1bmN0aW9uTmFtZUZyb21T
dHJpbmcKIHsKICAgICBteSAoJHNjb3BlTmFtZSwgJGZ1bmN0aW9uTmFtZSkgPSBAXzsKKwogICAg
IHJldHVybiAkY29kZUdlbmVyYXRvci0+V0tfbGNmaXJzdCgkc2NvcGVOYW1lKSAuICRjb2RlR2Vu
ZXJhdG9yLT5XS191Y2ZpcnN0KCRmdW5jdGlvbk5hbWUpIC4gIkNvZGVHZW5lcmF0b3IiOwogfQog
CkBAIC02NDc4LDggKzY0NzQsOCBAQCBzdWIgQWRkSlNCdWlsdGluSW5jbHVkZXNJZk5lZWRlZCgp
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHsk
aW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7Ci0gICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldEpT
QnVpbHRpblNjb3BlTmFtZSgkaW50ZXJmYWNlLCAkZnVuY3Rpb24pIC4gIkJ1aWx0aW5zLmgiLCAk
ZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbmRpdGlvbmFsfSkgaWYgSXNKU0J1aWx0
aW4oJGludGVyZmFjZSwgJGZ1bmN0aW9uKTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24gKEB7
JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoR2V0
SlNCdWlsdGluU2NvcGVOYW1lKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pIC4gIkJ1aWx0aW5zLmgi
LCAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH0pIGlmIElzSlNC
dWlsdGluKCRpbnRlcmZhY2UsICRvcGVyYXRpb24pOwogICAgIH0KIAogICAgIGZvcmVhY2ggbXkg
JGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlzaW9uIDIxNzQ0MykK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2VyLnBtCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw4ICs1OSw4IEBAIHN0cnVjdCggSURMSW50ZXJmYWNlID0+IHsKICAgICB0
eXBlID0+ICdJRExUeXBlJywKICAgICBwYXJlbnRUeXBlID0+ICdJRExUeXBlJywKICAgICBjb25z
dGFudHMgPT4gJ0AnLCAgICAjIExpc3Qgb2YgJ0lETENvbnN0YW50JwotICAgIGZ1bmN0aW9ucyA9
PiAnQCcsICAgICMgTGlzdCBvZiAnSURMT3BlcmF0aW9uJwotICAgIGFub255bW91c0Z1bmN0aW9u
cyA9PiAnQCcsICMgTGlzdCBvZiAnSURMT3BlcmF0aW9uJworICAgIG9wZXJhdGlvbnMgPT4gJ0An
LCAgICAjIExpc3Qgb2YgJ0lETE9wZXJhdGlvbicKKyAgICBhbm9ueW1vdXNPcGVyYXRpb25zID0+
ICdAJywgIyBMaXN0IG9mICdJRExPcGVyYXRpb24nCiAgICAgYXR0cmlidXRlcyA9PiAnQCcsICAg
ICMgTGlzdCBvZiAnSURMQXR0cmlidXRlJwogICAgIGNvbnN0cnVjdG9ycyA9PiAnQCcsICMgQ29u
c3RydWN0b3JzLCBsaXN0IG9mICdJRExPcGVyYXRpb24nCiAgICAgY3VzdG9tQ29uc3RydWN0b3Jz
ID0+ICdAJywgIyBDdXN0b20gY29uc3RydWN0b3JzLCBsaXN0IG9mICdJRExPcGVyYXRpb24nCkBA
IC0xMTMsNyArMTEzLDcgQEAgc3RydWN0KCBJRExJdGVyYWJsZSA9PiB7CiAgICAgaXNLZXlWYWx1
ZSA9PiAnJCcsCiAgICAga2V5VHlwZSA9PiAnSURMVHlwZScsCiAgICAgdmFsdWVUeXBlID0+ICdJ
RExUeXBlJywKLSAgICBmdW5jdGlvbnMgPT4gJ0AnLCAjIEl0ZXJhYmxlIGZ1bmN0aW9ucyAoZW50
cmllcywga2V5cywgdmFsdWVzLCBbU3ltYm9sLkl0ZXJhdG9yXSwgZm9yRWFjaCkKKyAgICBvcGVy
YXRpb25zID0+ICdAJywgIyBJdGVyYWJsZSBvcGVyYXRpb25zIChlbnRyaWVzLCBrZXlzLCB2YWx1
ZXMsIFtTeW1ib2wuSXRlcmF0b3JdLCBmb3JFYWNoKQogICAgIGV4dGVuZGVkQXR0cmlidXRlcyA9
PiAnJCcsCiB9KTsKIApAQCAtMTIzLDcgKzEyMyw3IEBAIHN0cnVjdCggSURMTWFwTGlrZSA9PiB7
CiAgICAga2V5VHlwZSA9PiAnSURMVHlwZScsCiAgICAgdmFsdWVUeXBlID0+ICdJRExUeXBlJywK
ICAgICBhdHRyaWJ1dGVzID0+ICdAJywgIyBNYXBMaWtlIGF0dHJpYnV0ZXMgKHNpemUpCi0gICAg
ZnVuY3Rpb25zID0+ICdAJywgIyBNYXBMaWtlIGZ1bmN0aW9ucyAoZW50cmllcywga2V5cywgdmFs
dWVzLCBmb3JFYWNoLCBnZXQsIGhhcyBhbmQgaWYgbm90IHJlYWRvbmx5LCBkZWxldGUsIHNldCBh
bmQgY2xlYXIpCisgICAgb3BlcmF0aW9ucyA9PiAnQCcsICMgTWFwTGlrZSBvcGVyYXRpb25zIChl
bnRyaWVzLCBrZXlzLCB2YWx1ZXMsIGZvckVhY2gsIGdldCwgaGFzIGFuZCBpZiBub3QgcmVhZG9u
bHksIGRlbGV0ZSwgc2V0IGFuZCBjbGVhcikKICAgICBleHRlbmRlZEF0dHJpYnV0ZXMgPT4gJyQn
LAogfSk7CiAKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdHJ1Y3QoIElETFNlcmlhbGl6YWJsZSA9PiB7
CiAgICAgaGFzQXR0cmlidXRlID0+ICckJywgIyBzZXJpYWxpemVyID0geyBhdHRyaWJ1dGUgfQog
ICAgIGhhc0luaGVyaXQgPT4gJyQnLCAjIHNlcmlhbGl6ZXIgPSB7IGluaGVyaXQgfQogICAgIGhh
c0dldHRlciA9PiAnJCcsICMgc2VyaWFsaXplciA9IHsgZ2V0dGVyIH0KLSAgICBmdW5jdGlvbnMg
PT4gJ0AnLCAjIHRvSlNPTiBmdW5jdGlvbgorICAgIG9wZXJhdGlvbnMgPT4gJ0AnLCAjIHRvSlNP
TiBvcGVyYXRpb24KIH0pOwogCiAjIGh0dHBzOi8vaGV5Y2FtLmdpdGh1Yi5pby93ZWJpZGwvI2lk
bC1jb25zdGFudHMKQEAgLTYzNCw3ICs2MzQsNyBAQCBzdWIgYXBwbHlUeXBlZGVmcwogICAgICAg
ICAgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAeyRkZWZpbml0aW9uLT5hdHRyaWJ1dGVzfSkg
ewogICAgICAgICAgICAgICAgICRhdHRyaWJ1dGUtPnR5cGUoJHNlbGYtPnR5cGVCeUFwcGx5aW5n
VHlwZWRlZnMoJGF0dHJpYnV0ZS0+dHlwZSkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAg
Zm9yZWFjaCBteSAkb3BlcmF0aW9uIChAeyRkZWZpbml0aW9uLT5mdW5jdGlvbnN9LCBAeyRkZWZp
bml0aW9uLT5hbm9ueW1vdXNGdW5jdGlvbnN9LCBAeyRkZWZpbml0aW9uLT5jb25zdHJ1Y3RvcnN9
LCBAeyRkZWZpbml0aW9uLT5jdXN0b21Db25zdHJ1Y3RvcnN9KSB7CisgICAgICAgICAgICBmb3Jl
YWNoIG15ICRvcGVyYXRpb24gKEB7JGRlZmluaXRpb24tPm9wZXJhdGlvbnN9LCBAeyRkZWZpbml0
aW9uLT5hbm9ueW1vdXNPcGVyYXRpb25zfSwgQHskZGVmaW5pdGlvbi0+Y29uc3RydWN0b3JzfSwg
QHskZGVmaW5pdGlvbi0+Y3VzdG9tQ29uc3RydWN0b3JzfSkgewogICAgICAgICAgICAgICAgICRz
ZWxmLT5hcHBseVR5cGVkZWZzVG9PcGVyYXRpb24oJG9wZXJhdGlvbik7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzaWYgKHJlZigkZGVmaW5pdGlvbikgZXEgIklETERpY3Rpb25hcnkiKSB7
CkBAIC0xMzUwLDEzICsxMzUwLDEzIEBAIHN1YiBwYXJzZVNlcmlhbGl6ZXIKICAgICAgICAgICAg
ICRuZXdEYXRhTm9kZSA9IElETFNlcmlhbGl6YWJsZS0+bmV3KCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBteSAkdG9KU09ORnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICAgICAk
dG9KU09ORnVuY3Rpb24tPm5hbWUoInRvSlNPTiIpOworICAgICAgICBteSAkdG9KU09OT3BlcmF0
aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAgICAgJHRvSlNPTk9wZXJhdGlvbi0+bmFt
ZSgidG9KU09OIik7CiAKICAgICAgICAgJHNlbGYtPmFzc2VydEV4dGVuZGVkQXR0cmlidXRlc1Zh
bGlkRm9yQ29udGV4dCgkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0LCAib3BlcmF0aW9uIik7Ci0gICAg
ICAgICR0b0pTT05GdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOwotICAgICAgICAkdG9KU09ORnVuY3Rpb24tPmlzU2VyaWFsaXplcigxKTsKLSAgICAg
ICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJHRvSlNPTkZ1bmN0aW9uKTsKKyAg
ICAgICAgJHRvSlNPTk9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJp
YnV0ZUxpc3QpOworICAgICAgICAkdG9KU09OT3BlcmF0aW9uLT5pc1NlcmlhbGl6ZXIoMSk7Cisg
ICAgICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkdG9KU09OT3BlcmF0aW9u
KTsKIAogICAgICAgICAkc2VsZi0+YXNzZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwg
IjsiLCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVybiAkbmV3RGF0YU5vZGU7CkBAIC0xNzI1LDQw
ICsxNzI1LDQwIEBAIHN1YiBwYXJzZU9wdGlvbmFsSXRlcmFibGVJbnRlcmZhY2UKICAgICB9CiAg
ICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI+IiwgX19MSU5F
X18pOwogCi0gICAgbXkgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5l
dygpOwotICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5uYW1lKCJbU3ltYm9sLkl0ZXJhdG9y
XSIpOwotICAgICRzeW1ib2xJdGVyYXRvckZ1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJGV4
dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rpb24tPmlzSXRl
cmFibGUoMSk7Ci0KLSAgICBteSAkZW50cmllc0Z1bmN0aW9uID0gSURMT3BlcmF0aW9uLT5uZXco
KTsKLSAgICAkZW50cmllc0Z1bmN0aW9uLT5uYW1lKCJlbnRyaWVzIik7Ci0gICAgJGVudHJpZXNG
dW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAg
ICRlbnRyaWVzRnVuY3Rpb24tPmlzSXRlcmFibGUoMSk7Ci0KLSAgICBteSAka2V5c0Z1bmN0aW9u
ID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKLSAgICAka2V5c0Z1bmN0aW9uLT5uYW1lKCJrZXlzIik7
Ci0gICAgJGtleXNGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOwotICAgICRrZXlzRnVuY3Rpb24tPmlzSXRlcmFibGUoMSk7Ci0KLSAgICBteSAkdmFs
dWVzRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICR2YWx1ZXNGdW5jdGlvbi0+
bmFtZSgidmFsdWVzIik7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMo
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT5pc0l0ZXJhYmxl
KDEpOwotCi0gICAgbXkgJGZvckVhY2hGdW5jdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7Ci0g
ICAgJGZvckVhY2hGdW5jdGlvbi0+bmFtZSgiZm9yRWFjaCIpOwotICAgICRmb3JFYWNoRnVuY3Rp
b24tPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAkZm9y
RWFjaEZ1bmN0aW9uLT5pc0l0ZXJhYmxlKDEpOworICAgIG15ICRzeW1ib2xJdGVyYXRvck9wZXJh
dGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJHN5bWJvbEl0ZXJhdG9yT3BlcmF0aW9u
LT5uYW1lKCJbU3ltYm9sLkl0ZXJhdG9yXSIpOworICAgICRzeW1ib2xJdGVyYXRvck9wZXJhdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRzeW1i
b2xJdGVyYXRvck9wZXJhdGlvbi0+aXNJdGVyYWJsZSgxKTsKKworICAgIG15ICRlbnRyaWVzT3Bl
cmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkZW50cmllc09wZXJhdGlvbi0+bmFt
ZSgiZW50cmllcyIpOworICAgICRlbnRyaWVzT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMo
JGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7CisgICAgJGVudHJpZXNPcGVyYXRpb24tPmlzSXRlcmFi
bGUoMSk7CisKKyAgICBteSAka2V5c09wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7Cisg
ICAgJGtleXNPcGVyYXRpb24tPm5hbWUoImtleXMiKTsKKyAgICAka2V5c09wZXJhdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRrZXlzT3BlcmF0
aW9uLT5pc0l0ZXJhYmxlKDEpOworCisgICAgbXkgJHZhbHVlc09wZXJhdGlvbiA9IElETE9wZXJh
dGlvbi0+bmV3KCk7CisgICAgJHZhbHVlc09wZXJhdGlvbi0+bmFtZSgidmFsdWVzIik7CisgICAg
JHZhbHVlc09wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxp
c3QpOworICAgICR2YWx1ZXNPcGVyYXRpb24tPmlzSXRlcmFibGUoMSk7CisKKyAgICBteSAkZm9y
RWFjaE9wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGZvckVhY2hPcGVyYXRp
b24tPm5hbWUoImZvckVhY2giKTsKKyAgICAkZm9yRWFjaE9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRmb3JFYWNoT3BlcmF0aW9uLT5p
c0l0ZXJhYmxlKDEpOwogICAgIG15ICRmb3JFYWNoQXJndW1lbnQgPSBJRExBcmd1bWVudC0+bmV3
KCk7CiAgICAgJGZvckVhY2hBcmd1bWVudC0+bmFtZSgiY2FsbGJhY2siKTsKICAgICAkZm9yRWFj
aEFyZ3VtZW50LT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7Ci0gICAgcHVzaChAeyRmb3JF
YWNoRnVuY3Rpb24tPmFyZ3VtZW50c30sICgkZm9yRWFjaEFyZ3VtZW50KSk7CisgICAgcHVzaChA
eyRmb3JFYWNoT3BlcmF0aW9uLT5hcmd1bWVudHN9LCAoJGZvckVhY2hBcmd1bWVudCkpOwogCi0g
ICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJHN5bWJvbEl0ZXJhdG9yRnVuY3Rp
b24pOwotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRlbnRyaWVzRnVuY3Rp
b24pOwotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRrZXlzRnVuY3Rpb24p
OwotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICR2YWx1ZXNGdW5jdGlvbik7
Ci0gICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGZvckVhY2hGdW5jdGlvbik7
CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+b3BlcmF0aW9uc30sICRzeW1ib2xJdGVyYXRvck9w
ZXJhdGlvbik7CisgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+b3BlcmF0aW9uc30sICRlbnRyaWVz
T3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwgJGtleXNP
cGVyYXRpb24pOworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkdmFsdWVz
T3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwgJGZvckVh
Y2hPcGVyYXRpb24pOwogCiAgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsKIH0KQEAgLTE4MDYsOTgg
KzE4MDYsOTggQEAgc3ViIHBhcnNlTWFwTGlrZVByb3BlcnRpZXMKICAgICAkc2l6ZUF0dHJpYnV0
ZS0+dHlwZShtYWtlU2ltcGxlVHlwZSgiYW55IikpOwogICAgIHB1c2goQHskbmV3RGF0YU5vZGUt
PmF0dHJpYnV0ZXN9LCAkc2l6ZUF0dHJpYnV0ZSk7CiAKLSAgICBteSAkZ2V0RnVuY3Rpb24gPSBJ
RExPcGVyYXRpb24tPm5ldygpOwotICAgICRnZXRGdW5jdGlvbi0+bmFtZSgiZ2V0Iik7Ci0gICAg
JGdldEZ1bmN0aW9uLT5pc01hcExpa2UoMSk7CisgICAgbXkgJGdldE9wZXJhdGlvbiA9IElETE9w
ZXJhdGlvbi0+bmV3KCk7CisgICAgJGdldE9wZXJhdGlvbi0+bmFtZSgiZ2V0Iik7CisgICAgJGdl
dE9wZXJhdGlvbi0+aXNNYXBMaWtlKDEpOwogICAgIG15ICRnZXRBcmd1bWVudCA9IElETEFyZ3Vt
ZW50LT5uZXcoKTsKICAgICAkZ2V0QXJndW1lbnQtPm5hbWUoImtleSIpOwogICAgICRnZXRBcmd1
bWVudC0+dHlwZSgkbmV3RGF0YU5vZGUtPmtleVR5cGUpOwogICAgICRnZXRBcmd1bWVudC0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgIHB1c2goQHskZ2V0
RnVuY3Rpb24tPmFyZ3VtZW50c30sICgkZ2V0QXJndW1lbnQpKTsKLSAgICAkZ2V0RnVuY3Rpb24t
PmV4dGVuZGVkQXR0cmlidXRlcygkbm90RW51bWVyYWJsZUV4dGVuZGVkQXR0cmlidXRlTGlzdCk7
Ci0gICAgJGdldEZ1bmN0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7Ci0KLSAgICBt
eSAkaGFzRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICRoYXNGdW5jdGlvbi0+
bmFtZSgiaGFzIik7Ci0gICAgJGhhc0Z1bmN0aW9uLT5pc01hcExpa2UoMSk7CisgICAgcHVzaChA
eyRnZXRPcGVyYXRpb24tPmFyZ3VtZW50c30sICgkZ2V0QXJndW1lbnQpKTsKKyAgICAkZ2V0T3Bl
cmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0
ZUxpc3QpOworICAgICRnZXRPcGVyYXRpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsK
KworICAgIG15ICRoYXNPcGVyYXRpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOworICAgICRoYXNP
cGVyYXRpb24tPm5hbWUoImhhcyIpOworICAgICRoYXNPcGVyYXRpb24tPmlzTWFwTGlrZSgxKTsK
ICAgICBteSAkaGFzQXJndW1lbnQgPSBJRExBcmd1bWVudC0+bmV3KCk7CiAgICAgJGhhc0FyZ3Vt
ZW50LT5uYW1lKCJrZXkiKTsKICAgICAkaGFzQXJndW1lbnQtPnR5cGUoJG5ld0RhdGFOb2RlLT5r
ZXlUeXBlKTsKICAgICAkaGFzQXJndW1lbnQtPmV4dGVuZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRB
dHRyaWJ1dGVMaXN0KTsKLSAgICBwdXNoKEB7JGhhc0Z1bmN0aW9uLT5hcmd1bWVudHN9LCAoJGhh
c0FyZ3VtZW50KSk7Ci0gICAgJGhhc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVu
dW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwotICAgICRoYXNGdW5jdGlvbi0+dHlwZSht
YWtlU2ltcGxlVHlwZSgiYW55IikpOwotCi0gICAgbXkgJGVudHJpZXNGdW5jdGlvbiA9IElETE9w
ZXJhdGlvbi0+bmV3KCk7Ci0gICAgJGVudHJpZXNGdW5jdGlvbi0+bmFtZSgiZW50cmllcyIpOwot
ICAgICRlbnRyaWVzRnVuY3Rpb24tPmlzTWFwTGlrZSgxKTsKLSAgICAkZW50cmllc0Z1bmN0aW9u
LT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3Qp
OwotICAgICRlbnRyaWVzRnVuY3Rpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKLQot
ICAgIG15ICRrZXlzRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICRrZXlzRnVu
Y3Rpb24tPm5hbWUoImtleXMiKTsKLSAgICAka2V5c0Z1bmN0aW9uLT5pc01hcExpa2UoMSk7Ci0g
ICAgJGtleXNGdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRub3RFbnVtZXJhYmxlRXh0ZW5k
ZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICAka2V5c0Z1bmN0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBl
KCJhbnkiKSk7Ci0KLSAgICBteSAkdmFsdWVzRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygp
OwotICAgICR2YWx1ZXNGdW5jdGlvbi0+bmFtZSgidmFsdWVzIik7Ci0gICAgJHZhbHVlc0Z1bmN0
aW9uLT5pc01hcExpa2UoMSk7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntOb3RFbnVtZXJhYmxlfSA9IDE7Ci0gICAgJHZhbHVlc0Z1bmN0aW9uLT50
eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7Ci0KLSAgICBteSAkZm9yRWFjaEZ1bmN0aW9uID0g
SURMT3BlcmF0aW9uLT5uZXcoKTsKLSAgICAkZm9yRWFjaEZ1bmN0aW9uLT5uYW1lKCJmb3JFYWNo
Iik7Ci0gICAgJGZvckVhY2hGdW5jdGlvbi0+aXNNYXBMaWtlKDEpOwotICAgICRmb3JFYWNoRnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcyh7fSk7Ci0gICAgJGZvckVhY2hGdW5jdGlvbi0+dHlw
ZShtYWtlU2ltcGxlVHlwZSgiYW55IikpOworICAgIHB1c2goQHskaGFzT3BlcmF0aW9uLT5hcmd1
bWVudHN9LCAoJGhhc0FyZ3VtZW50KSk7CisgICAgJGhhc09wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKCRub3RFbnVtZXJhYmxlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKKyAgICAkaGFzT3Bl
cmF0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7CisKKyAgICBteSAkZW50cmllc09w
ZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGVudHJpZXNPcGVyYXRpb24tPm5h
bWUoImVudHJpZXMiKTsKKyAgICAkZW50cmllc09wZXJhdGlvbi0+aXNNYXBMaWtlKDEpOworICAg
ICRlbnRyaWVzT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRl
bmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRlbnRyaWVzT3BlcmF0aW9uLT50eXBlKG1ha2VTaW1w
bGVUeXBlKCJhbnkiKSk7CisKKyAgICBteSAka2V5c09wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+
bmV3KCk7CisgICAgJGtleXNPcGVyYXRpb24tPm5hbWUoImtleXMiKTsKKyAgICAka2V5c09wZXJh
dGlvbi0+aXNNYXBMaWtlKDEpOworICAgICRrZXlzT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRrZXlzT3BlcmF0
aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7CisKKyAgICBteSAkdmFsdWVzT3BlcmF0
aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkdmFsdWVzT3BlcmF0aW9uLT5uYW1lKCJ2
YWx1ZXMiKTsKKyAgICAkdmFsdWVzT3BlcmF0aW9uLT5pc01hcExpa2UoMSk7CisgICAgJHZhbHVl
c09wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRleHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwor
ICAgICR2YWx1ZXNPcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e05vdEVudW1lcmFibGV9
ID0gMTsKKyAgICAkdmFsdWVzT3BlcmF0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnkiKSk7
CisKKyAgICBteSAkZm9yRWFjaE9wZXJhdGlvbiA9IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAg
JGZvckVhY2hPcGVyYXRpb24tPm5hbWUoImZvckVhY2giKTsKKyAgICAkZm9yRWFjaE9wZXJhdGlv
bi0+aXNNYXBMaWtlKDEpOworICAgICRmb3JFYWNoT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0
ZXMoe30pOworICAgICRmb3JFYWNoT3BlcmF0aW9uLT50eXBlKG1ha2VTaW1wbGVUeXBlKCJhbnki
KSk7CiAgICAgbXkgJGZvckVhY2hBcmd1bWVudCA9IElETEFyZ3VtZW50LT5uZXcoKTsKICAgICAk
Zm9yRWFjaEFyZ3VtZW50LT5uYW1lKCJjYWxsYmFjayIpOwogICAgICRmb3JFYWNoQXJndW1lbnQt
PnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKICAgICAkZm9yRWFjaEFyZ3VtZW50LT5leHRl
bmRlZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgcHVzaChAeyRmb3JF
YWNoRnVuY3Rpb24tPmFyZ3VtZW50c30sICgkZm9yRWFjaEFyZ3VtZW50KSk7CisgICAgcHVzaChA
eyRmb3JFYWNoT3BlcmF0aW9uLT5hcmd1bWVudHN9LCAoJGZvckVhY2hBcmd1bWVudCkpOwogCi0g
ICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGdldEZ1bmN0aW9uKTsKLSAgICBw
dXNoKEB7JG5ld0RhdGFOb2RlLT5mdW5jdGlvbnN9LCAkaGFzRnVuY3Rpb24pOwotICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRlbnRyaWVzRnVuY3Rpb24pOwotICAgIHB1c2go
QHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRrZXlzRnVuY3Rpb24pOwotICAgIHB1c2goQHsk
bmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICR2YWx1ZXNGdW5jdGlvbik7Ci0gICAgcHVzaChAeyRu
ZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGZvckVhY2hGdW5jdGlvbik7CisgICAgcHVzaChAeyRu
ZXdEYXRhTm9kZS0+b3BlcmF0aW9uc30sICRnZXRPcGVyYXRpb24pOworICAgIHB1c2goQHskbmV3
RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkaGFzT3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0Rh
dGFOb2RlLT5vcGVyYXRpb25zfSwgJGVudHJpZXNPcGVyYXRpb24pOworICAgIHB1c2goQHskbmV3
RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAka2V5c09wZXJhdGlvbik7CisgICAgcHVzaChAeyRuZXdE
YXRhTm9kZS0+b3BlcmF0aW9uc30sICR2YWx1ZXNPcGVyYXRpb24pOworICAgIHB1c2goQHskbmV3
RGF0YU5vZGUtPm9wZXJhdGlvbnN9LCAkZm9yRWFjaE9wZXJhdGlvbik7CiAKICAgICByZXR1cm4g
JG5ld0RhdGFOb2RlIGlmICRpc1JlYWRPbmx5OwogCi0gICAgbXkgJGFkZEZ1bmN0aW9uID0gSURM
T3BlcmF0aW9uLT5uZXcoKTsKLSAgICAkYWRkRnVuY3Rpb24tPm5hbWUoImFkZCIpOwotICAgICRh
ZGRGdW5jdGlvbi0+aXNNYXBMaWtlKDEpOworICAgIG15ICRhZGRPcGVyYXRpb24gPSBJRExPcGVy
YXRpb24tPm5ldygpOworICAgICRhZGRPcGVyYXRpb24tPm5hbWUoImFkZCIpOworICAgICRhZGRP
cGVyYXRpb24tPmlzTWFwTGlrZSgxKTsKICAgICBteSAkYWRkQXJndW1lbnQgPSBJRExBcmd1bWVu
dC0+bmV3KCk7CiAgICAgJGFkZEFyZ3VtZW50LT5uYW1lKCJrZXkiKTsKICAgICAkYWRkQXJndW1l
bnQtPnR5cGUoJG5ld0RhdGFOb2RlLT5rZXlUeXBlKTsKICAgICAkYWRkQXJndW1lbnQtPmV4dGVu
ZGVkQXR0cmlidXRlcygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKLSAgICBwdXNoKEB7JGFkZEZ1
bmN0aW9uLT5hcmd1bWVudHN9LCAoJGFkZEFyZ3VtZW50KSk7Ci0gICAgJGFkZEZ1bmN0aW9uLT5l
eHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOwot
ICAgICRhZGRGdW5jdGlvbi0+dHlwZShtYWtlU2ltcGxlVHlwZSgiYW55IikpOwotCi0gICAgbXkg
JGNsZWFyRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygpOwotICAgICRjbGVhckZ1bmN0aW9u
LT5uYW1lKCJjbGVhciIpOwotICAgICRjbGVhckZ1bmN0aW9uLT5pc01hcExpa2UoMSk7Ci0gICAg
JGNsZWFyRnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcygkbm90RW51bWVyYWJsZUV4dGVuZGVk
QXR0cmlidXRlTGlzdCk7Ci0gICAgJGNsZWFyRnVuY3Rpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUo
InZvaWQiKSk7Ci0KLSAgICBteSAkZGVsZXRlRnVuY3Rpb24gPSBJRExPcGVyYXRpb24tPm5ldygp
OwotICAgICRkZWxldGVGdW5jdGlvbi0+bmFtZSgiZGVsZXRlIik7Ci0gICAgJGRlbGV0ZUZ1bmN0
aW9uLT5pc01hcExpa2UoMSk7CisgICAgcHVzaChAeyRhZGRPcGVyYXRpb24tPmFyZ3VtZW50c30s
ICgkYWRkQXJndW1lbnQpKTsKKyAgICAkYWRkT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMo
JG5vdEVudW1lcmFibGVFeHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRhZGRPcGVyYXRpb24t
PnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsKKworICAgIG15ICRjbGVhck9wZXJhdGlvbiA9
IElETE9wZXJhdGlvbi0+bmV3KCk7CisgICAgJGNsZWFyT3BlcmF0aW9uLT5uYW1lKCJjbGVhciIp
OworICAgICRjbGVhck9wZXJhdGlvbi0+aXNNYXBMaWtlKDEpOworICAgICRjbGVhck9wZXJhdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRub3RFbnVtZXJhYmxlRXh0ZW5kZWRBdHRyaWJ1dGVMaXN0
KTsKKyAgICAkY2xlYXJPcGVyYXRpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUoInZvaWQiKSk7CisK
KyAgICBteSAkZGVsZXRlT3BlcmF0aW9uID0gSURMT3BlcmF0aW9uLT5uZXcoKTsKKyAgICAkZGVs
ZXRlT3BlcmF0aW9uLT5uYW1lKCJkZWxldGUiKTsKKyAgICAkZGVsZXRlT3BlcmF0aW9uLT5pc01h
cExpa2UoMSk7CiAgICAgbXkgJGRlbGV0ZUFyZ3VtZW50ID0gSURMQXJndW1lbnQtPm5ldygpOwog
ICAgICRkZWxldGVBcmd1bWVudC0+bmFtZSgia2V5Iik7CiAgICAgJGRlbGV0ZUFyZ3VtZW50LT50
eXBlKCRuZXdEYXRhTm9kZS0+a2V5VHlwZSk7CiAgICAgJGRlbGV0ZUFyZ3VtZW50LT5leHRlbmRl
ZEF0dHJpYnV0ZXMoJGV4dGVuZGVkQXR0cmlidXRlTGlzdCk7Ci0gICAgcHVzaChAeyRkZWxldGVG
dW5jdGlvbi0+YXJndW1lbnRzfSwgKCRkZWxldGVBcmd1bWVudCkpOwotICAgICRkZWxldGVGdW5j
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKCRub3RFbnVtZXJhYmxlRXh0ZW5kZWRBdHRyaWJ1dGVM
aXN0KTsKLSAgICAkZGVsZXRlRnVuY3Rpb24tPnR5cGUobWFrZVNpbXBsZVR5cGUoImFueSIpKTsK
LQotICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRhZGRGdW5jdGlvbik7Ci0g
ICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+ZnVuY3Rpb25zfSwgJGNsZWFyRnVuY3Rpb24pOwotICAg
IHB1c2goQHskbmV3RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRkZWxldGVGdW5jdGlvbik7CisgICAg
cHVzaChAeyRkZWxldGVPcGVyYXRpb24tPmFyZ3VtZW50c30sICgkZGVsZXRlQXJndW1lbnQpKTsK
KyAgICAkZGVsZXRlT3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMoJG5vdEVudW1lcmFibGVF
eHRlbmRlZEF0dHJpYnV0ZUxpc3QpOworICAgICRkZWxldGVPcGVyYXRpb24tPnR5cGUobWFrZVNp
bXBsZVR5cGUoImFueSIpKTsKKworICAgIHB1c2goQHskbmV3RGF0YU5vZGUtPm9wZXJhdGlvbnN9
LCAkYWRkT3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwg
JGNsZWFyT3BlcmF0aW9uKTsKKyAgICBwdXNoKEB7JG5ld0RhdGFOb2RlLT5vcGVyYXRpb25zfSwg
JGRlbGV0ZU9wZXJhdGlvbik7CiAKICAgICByZXR1cm4gJG5ld0RhdGFOb2RlOwogfQpAQCAtMjc2
Miw5ICsyNzYyLDkgQEAgc3ViIGFwcGx5TWVtYmVyTGlzdAogICAgICAgICB9CiAgICAgICAgIGlm
IChyZWYoJGl0ZW0pIGVxICJJRExPcGVyYXRpb24iKSB7CiAgICAgICAgICAgICBpZiAoJGl0ZW0t
Pm5hbWUgZXEgIiIpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+YW5vbnlt
b3VzRnVuY3Rpb25zfSwgJGl0ZW0pOworICAgICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNl
LT5hbm9ueW1vdXNPcGVyYXRpb25zfSwgJGl0ZW0pOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBwdXNoKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSwgJGl0ZW0pOworICAg
ICAgICAgICAgICAgIHB1c2goQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSwgJGl0ZW0pOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgbmV4dDsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCShy
ZXZpc2lvbiAyMTc0NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVy
YXRlLWJpbmRpbmdzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsMTcgKzE4MCwxNyBAQCBmb3Jl
YWNoIG15ICRpZGxGaWxlIChAc3VwcGxlbWVudGVkSWRsRmlsCiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICMgU3VwcG9ydCBmb3IgbWV0aG9kcyBvZiBwYXJ0aWFsIGludGVyZmFjZXMuCi0g
ICAgICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9
KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCB1bmxlc3Mgc2hvdWxkUHJvcGVydHlCZUV4cG9zZWQo
JGZ1bmN0aW9uLCBcQHRhcmdldEdsb2JhbENvbnRleHRzKTsKKyAgICAgICAgICAgIGZvcmVhY2gg
bXkgJG9wZXJhdGlvbiAoQHskaW50ZXJmYWNlLT5vcGVyYXRpb25zfSkgeworICAgICAgICAgICAg
ICAgIG5leHQgdW5sZXNzIHNob3VsZFByb3BlcnR5QmVFeHBvc2VkKCRvcGVyYXRpb24sIFxAdGFy
Z2V0R2xvYmFsQ29udGV4dHMpOwogCiAgICAgICAgICAgICAgICAgIyBSZWNvcmQgdGhhdCB0aGlz
IG1ldGhvZCBpcyBpbXBsZW1lbnRlZCBieSAkaW50ZXJmYWNlTmFtZS4KLSAgICAgICAgICAgICAg
ICAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gPSAkaW50
ZXJmYWNlTmFtZSBpZiAkaW50ZXJmYWNlLT5pc1BhcnRpYWw7CisgICAgICAgICAgICAgICAgJG9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSA9ICRpbnRlcmZh
Y2VOYW1lIGlmICRpbnRlcmZhY2UtPmlzUGFydGlhbDsKIAogICAgICAgICAgICAgICAgICMgQWRk
IGludGVyZmFjZS13aWRlIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdG8gZWFjaCBtZXRob2QuCiAgICAg
ICAgICAgICAgICAgZm9yZWFjaCBteSAkZXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIChrZXlzICV7JGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAgICAgICAgICAgICAgICAkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRlbmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4dGVuZGVkQXR0cmlidXRlTmFtZX07Cisg
ICAgICAgICAgICAgICAgICAgICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyRleHRl
bmRlZEF0dHJpYnV0ZU5hbWV9ID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV4
dGVuZGVkQXR0cmlidXRlTmFtZX07CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IHB1c2goQHskdGFyZ2V0RGF0YU5vZGUtPmZ1bmN0aW9uc30sICRmdW5jdGlvbik7CisgICAgICAg
ICAgICAgICAgcHVzaChAeyR0YXJnZXREYXRhTm9kZS0+b3BlcmF0aW9uc30sICRvcGVyYXRpb24p
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAjIFN1cHBvcnQgZm9yIGNvbnN0YW50cyBv
ZiBwYXJ0aWFsIGludGVyZmFjZXMuCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTc0NDMpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNS0yNSAgU2FtIFdlaW5pZyAg
PHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIFVzZSB0aGUgdGVybSAnb3BlcmF0
aW9uJyBtb3JlIGNvbnNpc3RlbnRseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyNjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyB0aGUgdGVybSAnb3BlcmF0aW9uJywgYSBXZWJJ
REwgdGVybSBmb3IgZnVuY3Rpb24tbGlrZQorICAgICAgICBjb25zdHJ1Y3RzLCBpbmNvbnNpc3Rl
bnRseSBpbiB0aGUgY29kZSBnZW5lcmF0b3IuIE5vdywgd2hlbiB3ZSB1c2UKKyAgICAgICAgJ29w
ZXJhdGlvbicgd2hlbiByZWZlcnJpbmcgdG8gdGhlIElETCBjb25jZXB0ICh1c3VhbGx5IHRoZSBv
YmplY3QgdGhlCisgICAgICAgIHBhcnNlciBwcm9kdWNlcykgYW5kICdmdW5jdGlvbicgd2hlbiBy
ZWZlcnJpbmcgdG8gY29kZSBiZWluZyBnZW5lcmF0ZWQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yRHVtcFJlbmRlclRyZWUucG06CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVz
dFJ1bm5lci5wbToKKwogMjAxNy0wNS0yNSAgSm9hbm1hcmllIERpZ2dzICA8amRpZ2dzQGlnYWxp
YS5jb20+CiAKICAgICAgICAgW0FUS10gRXhwb3NlIGRvYy1mb290bm90ZSBBUklBIHJvbGUgd2l0
aCBBVEtfUk9MRV9GT09UTk9URQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvQmluZGluZ3Mv
Q29kZUdlbmVyYXRvckR1bXBSZW5kZXJUcmVlLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JEdW1wUmVuZGVyVHJlZS5wbQkocmV2aXNp
b24gMjE3NDQzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQmluZGluZ3MvQ29kZUdlbmVyYXRv
ckR1bXBSZW5kZXJUcmVlLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsMTAgKzE3MywxMCBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZXMoKTsK
IEVPRgogCi0gICAgaWYgKG15IEBmdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30p
IHsKKyAgICBpZiAobXkgQG9wZXJhdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7
CiAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4gICAgLy8gRnVuY3Rpb25zXG5cbiIpOwotICAg
ICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgcHVz
aChAY29udGVudHMsICIgICAgc3RhdGljIEpTVmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5uYW1lXX0o
SlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNW
YWx1ZVJlZltdLCBKU1ZhbHVlUmVmKik7XG4iKTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0
aW9uIChAb3BlcmF0aW9ucykgeworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3Rh
dGljIEpTVmFsdWVSZWYgQHtbJG9wZXJhdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJl
ZiopO1xuIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI2NCwxMyArMjY0LDEzIEBAIEVPRgog
ICAgIHB1c2goQGNvbnRlbnRzLCAkc2VsZi0+X3N0YXRpY0Z1bmN0aW9uc0dldHRlckltcGxlbWVu
dGF0aW9uKCRpbnRlcmZhY2UpLCAiXG4iKTsKICAgICBwdXNoKEBjb250ZW50cywgJHNlbGYtPl9z
dGF0aWNWYWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlKSk7CiAKLSAgICBpZiAo
bXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgeworICAgIGlmIChteSBA
b3BlcmF0aW9ucyA9IEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgcHVzaChA
Y29udGVudHMsICJcbi8vIEZ1bmN0aW9uc1xuIik7CiAKLSAgICAgICAgZm9yZWFjaCBteSAkZnVu
Y3Rpb24gKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3Bl
cmF0aW9ucykgewogICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKIAotSlNWYWx1
ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK0pTVmFsdWVSZWYgJHtjbGFzc05hbWV9OjpAe1skb3BlcmF0aW9uLT5uYW1lXX0oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgICR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0g
dG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfShjb250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBp
ZiAoIWltcGwpCkBAIC0yNzgsMTUgKzI3OCwxNSBAQCBKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6
QHtbJGZ1bmN0aW9uLT5uCiAKIEVPRgogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2FsbDsKLSAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1
bWVudEhhbmRsaW5nIn0pIHsKLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwt
PiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50
cywgZXhjZXB0aW9uKSI7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgeworICAgICAgICAgICAgICAgICRm
dW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAuICRvcGVyYXRpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFy
Z3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgICAgICBt
eSBAc3BlY2lmaWVkQXJndW1lbnRzID0gQHskZnVuY3Rpb24tPmFyZ3VtZW50c307CisgICAgICAg
ICAgICAgICAgbXkgQHNwZWNpZmllZEFyZ3VtZW50cyA9IEB7JG9wZXJhdGlvbi0+YXJndW1lbnRz
fTsKIAotICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0lu
Y2x1ZGVzLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVk
ZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkb3BlcmF0aW9uLT50eXBlKTsKIAotICAgICAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29udGV4
dCJ9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJQYXNzQ29udGV4dCJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgImNvbnRleHQiKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTMwMCwxMSArMzAwLDExIEBA
IEVPRgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICRzZWxmLT5fYXJndW1l
bnRFeHByZXNzaW9uKCRhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgICRmdW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAuICRmdW5jdGlvbi0+bmFtZSAuICIoIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
Q2FsbCA9ICJpbXBsLT4iIC4gJG9wZXJhdGlvbi0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKSI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHB1c2goQGNvbnRlbnRzLCAiICAgICR7ZnVuY3Rpb25DYWxsfTtcblxuIikgaWYgJGZ1bmN0aW9u
LT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAg
IHJldHVybiAiIC4gJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+dHlwZSwgJGZ1
bmN0aW9uQ2FsbCkgLiAiO1xufVxuIik7CisgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAg
ICAke2Z1bmN0aW9uQ2FsbH07XG5cbiIpIGlmICRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZv
aWQiOworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgcmV0dXJuICIgLiAkc2VsZi0+
X3JldHVybkV4cHJlc3Npb24oJG9wZXJhdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xu
fVxuIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUxMiwxMiArNTEyLDEyIEBAIHN1YiBfc3Rh
dGljRnVuY3Rpb25zR2V0dGVySW1wbGVtZW50YXRpb24KICAgICAgICAgcmV0dXJuICAieyBcIiRu
YW1lXCIsICRuYW1lLCAiIC4gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIC4gIiB9IjsKICAgICB9
OwogCi0gICAgcmV0dXJuICRzZWxmLT5fc3RhdGljRnVuY3Rpb25zT3JWYWx1ZXNHZXR0ZXJJbXBs
ZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAiZnVuY3Rpb24iLCAieyAwLCAwLCAwIH0iLCAkbWFwRnVu
Y3Rpb24sICRpbnRlcmZhY2UtPmZ1bmN0aW9ucyk7CisgICAgcmV0dXJuICRzZWxmLT5fc3RhdGlj
RnVuY3Rpb25zT3JWYWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAiZnVuY3Rp
b24iLCAieyAwLCAwLCAwIH0iLCAkbWFwRnVuY3Rpb24sICRpbnRlcmZhY2UtPm9wZXJhdGlvbnMp
OwogfQogCiBzdWIgX3N0YXRpY0Z1bmN0aW9uc09yVmFsdWVzR2V0dGVySW1wbGVtZW50YXRpb24K
IHsKLSAgICBteSAoJHNlbGYsICRpbnRlcmZhY2UsICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRl
cm1pbmF0b3IsICRtYXBGdW5jdGlvbiwgJGZ1bmN0aW9uc09yQXR0cmlidXRlcykgPSBAXzsKKyAg
ICBteSAoJHNlbGYsICRpbnRlcmZhY2UsICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRlcm1pbmF0
b3IsICRtYXBGdW5jdGlvbiwgJG9wZXJhdGlvbnNPckF0dHJpYnV0ZXMpID0gQF87CiAKICAgICBt
eSAkY2xhc3NOYW1lID0gX2NsYXNzTmFtZSgkaW50ZXJmYWNlLT50eXBlKTsKICAgICBteSAkdXBw
ZXJjYXNlRnVuY3Rpb25PclZhbHVlID0gJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5XS191Y2ZpcnN0
KCRmdW5jdGlvbk9yVmFsdWUpOwpAQCAtNTI3LDcgKzUyNyw3IEBAIGNvbnN0IEpTU3RhdGljJHt1
cHBlcmNhc2VGdW5jdGlvbk9yVmFsdWUKIHsKIEVPRgogCi0gICAgbXkgQGluaXRpYWxpemVycyA9
IG1hcCgmJG1hcEZ1bmN0aW9uLCBAeyRmdW5jdGlvbnNPckF0dHJpYnV0ZXN9KTsKKyAgICBteSBA
aW5pdGlhbGl6ZXJzID0gbWFwKCYkbWFwRnVuY3Rpb24sIEB7JG9wZXJhdGlvbnNPckF0dHJpYnV0
ZXN9KTsKICAgICByZXR1cm4gJHJlc3VsdCAuICIgICAgcmV0dXJuIDA7XG59XG4iIHVubGVzcyBA
aW5pdGlhbGl6ZXJzOwogCiAgICAgJHJlc3VsdCAuPSA8PEVPRgpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9Db2RlR2VuZXJhdG9yVGVzdFJ1bm5l
ci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0JpbmRpbmdzL0NvZGVHZW5lcmF0b3JUZXN0UnVubmVyLnBtCShyZXZpc2lvbiAyMTc0NDMpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0NvZGVHZW5l
cmF0b3JUZXN0UnVubmVyLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsMTAgKzE4NywxMCBAQCBw
cml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBKU1N0YXRpY1ZhbHVlKiBzdGF0aWNWYWx1ZXMoKTsK
IEVPRgogCi0gICAgaWYgKG15IEBmdW5jdGlvbnMgPSBAeyRpbnRlcmZhY2UtPmZ1bmN0aW9uc30p
IHsKKyAgICBpZiAobXkgQG9wZXJhdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9KSB7
CiAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiXG4gICAgLy8gRnVuY3Rpb25zXG5cbiIpOwotICAg
ICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1bmN0aW9ucykgewotICAgICAgICAgICAgcHVz
aChAY29udGVudHMsICIgICAgc3RhdGljIEpTVmFsdWVSZWYgQHtbJGZ1bmN0aW9uLT5uYW1lXX0o
SlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCwgY29uc3QgSlNW
YWx1ZVJlZltdLCBKU1ZhbHVlUmVmKik7XG4iKTsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0
aW9uIChAb3BlcmF0aW9ucykgeworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgc3Rh
dGljIEpTVmFsdWVSZWYgQHtbJG9wZXJhdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiwgSlNPYmpl
Y3RSZWYsIEpTT2JqZWN0UmVmLCBzaXplX3QsIGNvbnN0IEpTVmFsdWVSZWZbXSwgSlNWYWx1ZVJl
ZiopO1xuIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI3OCwxMyArMjc4LDEzIEBAIEVPRgog
ICAgIHB1c2goQGNvbnRlbnRzLCAkc2VsZi0+X3N0YXRpY0Z1bmN0aW9uc0dldHRlckltcGxlbWVu
dGF0aW9uKCRpbnRlcmZhY2UpLCAiXG4iKTsKICAgICBwdXNoKEBjb250ZW50cywgJHNlbGYtPl9z
dGF0aWNWYWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlKSk7CiAKLSAgICBpZiAo
bXkgQGZ1bmN0aW9ucyA9IEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgeworICAgIGlmIChteSBA
b3BlcmF0aW9ucyA9IEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc30pIHsKICAgICAgICAgcHVzaChA
Y29udGVudHMsICJcbi8vIEZ1bmN0aW9uc1xuIik7CiAKLSAgICAgICAgZm9yZWFjaCBteSAkZnVu
Y3Rpb24gKEBmdW5jdGlvbnMpIHsKKyAgICAgICAgZm9yZWFjaCBteSAkb3BlcmF0aW9uIChAb3Bl
cmF0aW9ucykgewogICAgICAgICAgICAgcHVzaChAY29udGVudHMsIDw8RU9GKTsKIAotSlNWYWx1
ZVJlZiAke2NsYXNzTmFtZX06OkB7WyRmdW5jdGlvbi0+bmFtZV19KEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK0pTVmFsdWVSZWYgJHtjbGFzc05hbWV9OjpAe1skb3BlcmF0aW9uLT5uYW1lXX0oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgICR7aW1wbGVtZW50YXRpb25DbGFzc05hbWV9KiBpbXBsID0g
dG8ke2ltcGxlbWVudGF0aW9uQ2xhc3NOYW1lfShjb250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBp
ZiAoIWltcGwpCkBAIC0yOTIsMTUgKzI5MiwxNSBAQCBKU1ZhbHVlUmVmICR7Y2xhc3NOYW1lfTo6
QHtbJGZ1bmN0aW9uLT5uCiAKIEVPRgogICAgICAgICAgICAgbXkgJGZ1bmN0aW9uQ2FsbDsKLSAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21Bcmd1
bWVudEhhbmRsaW5nIn0pIHsKLSAgICAgICAgICAgICAgICAkZnVuY3Rpb25DYWxsID0gImltcGwt
PiIgLiAkZnVuY3Rpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50
cywgZXhjZXB0aW9uKSI7CisgICAgICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkN1c3RvbUFyZ3VtZW50SGFuZGxpbmcifSkgeworICAgICAgICAgICAgICAgICRm
dW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAuICRvcGVyYXRpb24tPm5hbWUgLiAiKGNvbnRleHQsIGFy
Z3VtZW50Q291bnQsIGFyZ3VtZW50cywgZXhjZXB0aW9uKSI7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIG15IEBhcmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgICAgICBt
eSBAc3BlY2lmaWVkQXJndW1lbnRzID0gQHskZnVuY3Rpb24tPmFyZ3VtZW50c307CisgICAgICAg
ICAgICAgICAgbXkgQHNwZWNpZmllZEFyZ3VtZW50cyA9IEB7JG9wZXJhdGlvbi0+YXJndW1lbnRz
fTsKIAotICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVkZUhlYWRlcnMoXCVjb250ZW50c0lu
Y2x1ZGVzLCAkZnVuY3Rpb24tPnR5cGUpOworICAgICAgICAgICAgICAgICRzZWxmLT5faW5jbHVk
ZUhlYWRlcnMoXCVjb250ZW50c0luY2x1ZGVzLCAkb3BlcmF0aW9uLT50eXBlKTsKIAotICAgICAg
ICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQYXNzQ29udGV4
dCJ9KSB7CisgICAgICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJQYXNzQ29udGV4dCJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgImNvbnRleHQiKTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTMxNCwxMSArMzE0LDExIEBA
IEVPRgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICRzZWxmLT5fYXJndW1l
bnRFeHByZXNzaW9uKCRhcmd1bWVudCkpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgICAgICRmdW5jdGlvbkNhbGwgPSAiaW1wbC0+IiAuICRmdW5jdGlvbi0+bmFtZSAuICIoIiAu
IGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CisgICAgICAgICAgICAgICAgJGZ1bmN0aW9u
Q2FsbCA9ICJpbXBsLT4iIC4gJG9wZXJhdGlvbi0+bmFtZSAuICIoIiAuIGpvaW4oIiwgIiwgQGFy
Z3VtZW50cykgLiAiKSI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHB1c2goQGNvbnRlbnRzLCAiICAgICR7ZnVuY3Rpb25DYWxsfTtcblxuIikgaWYgJGZ1bmN0aW9u
LT50eXBlLT5uYW1lIGVxICJ2b2lkIjsKLSAgICAgICAgICAgIHB1c2goQGNvbnRlbnRzLCAiICAg
IHJldHVybiAiIC4gJHNlbGYtPl9yZXR1cm5FeHByZXNzaW9uKCRmdW5jdGlvbi0+dHlwZSwgJGZ1
bmN0aW9uQ2FsbCkgLiAiO1xufVxuIik7CisgICAgICAgICAgICBwdXNoKEBjb250ZW50cywgIiAg
ICAke2Z1bmN0aW9uQ2FsbH07XG5cbiIpIGlmICRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZv
aWQiOworICAgICAgICAgICAgcHVzaChAY29udGVudHMsICIgICAgcmV0dXJuICIgLiAkc2VsZi0+
X3JldHVybkV4cHJlc3Npb24oJG9wZXJhdGlvbi0+dHlwZSwgJGZ1bmN0aW9uQ2FsbCkgLiAiO1xu
fVxuIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUyNiwxMiArNTI2LDEyIEBAIHN1YiBfc3Rh
dGljRnVuY3Rpb25zR2V0dGVySW1wbGVtZW50YXRpb24KICAgICAgICAgcmV0dXJuICAieyBcIiRu
YW1lXCIsICRuYW1lLCAiIC4gam9pbigiIHwgIiwgQGF0dHJpYnV0ZXMpIC4gIiB9IjsKICAgICB9
OwogCi0gICAgcmV0dXJuICRzZWxmLT5fc3RhdGljRnVuY3Rpb25zT3JWYWx1ZXNHZXR0ZXJJbXBs
ZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAiZnVuY3Rpb24iLCAieyAwLCAwLCAwIH0iLCAkbWFwRnVu
Y3Rpb24sICRpbnRlcmZhY2UtPmZ1bmN0aW9ucyk7CisgICAgcmV0dXJuICRzZWxmLT5fc3RhdGlj
RnVuY3Rpb25zT3JWYWx1ZXNHZXR0ZXJJbXBsZW1lbnRhdGlvbigkaW50ZXJmYWNlLCAiZnVuY3Rp
b24iLCAieyAwLCAwLCAwIH0iLCAkbWFwRnVuY3Rpb24sICRpbnRlcmZhY2UtPm9wZXJhdGlvbnMp
OwogfQogCiBzdWIgX3N0YXRpY0Z1bmN0aW9uc09yVmFsdWVzR2V0dGVySW1wbGVtZW50YXRpb24K
IHsKLSAgICBteSAoJHNlbGYsICRpbnRlcmZhY2UsICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRl
cm1pbmF0b3IsICRtYXBGdW5jdGlvbiwgJGZ1bmN0aW9uc09yQXR0cmlidXRlcykgPSBAXzsKKyAg
ICBteSAoJHNlbGYsICRpbnRlcmZhY2UsICRmdW5jdGlvbk9yVmFsdWUsICRhcnJheVRlcm1pbmF0
b3IsICRtYXBGdW5jdGlvbiwgJG9wZXJhdGlvbnNPckF0dHJpYnV0ZXMpID0gQF87CiAKICAgICBt
eSAkY2xhc3NOYW1lID0gX2NsYXNzTmFtZSgkaW50ZXJmYWNlLT50eXBlKTsKICAgICBteSAkdXBw
ZXJjYXNlRnVuY3Rpb25PclZhbHVlID0gJCRzZWxme2NvZGVHZW5lcmF0b3J9LT5XS191Y2ZpcnN0
KCRmdW5jdGlvbk9yVmFsdWUpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIGNvbnN0IEpTU3RhdGljJHt1
cHBlcmNhc2VGdW5jdGlvbk9yVmFsdWUKIHsKIEVPRgogCi0gICAgbXkgQGluaXRpYWxpemVycyA9
IG1hcCgmJG1hcEZ1bmN0aW9uLCBAeyRmdW5jdGlvbnNPckF0dHJpYnV0ZXN9KTsKKyAgICBteSBA
aW5pdGlhbGl6ZXJzID0gbWFwKCYkbWFwRnVuY3Rpb24sIEB7JG9wZXJhdGlvbnNPckF0dHJpYnV0
ZXN9KTsKICAgICByZXR1cm4gJHJlc3VsdCAuICIgICAgcmV0dXJuIDA7XG59XG4iIHVubGVzcyBA
aW5pdGlhbGl6ZXJzOwogCiAgICAgJHJlc3VsdCAuPSA8PEVPRgo=
</data>
<flag name="review"
          id="332272"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>