<?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>65731</bug_id>
          
          <creation_ts>2011-08-04 16:05:32 -0700</creation_ts>
          <short_desc>Add ParentClass typedef in all JSC classes</short_desc>
          <delta_ts>2011-08-09 13:46:39 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>barraclough</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>446870</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-04 16:05:32 -0700</bug_when>
    <thetext>Eventually we&apos;d like to get rid of the vtable pointer in all of the JSC classes and use explicit super class calls for all inherited methods.  To make that future task simpler (and more template-able), it would be a good idea to add a typedef to each class by which we can uniformly refer to its parent class in the inheritance hierarhcy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447390</commentid>
    <comment_count>1</comment_count>
      <attachid>103100</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-05 13:41:34 -0700</bug_when>
    <thetext>Created attachment 103100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447424</commentid>
    <comment_count>2</comment_count>
      <attachid>103115</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-05 14:33:00 -0700</bug_when>
    <thetext>Created attachment 103115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447772</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-08-07 13:55:17 -0700</bug_when>
    <thetext>Hi Mark,

Did you want this patch reviewing, or is this still work in progress? - the review flag isn&apos;t set &amp; it&apos;s unclear from the description.

G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448004</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-08 08:21:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Hi Mark,
&gt; 
&gt; Did you want this patch reviewing, or is this still work in progress? - the review flag isn&apos;t set &amp; it&apos;s unclear from the description.
&gt; 
&gt; G.

Still trying to get Windows to build.  Getting some mysterious template-related errors on just Windows :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448357</commentid>
    <comment_count>5</comment_count>
      <attachid>103312</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-08-08 16:41:44 -0700</bug_when>
    <thetext>Created attachment 103312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448741</commentid>
    <comment_count>6</comment_count>
      <attachid>103312</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-08-09 12:44:58 -0700</bug_when>
    <thetext>Comment on attachment 103312
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448767</commentid>
    <comment_count>7</comment_count>
      <attachid>103312</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-09 13:46:34 -0700</bug_when>
    <thetext>Comment on attachment 103312
Patch

Clearing flags on attachment: 103312

Committed r92706: &lt;http://trac.webkit.org/changeset/92706&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448768</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-09 13:46:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103100</attachid>
            <date>2011-08-05 13:41:34 -0700</date>
            <delta_ts>2011-08-05 14:32:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65731-20110805134132.patch</filename>
            <type>text/plain</type>
            <size>75633</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI0OTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTEtMDgtMDUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgUGFyZW50Q2xhc3MgdHlwZWRlZiBpbiBhbGwgSlNDIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzMxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBhZGRlZCB0aGUg
QmFzZSB0eXBlZGVmcyBpbiBhbGwgdGhlIGNsYXNzZXMgdGhhdCBhcmUgYSBzdWJjbGFzcyBvZiBK
U0NlbGwgCisgICAgICAgIHRvIHBvaW50IGF0IHRoZWlyIHBhcmVudCBjbGFzc2VzLiAgVGhpcyBp
cyBhIGNoYW5nZSB0byBzdXBwb3J0IGZ1dHVyZSBjaGFuZ2VzIHRvIHRoZSB3YXkKKyAgICAgICAg
Y29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgaW1wbGVtZW50ZWQgaW4gSlMgb2JqZWN0
cy4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9FcnJvci5jcHA6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9F
cnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU05vdEFuT2JqZWN0OjpKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05P
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAg
ICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1dyYXBw
ZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2
ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAg
ICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oOgorCiAyMDExLTA4LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDU3RyaW5nQnVmZmVyIHNob3VsZCBoYXZlIHRocmVhZCBzYWZldHkgY2hlY2tz
IHR1cm5lZCBvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA5MjQ4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiAr
MTQ4LDggQEAgcHJpdmF0ZToKICAgICBHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKiwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpOwogCiBwdWJsaWM6CisgICAg
dHlwZWRlZiBKU0dsb2JhbE9iamVjdCBCYXNlOworCiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCog
Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
OTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yIDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdCB7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNh
bGxiYWNrKTsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBC
YXNlOworCiAgICAgc3RhdGljIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFj
ayBjYWxsYmFjaykgCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlND
YWxsYmFja0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0NvbnN0cnVjdG9y
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgY2FsbGJhY2spOwpAQCAtNTEsNiAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6CisgICAgSlNDYWxsYmFja0NvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgSlNPYmplY3RD
YWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU09iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNDYWxsYmFja0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKTsKIAogcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOworCiAgICAgc3RhdGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhl
YXAoKSkpIEpTQ2FsbGJhY2tGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBu
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVidWdnZXJBY3RpdmF0aW9u
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIERlYnVnZ2VyQWN0aXZh
dGlvbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVjdCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPERlYnVnZ2Vy
QWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgRGVidWdnZXJBY3RpdmF0aW9uKGdsb2JhbERh
dGEsIG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEFyZ3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAgICAg
ICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2FsbEZy
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQXJyYXlQcm90b3R5cGU7CiAKICAgICBjbGFz
cyBBcnJheUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewotICAgIHByaXZh
dGU6Ci0gICAgICAgIEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBBcnJheVByb3RvdHlwZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Cisg
ICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgICAgIHN0YXRpYyBB
cnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFyclBy
b3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEFycmF5Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcnJQcm90b3R5cGUpOwpAQCAtNDgsNiArNDgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgorICAgICAgICBBcnJheUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlQcm90b3R5cGUq
KTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXJyYXlQcm90b3R5cGUoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBK
U0FycmF5IEJhc2U7CisKICAgICAgICAgc3RhdGljIEFycmF5UHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEFycmF5UHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgQXJyYXlQcm90b3R5cGUoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDE2ICsyOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBCb29sZWFuUHJv
dG90eXBlOwogCiAgICAgY2xhc3MgQm9vbGVhbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJvb2xlYW5Qcm90b3R5cGUqKTsK
LSAgICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKKwogICAgICAgICBzdGF0aWMgQm9vbGVhbkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbFByb3RvdHlwZSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgYm9vbFByb3RvdHlwZSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIEJv
b2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEJvb2xlYW5Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCb29sZWFuT2JqZWN0KEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IEpTV3JhcHBlck9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBCb29sZWFuT2JqZWN0KiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5PYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEJvb2xlYW5PYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCb29sZWFuUHJvdG90eXBlIDogcHVibGljIEJv
b2xlYW5PYmplY3QgewotICAgIHByaXZhdGU6Ci0gICAgICAgIEJvb2xlYW5Qcm90b3R5cGUoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKLQogICAgIHB1YmxpYzoKKyAg
ICAgICAgdHlwZWRlZiBCb29sZWFuT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIEJvb2xl
YW5Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwpAQCAtNDcs
NiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEFub255bW91c1Nsb3RDb3VudCA9IEJvb2xlYW5PYmplY3Q6OkFub255bW91c1Nsb3RDb3VudCAr
IDE7CiAKICAgICBwcml2YXRlOgorICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIERhdGVQcm90b3R5cGU7CiAKICAgICBjbGFzcyBEYXRlQ29uc3Ry
dWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAg
RGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RGF0ZVByb3RvdHlwZSopOwotICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgICAgIHN0YXRpYyBEYXRlQ29uc3RydWN0b3Iq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgRGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBkYXRlUHJvdG90eXBlKTsKQEAgLTQ4LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRGF0ZVByb3RvdHlwZSopOwogICAgICAgICB2aXJ0dWFs
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAg
IHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDkyNDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgor
ICAgICAgICB0eXBlZGVmIEpTV3JhcHBlck9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBE
YXRlSW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBkb3VibGUgZGF0ZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPERhdGVJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIERhdGVJbnN0YW5jZShleGVjLCBz
dHJ1Y3R1cmUsIGRhdGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRl
ZiBEYXRlSW5zdGFuY2UgQmFzZTsKKwogICAgICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxEYXRlUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZVByb3RvdHlwZShleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw4IEBAIHBy
aXZhdGU6CiAgICAgfQogCiBwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJh
c2U7CisKICAgICBzdGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIG1lc3NhZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDE2ICsyOSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFcnJvclByb3RvdHlwZTsK
IAogICAgIGNsYXNzIEVycm9yQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVycm9yUHJvdG90eXBlKik7Ci0KICAgICBwdWJsaWM6
CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgICAgIHN0YXRp
YyBFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVy
clByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBFcnJvckNvbnN0cnVjdG9yKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJQcm90b3R5cGUpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CisgICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFcnJvclByb3RvdHlwZSopOwogICAgICAg
ICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7
CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBFcnJvckluc3RhbmNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisK
ICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgT2JqZWN0UHJvdG90eXBlOwogCiAgICAg
Y2xhc3MgRXJyb3JQcm90b3R5cGUgOiBwdWJsaWMgRXJyb3JJbnN0YW5jZSB7Ci0gICAgcHJvdGVj
dGVkOgotICAgICAgICBFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEVycm9ySW5zdGFu
Y2UgQmFzZTsKKwogICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXJy
b3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CkBAIC00NSw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEVy
cm9ySW5zdGFuY2U6OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgQW5vbnltb3VzU2xvdENvdW50ID0gRXJyb3JJbnN0YW5jZTo6QW5vbnltb3VzU2xvdENvdW50
ICsgMTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDggQEAgcHJpdmF0ZToKICAgICB9CiAKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I+KGdsb2JhbERhdGEuaGVh
cCkpIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7CkBAIC03Miw2ICs3NCw4
IEBAIHByaXZhdGU6CiAgICAgfQogCiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisKICAgICBzdGF0aWMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yKGdsb2JhbERhdGEpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDYgKzY2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHVi
bGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBFeGVj
dXRhYmxlQmFzZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludCBudW1QYXJhbWV0ZXJzKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXhlY3V0YWJsZUJhc2U+KGdsb2JhbERhdGEuaGVhcCkpIEV4
ZWN1dGFibGVCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbnVtUGFyYW1ldGVycyk7CkBAIC0x
NjgsNiArMTcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJs
ZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CisKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNhbGxUaHVuaywgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb25zdHJ1Y3RUaHVu
aywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsKQEAgLTIxOSw2ICsyMjMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJs
aWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBFeGVjdXRh
YmxlQmFzZSBCYXNlOworCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKICAgICAg
ICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQpAQCAtMjc3LDYgKzI4Myw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJs
ZSB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsK
IAogICAgICAgICB+RXZhbEV4ZWN1dGFibGUoKTsKIApAQCAtMzI2LDYgKzMzMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFi
bGUgQmFzZTsKKwogICAgICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFByb2dyYW1FeGVjdXRhYmxlPigqZXhlYy0+
aGVhcCgpKSkgUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKQEAgLTM3OSw2ICszODgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVi
bGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKKwogICAgICAgICBz
dGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2Vz
QXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMt
PmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNl
c0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFz
dExpbmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDE2ICsyOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7Ci0g
ICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsK
KwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGZ1bmNQcm90b3R5cGUpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RnVuY3Rpb25Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gOTI0ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKLSAgICBwcml2
YXRlOgotICAgICAgICBGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlw
ZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkBAIC00Myw2ICs0Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAg
ICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlz
aW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAg
ICAgICBzdGF0aWMgR2V0dGVyU2V0dGVyKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0dGVyPigq
ZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gOTI0ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiAg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNl
OworCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAkocmV2
aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVl
V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTQVBJVmFsdWVXcmFwcGVyIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
IGZyaWVuZCBKU1ZhbHVlIGpzQVBJVmFsdWVXcmFwcGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwog
ICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBKU1Zh
bHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZp
c2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBSZWdpc3RlcjsKICAgICAKICAgICBjbGFzcyBKU0FjdGl2YXRpb24gOiBwdWJsaWMg
SlNWYXJpYWJsZU9iamVjdCB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBKU1Zhcmlh
YmxlT2JqZWN0IEJhc2U7Ci0gICAgICAgIEpTQWN0aXZhdGlvbihDYWxsRnJhbWUqLCBGdW5jdGlv
bkV4ZWN1dGFibGUqKTsKLSAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNWYXJp
YWJsZU9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU0FjdGl2YXRpb24qIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmNFeGVjKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8SlNBY3RpdmF0aW9uPihnbG9iYWxEYXRhLmhlYXApKSBKU0FjdGl2YXRpb24o
Y2FsbEZyYW1lLCBmdW5jRXhlYyk7CkBAIC03OSw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25t
ZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CisgICAgICAgIEpTQWN0aXZhdGlvbihDYWxs
RnJhbWUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqKTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdl
dChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAg
ICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBi
b29sJiBzbG90SXNXcml0ZWFibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpTQXJyYXkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3Qg
QXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7CiAgICAgICAgIAogICAgIHB1YmxpYzoKKyAgICAgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgSlNBcnJheShWUHRyU3Rl
YWxpbmdIYWNrVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gOTI0ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDEzICs0NiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIERGRzo6SklUQ29kZUdlbmVyYXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xv
YmFsRGF0YTsKIAotICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNl
OwotCiAgICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwog
ICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgaW50IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAg
ICAgICAgSlNGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNo
YWluTm9kZSopOwogICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlRnVuYykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgsIGlkZW50LCBuYXRpdmVGdW5jKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUsNiArMTc1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU1Zhcmlh
YmxlT2JqZWN0IEJhc2U7CisKICAgICAgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3QoKTsKIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkocmV2aXNp
b24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEzICszNyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IC8vIGluIGNlcnRhaW4gU3F1aXJyZWxGaXNoIGJ5dGVjb2RlcyAtLSBlZmZlY3RpdmVseSBpdCBq
dXN0IHNpbGVudGx5IGNvbnN1bWVzCiAgICAgLy8gYW55IG9wZXJhdGlvbnMgcGVyZm9ybWVkIG9u
IHRoZSByZXN1bHQgb2YgYSBmYWlsZWQgdG9PYmplY3QgY2FsbC4KICAgICBjbGFzcyBKU05vdEFu
T2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotICAgIHByaXZhdGU6Ci0gICAgICAg
IEpTTm90QW5PYmplY3QoRXhlY1N0YXRlKiBleGVjKQotICAgICAgICAgICAgOiBKU05vbkZpbmFs
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLm5vdEFuT2JqZWN0
U3RydWN0dXJlLmdldCgpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgcHVi
bGljOgorICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKwogICAgICAgICBz
dGF0aWMgSlNOb3RBbk9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTTm90QW5PYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBKU05vdEFuT2JqZWN0KGV4ZWMpOwpAQCAtNTUsNiArNTEsMTAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICBwcml2YXRlOgorICAgICAgICBKU05vdEFuT2Jq
ZWN0KEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgICAgIDogSlNOb25GaW5hbE9iamVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5ub3RBbk9iamVjdFN0cnVjdHVyZS5n
ZXQoKSkKKyAgICAgICAgeworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCShyZXZp
c2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgU3RyaW5naWZpZXI7CiAKICAgICBjbGFzcyBKU09OT2JqZWN0IDogcHVibGljIEpTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdCB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNPTk9iamVjdChK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBl
ZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU09O
T2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPEpTT05PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU09OT2JqZWN0
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKQEAgLTUzLDYgKzUyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
KTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgZnJpZW5kIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhpc09iaiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpOwogCiAg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7CiAKQEAgLTMzMiw2ICsz
MzQsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKU09iamVjdDsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBK
U09iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90
eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7CkBAIC0zNjAsNiArMzY0LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7CiAKICAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNPYmplY3QgQmFzZTsKKwogICAgICAgICBleHBs
aWNpdCBKU0ZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQogICAgICAgICAgICAgOiBK
U09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
V2l0aEdsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0V2l0aEdsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCw2ICszNCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogCiBjbGFzcyBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CisgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3Rv
LCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91c1Nsb3RDb3Vu
dCwgJnNfaW5mbyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
KwogICAgICAgICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0
ZSosIEpTT2JqZWN0Kik7CiAgICAgICAgIHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFt
ZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpCiAgICAgICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2JqZWN0
LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dGF0aWNTY29wZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVz
cGFjZSBKU0N7CiAgICAgCiAgICAgY2xhc3MgSlNTdGF0aWNTY29wZU9iamVjdCA6IHB1YmxpYyBK
U1ZhcmlhYmxlT2JqZWN0IHsKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNWYXJpYWJs
ZU9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU1N0YXRpY1Njb3BlT2JqZWN0KiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgSlNWYWx1ZSB2YWx1
ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEpTU3RhdGljU2NvcGVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU1N0
YXRpY1Njb3BlT2JqZWN0KGV4ZWMsIGlkZW50LCB2YWx1ZSwgYXR0cmlidXRlcyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDkyNDgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtNjYsNiArNjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IFNwZWNpYWxpemVkVGh1bmtKSVQ7CiAgICAgICAgIGZyaWVuZCBzdHJ1Y3QgVGh1bmtIZWxwZXJz
OwogCisgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAgICAgICAgY2xhc3MgUm9wZUJ1
aWxkZXIgewogICAgICAgICBwdWJsaWM6CiAgICAgICAgICAgICBSb3BlQnVpbGRlcih1bnNpZ25l
ZCBmaWJlckNvdW50KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAKICAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAgICAg
ICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIGNvbnN0IHsgcmV0dXJuICptX3N5bWJvbFRh
YmxlOyB9CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBKU1ZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKSA9IDA7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1dyYXBwZXJPYmpl
Y3QuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1dyYXBwZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGFzIGEgYmFzZSBmb3IgY2xhc3Nl
cyBzdWNoIGFzIFN0cmluZywKICAgICAvLyBOdW1iZXIsIEJvb2xlYW4gYW5kIERhdGUgd2hpY2gg
YXJlIHdyYXBwZXJzIGZvciBwcmltaXRpdmUgdHlwZXMuCiAgICAgY2xhc3MgSlNXcmFwcGVyT2Jq
ZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotICAgIHByb3RlY3RlZDoKLSAgICAgICAg
ZXhwbGljaXQgSlNXcmFwcGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwotCiAg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKwogICAg
ICAgICBKU1ZhbHVlIGludGVybmFsVmFsdWUoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRJbnRl
cm5hbFZhbHVlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUpOwogCkBAIC00Miw2ICs0MSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIGV4cGxp
Y2l0IEpTV3JhcHBlck9iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiB8IEpTTm9uRmluYWxPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHJldmlz
aW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBNYXRoT2JqZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAK
ICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJh
c2U7CisKICAgICAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TWF0aE9iamVjdD4o
KmV4ZWMtPmhlYXAoKSkpIE1hdGhPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDEwICszMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE5hdGl2ZUVycm9yUHJv
dG90eXBlOwogCiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiBw
cm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKLQogICAgIHB1YmxpYzoKKyAgICAg
ICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKICAgICAgICAgc3RhdGljIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgcHJvdG90eXBlU3RydWN0dXJlLCBuYW1lQW5kTWVzc2FnZSk7CkBAIC00
OSw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUqIGVycm9yU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9lcnJvclN0cnVjdHVyZS5nZXQoKTsgfQogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSosIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBjb25zdCBV
U3RyaW5nJik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFn
czsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRh
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvclByb3Rv
dHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2
ZUVycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTmF0aXZlRXJyb3JQcm90b3R5cGUo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJiwg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvciopOwogICAgIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlw
ZWRlZiBFcnJvclByb3RvdHlwZSBCYXNlOworCiAgICAgICAgIHN0YXRpYyBOYXRpdmVFcnJvclBy
b3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmIG5hbWVBbmRNZXNzYWdl
LCBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yUHJvdG90eXBlPigqZXhl
Yy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIG5hbWVBbmRNZXNzYWdlLCBjb25zdHJ1Y3Rvcik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDky
NDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgTnVtYmVyUHJvdG90eXBlOwogCiAgICAgY2xhc3MgTnVtYmVyQ29uc3RydWN0b3IgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgTnVtYmVyQ29u
c3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBOdW1iZXJQ
cm90b3R5cGUqKTsKLSAgICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVy
bmFsRnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgTnVtYmVyQ29uc3RydWN0b3IqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBOdW1iZXJQcm90b3R5cGUqIG51bVByb3RvdHlwZSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE51bWJlckNvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIG51bVByb3RvdHlwZSk7CkBAIC01NCw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlk
ZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbnRlcm5hbEZ1
bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CisgICAgICAgIE51bWJlckNv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgTnVtYmVy
UHJvdG90eXBlKik7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3RE
YXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0
YShDYWxsRGF0YSYpOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJPYmplY3QuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTnVtYmVyT2JqZWN0KEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTV3JhcHBlck9i
amVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBOdW1iZXJPYmplY3QqIGNyZWF0ZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyT2JqZWN0PihnbG9iYWxEYXRh
LmhlYXApKSBOdW1iZXJPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCShyZXZpc2lv
biA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBOdW1iZXJQcm90b3R5cGUgOiBwdWJsaWMgTnVtYmVyT2JqZWN0IHsKLSAgICBw
cml2YXRlOgotICAgICAgICBOdW1iZXJQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKLQogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBOdW1iZXJP
YmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgTnVtYmVyUHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PE51bWJlclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlclByb3RvdHlwZShleGVjLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkBAIC00Nyw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0gTnVt
YmVyT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgKyAxOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgTnVtYmVyUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjQ4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEwICsyOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIE9i
amVjdFByb3RvdHlwZTsKIAogICAgIGNsYXNzIE9iamVjdENvbnN0cnVjdG9yIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIE9iamVjdENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgT2JqZWN0UHJvdG90eXBl
Kik7Ci0gICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKKwogICAgICAgICBzdGF0aWMgT2JqZWN0Q29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBPYmplY3RQcm90b3R5cGUqIG9ialByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iamVjdENvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG9i
alByb3RvdHlwZSk7CkBAIC01MSw2ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9uOjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgT2JqZWN0UHJvdG90eXBlKik7CiAgICAgICAgIHZpcnR1YWwgQ29uc3Ry
dWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAgIH07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuaAkocmV2aXNpb24g
OTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTAgKzI2LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgT2JqZWN0UHJvdG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewotICAg
IHByaXZhdGU6Ci0gICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgT2JqZWN0UHJvdG90eXBlKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShl
eGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkBAIC00Nyw2ICs0Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50
ID0gSlNOb25GaW5hbE9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50ICsgMTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIE9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVh
bCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
RXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCShyZXZpc2lvbiA5MjQ4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCw2ICszOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwor
CiAgICAgICAgIHN0YXRpYyBSZWdFeHAqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBjb25zdCBVU3Ry
aW5nJiBwYXR0ZXJuLCBSZWdFeHBGbGFncyk7CiAgICAgICAgIH5SZWdFeHAoKTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDEwICs1Niw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvciA6IHB1YmxpYyBJ
bnRlcm5hbEZ1bmN0aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBSZWdFeHBDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ0V4cFByb3RvdHlw
ZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFz
ZTsKKwogICAgICAgICBzdGF0aWMgUmVnRXhwQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBSZWdFeHBQcm90b3R5cGUqIHJlZ0V4cFByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgUmVnRXhwQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJl
Z0V4cFByb3RvdHlwZSk7CkBAIC05NCw2ICs5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBJbnRlcm5hbEZ1bmN0aW9uOjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CisgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwUHJvdG90eXBl
Kik7CiAgICAgICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0
cnVjdERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0
YSYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVz
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAg
KzI1LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwTWF0Y2hlc0FycmF5
IDogcHVibGljIEpTQXJyYXkgewotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cE1hdGNoZXNB
cnJheShFeGVjU3RhdGUqLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqKTsKLQogICAgIHB1Ymxp
YzoKKyAgICAgICAgdHlwZWRlZiBKU0FycmF5IEJhc2U7CisKICAgICAgICAgc3RhdGljIFJlZ0V4
cE1hdGNoZXNBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgUmVnRXhwQ29uc3RydWN0b3JQ
cml2YXRlKiBjdG9yUHJpdmF0ZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE1h
dGNoZXNBcnJheShleGVjLCBjdG9yUHJpdmF0ZSk7CkBAIC0zNiw2ICszNSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5SZWdFeHBNYXRjaGVzQXJyYXkoKTsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheShFeGVjU3RhdGUqLCBSZWdFeHBDb25z
dHJ1Y3RvclByaXZhdGUqKTsKKyAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Q
cm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN1YmNs
YXNzRGF0YSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNyw5IEBACiBuYW1l
c3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFJlZ0V4cE9iamVj
dChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ0V4cCopOwotCiAgICAgcHVibGljOgor
ICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOworCiAgICAgICAg
IHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cE9i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgcmVnRXhwKTsKQEAgLTQxLDggKzQwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0PihnbG9iYWxEYXRhLmhlYXAp
KSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJh
c2U7Ci0KICAgICAgICAgdmlydHVhbCB+UmVnRXhwT2JqZWN0KCk7CiAKICAgICAgICAgdm9pZCBz
ZXRSZWdFeHAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBSZWdFeHAqIHIpIHsgZC0+cmVnRXhw
LnNldChnbG9iYWxEYXRhLCB0aGlzLCByKTsgfQpAQCAtNzYsNiArNzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBSZWdFeHBPYmplY3Qo
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdDo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDEwICsyNyw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4
cFByb3RvdHlwZSA6IHB1YmxpYyBSZWdFeHBPYmplY3QgewotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgUmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgUmVnRXhwKik7Ci0KICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgUmVnRXhwT2JqZWN0
IEJhc2U7CisKICAgICAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFJlZ0V4cCogcmVnRXhwKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgUmVnRXhwUHJvdG90
eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHApOwpAQCAtNDQsNiArNDMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAg
ICBSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBSZWdFeHAqKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgUmVnRXhwT2JqZWN0OjpTdHJ1Y3R1cmVG
bGFnczsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTY29wZUNoYWluTm9kZSogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIGdsb2JhbFRoaXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxTY29wZUNoYWluTm9kZT4oKmV4ZWMtPmhlYXAoKSkpIFNjb3BlQ2hhaW5Ob2Rl
KG5leHQsIG9iamVjdCwgZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxUaGlzKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJpY3RFdmFsQWN0aXZhdGlvbiA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKKwogICAgIHN0YXRpYyBTdHJpY3RFdmFsQWN0aXZhdGlvbiogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJp
Y3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3RpdmF0aW9uKGV4
ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0cmluZ1Byb3RvdHlwZTsKIAogICAgIGNs
YXNzIFN0cmluZ0NvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewotICAgIHBy
aXZhdGU6Ci0gICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgU3RyaW5nUHJvdG90eXBlKik7Ci0gICAgICAgIAogICAgIHB1Ymxp
YzoKKyAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKICAgICAgICAgc3Rh
dGljIFN0cmluZ0NvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ICwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlw
ZSogc3RyUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1
Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgc3RyUHJvdG90eXBlKTsKQEAgLTQ4
LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFs
RnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaW5n
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJp
bmdQcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxE
YXRhKENhbGxEYXRhJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgU3RydWN0
dXJlKiwgY29uc3QgVVN0cmluZyYpOwogICAgICAgICAgICAgICAgIAogICAgIHB1YmxpYzoKKyAg
ICAgICAgdHlwZWRlZiBKU1dyYXBwZXJPYmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgU3Ry
aW5nT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ09i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdChleGVjLCBzdHJ1Y3R1cmUpOyAgCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgJKHJldmlzaW9u
IDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0VGhh
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBXZWJDb3JlIHVzZXMgdGhpcyB0byBtYWtlIHN0eWxl
LmZpbHRlciB1bmRldGVjdGFibGUKICAgICBjbGFzcyBTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA6IHB1YmxpYyBTdHJpbmdPYmplY3QgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgdHlwZWRlZiBTdHJpbmdPYmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgU3RyaW5nT2Jq
ZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IFVTdHJpbmcmIHN0cmluZykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkPigqZXhl
Yy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoZXhlYywK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTdHJpbmdQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmpl
Y3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBTdHJpbmdP
YmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ1Byb3RvdHlwZShleGVjLCBn
bG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJ1Y3R1cmUgOiBwdWJsaWMgSlNDZWxsIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU7
CisKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSwg
Y29uc3QgVHlwZUluZm8mIHR5cGVJbmZvLCB1bnNpZ25lZCBhbm9ueW1vdXNTbG90Q291bnQsIGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
Z2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDYgKzQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAg
ICAgICAgc3RhdGljIFN0cnVjdHVyZUNoYWluKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIGhlYWQpIHsgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVy
ZUNoYWluPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmVDaGFpbihnbG9iYWxEYXRhLCBnbG9i
YWxEYXRhLnN0cnVjdHVyZUNoYWluU3RydWN0dXJlLmdldCgpLCBoZWFkKTsgfQogICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiogaGVhZCgpIHsgcmV0dXJuIG1fdmVjdG9yLmdldCgpOyB9
CiAgICAgICAgIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dEdsdWUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQ5NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wOC0wNSAg
TWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBQ
YXJlbnRDbGFzcyB0eXBlZGVmIGluIGFsbCBKU0MgY2xhc3NlcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU3MzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBKdXN0IGFkZGVkIHRoZSBCYXNlIHR5cGVkZWZz
IGluIGFsbCB0aGUgY2xhc3NlcyB0aGF0IGFyZSBhIHN1YmNsYXNzIG9mIEpTQ2VsbCAKKyAgICAg
ICAgdG8gcG9pbnQgYXQgdGhlaXIgcGFyZW50IGNsYXNzZXMuICBUaGlzIGlzIGEgY2hhbmdlIHRv
IHN1cHBvcnQgZnV0dXJlIGNoYW5nZXMgdG8gdGhlIHdheQorICAgICAgICBjb25zdHJ1Y3RvcnMg
YW5kIGRlc3RydWN0b3JzIGFyZSBpbXBsZW1lbnRlZCBpbiBKUyBvYmplY3RzLgorCisgICAgICAg
ICogVXNlck9iamVjdEltcC5oOgorCiAyMDExLTA4LTA0ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRnV0dXJlLXByb29mIFhjb2RlIGNvbmZpZ3VyYXRpb24gc2V0dGlu
Z3MuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdEdsdWUvSlNSdW4uaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdEdsdWUvSlNSdW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQAog
CiBjbGFzcyBKU0dsdWVHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNHbG9iYWxPYmplY3QgewogICAg
IHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0dsb2JhbE9iamVjdCBCYXNlOworCiAgICAgICAg
IHN0YXRpYyBKU0dsdWVHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0ZsYWdzIGZsYWdzID0ga0pTRmxhZ05vbmUpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsdWVHbG9i
YWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2x1ZUdsb2JhbE9iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUsIGZsYWdzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2Jq
ZWN0SW1wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJ
bXAuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVj
dEltcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw4IEBACiAKIGNsYXNzIFVzZXJPYmpl
Y3RJbXAgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICBzdGF0aWMgVXNlck9iamVjdEltcCogY3JlYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVXNlck9i
amVjdCogdXNlck9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxVc2VyT2JqZWN0SW1wPihnbG9iYWxEYXRhLmhlYXApKSBVc2VyT2JqZWN0SW1wKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgdXNlck9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjQ5
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI5IEBACisyMDExLTA4LTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFBhcmVudENsYXNzIHR5cGVkZWYgaW4gYWxsIEpTQyBjbGFzc2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTczMQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4KKworICAgICAgICBKdXN0IGFkZGVkIHRoZSBCYXNlIHR5cGVkZWZzIGluIGFsbCB0aGUg
Y2xhc3NlcyB0aGF0IGFyZSBhIHN1YmNsYXNzIG9mIEpTQ2VsbCAKKyAgICAgICAgdG8gcG9pbnQg
YXQgdGhlaXIgcGFyZW50IGNsYXNzZXMuICBUaGlzIGlzIGEgY2hhbmdlIHRvIHN1cHBvcnQgZnV0
dXJlIGNoYW5nZXMgdG8gdGhlIHdheQorICAgICAgICBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0
b3JzIGFyZSBpbXBsZW1lbnRlZCBpbiBKUyBvYmplY3RzLgorCisgICAgICAgICogYnJpZGdlL2Mv
Q1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAg
ICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwOgorICAgICAgICAqIGJy
aWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgICogYnJpZGdlL29iamMv
T2JqQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHA6CisgICAgICAgICogYnJp
ZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9ydW50
aW1lLmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgICogYnJp
ZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgICogYnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNw
cDoKKwogMjAxMS0wOC0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgog
CiAgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw2ICszNiw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpT
QXVkaW9Db25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7CiAg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJh
c2U7CisKICAgICAgICAgc3RhdGljIEpTQXVkaW9Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChKU0M6
OmFsbG9jYXRlQ2VsbDxKU0F1ZGlvQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0F1ZGlv
Q29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDkyNDgxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIEJhc2UgY2xhc3Mg
Zm9yIGFsbCBjb25zdHJ1Y3RvciBvYmplY3RzIGluIHRoZSBKU0MgYmluZGluZ3MuCiAgICAgY2xh
c3MgRE9NQ29uc3RydWN0b3JPYmplY3QgOiBwdWJsaWMgSlNET01XcmFwcGVyIHsKICAgICBwdWJs
aWM6CisgICAgICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CisKICAgICAgICAgc3RhdGlj
IEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvdHlwZSwgSlNDOjpU
eXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENv
dW50LCAmc19pbmZvKTsKQEAgLTYwLDYgKzYyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IC8vIGNhbiBuZXZlciBiZSB1c2VkIGZyb20gYSBXb3JrZXJDb250ZXh0LgogICAgIGNsYXNzIERP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsK
ICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsK
KwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdAogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgJKHJl
dmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDggQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dDsKIAogY2xhc3MgSlNET01XcmFwcGVyIDogcHVibGljIEpTQzo6SlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xv
YmFsT2JqZWN0IEJhc2U7CisKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpnbG9iYWxPYmplY3QoKSk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAko
cmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29u
c3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKICAgICBjbGFzcyBKU0ltYWdlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3Ry
dWN0b3JXaXRoRG9jdW1lbnQgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBET01Db25z
dHJ1Y3RvcldpdGhEb2N1bWVudCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU0ltYWdlQ29uc3Ry
dWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVjdG9yPigq
ZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3Ry
dWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlv
bkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTT3B0aW9uQ29uc3RydWN0b3Ig
OiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgewogICAgIHB1YmxpYzoKKyAgICAg
ICAgdHlwZWRlZiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCBCYXNlOworCiAgICAgICAgIHN0
YXRpYyBKU09wdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
T3B0aW9uQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU09wdGlvbkNvbnN0cnVjdG9yKGV4
ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiA5MjQ4MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDY2LDYgKzMwNjYsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JD
bGFzc05hbWV9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCopO1xuXG4iKTsKICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwdWJsaWM6XG4i
KTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9i
amVjdCBCYXNlO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0YXRpYyAkY29u
c3RydWN0b3JDbGFzc05hbWUqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwog
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjb25zdHJ1Y3RvckNs
YXNzTmFtZT4oKmV4ZWMtPmhlYXAoKSkpICRjb25zdHJ1Y3RvckNsYXNzTmFtZShleGVjLCBzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCShy
ZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKIHB1YmxpYzoKKyAgICB0eXBl
ZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEludGVyZmFj
ZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKGV4ZWMsIHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwogCiBwdWJsaWM6CisgICAgdHlwZWRlZiBET01D
b25zdHJ1Y3Rvck9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYg
KzE0Nyw3IEBAIHByaXZhdGU6CiAgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKIHB1YmxpYzoKKyAg
ICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE9i
akNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4o
KmV4ZWMtPmhlYXAoKSkpIEpTVGVzdE9iakNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIHByaXZhdGU6CiAg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpF
eGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKIHB1Ymxp
YzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
cj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNv
bnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogY2xhc3MgUnVudGltZUFycmF5IDogcHVibGljIEpT
QXJyYXkgewogcHVibGljOgorICAgIHR5cGVkZWYgSlNBcnJheSBCYXNlOworCiAgICAgc3RhdGlj
IFJ1bnRpbWVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgQmluZGluZ3M6OkFycmF5KiBh
cnJheSkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJy
YXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgYXJyYXkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFJ1bnRpbWVNZXRob2QgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7CisKICAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBtZXRob2RMaXN0
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+
KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBuYW1lLCBtZXRob2RMaXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X29iamVjdC5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBC
aW5kaW5ncyB7CiAKIGNsYXNzIFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xv
YmFsT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dCBCYXNlOworCiAgICAgc3RhdGljIFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
YXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU9iamVj
dChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2UpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRiaW5kaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDggQEAgY2xhc3MgTXlPYmplY3QgOiBwdWJsaWMgUU9iamVjdAogICAgIFFfUFJP
UEVSVFkoaW50IHRlc3RJbnQgUkVBRCB0ZXN0SW50IFdSSVRFIHNldFRlc3RJbnQpCiAKIHB1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKwogICAgIE15T2JqZWN0KCkg
OiBRT2JqZWN0KDApLCBpbnRlZ2VyKDApe30KIAogICAgIHZvaWQgc2V0VGVzdFN0cmluZyhjb25z
dCBRU3RyaW5nICZzdHIpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1l
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVP
YmplY3QuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVu
dGltZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBAIGNsYXNzIENJbnN0
YW5jZTsKIAogY2xhc3MgQ1J1bnRpbWVPYmplY3QgOiBwdWJsaWMgUnVudGltZU9iamVjdCB7CiBw
dWJsaWM6CisgICAgdHlwZWRlZiBSdW50aW1lT2JqZWN0IEJhc2U7CisKICAgICBzdGF0aWMgQ1J1
bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFBhc3NSZWZQdHI8Q0luc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxDUnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IENSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
MSw2ICsxMTEsOCBAQCBib29sIENJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0TWV0CiAK
IGNsYXNzIENSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgor
ICAgIHR5cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOworCiAgICAgc3RhdGljIENSdW50aW1lTWV0
aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxDUnVudGltZU1ldGhvZD4oKmV4
ZWMtPmhlYXAoKSkpIENSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwgbGlz
dCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0
YW5jZUpTQy5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2pu
aS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw4
IEBAIEpTVmFsdWUgSmF2YUluc3RhbmNlOjpib29sZWFuVmFsdWUoKSBjb24KIAogY2xhc3MgSmF2
YVJ1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6CisgICAgdHlw
ZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CisKICAgICBzdGF0aWMgSmF2YVJ1bnRpbWVNZXRob2Qq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1lTWV0aG9kPigqZXhl
Yy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBs
aXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1
bnRpbWVPYmplY3QuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
am5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4
IEBAIGNsYXNzIEphdmFJbnN0YW5jZTsKIAogY2xhc3MgSmF2YVJ1bnRpbWVPYmplY3QgOiBwdWJs
aWMgUnVudGltZU9iamVjdCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBSdW50aW1lT2JqZWN0IEJh
c2U7CisKICAgICBzdGF0aWMgSmF2YVJ1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8SmF2YUluc3RhbmNl
PiBqYXZhSW5zdCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKYXZh
UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEphdmFSdW50aW1lT2JqZWN0KGV4ZWMsIGds
b2JhbE9iamVjdCwgamF2YUluc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
T2JqQ1J1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9PYmpDUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDYgKzM1LDggQEAgY2xhc3MgT2JqY0luc3RhbmNlOwogCiBjbGFzcyBPYmpDUnVudGltZU9iamVj
dCA6IHB1YmxpYyBSdW50aW1lT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1bnRpbWVP
YmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBPYmpDUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxPYmpj
SW5zdGFuY2U+IGluc3QpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
T2JqQ1J1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU9iamVjdChleGVj
LCBnbG9iYWxPYmplY3QsIGluc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2Jq
Yy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIs
OCBAQCBib29sIE9iamNJbnN0YW5jZTo6c3VwcG9ydHNJbnZva2VEZWZhdWx0CiAKIGNsYXNzIE9i
akNSdW50aW1lTWV0aG9kIDogcHVibGljIFJ1bnRpbWVNZXRob2QgewogcHVibGljOgorICAgIHR5
cGVkZWYgUnVudGltZU1ldGhvZCBCYXNlOworCiAgICAgc3RhdGljIE9iakNSdW50aW1lTWV0aG9k
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4oKmV4
ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgbmFtZSwg
bGlzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAko
cmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRp
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsOCBAQCBwcml2YXRlOgogCiBjbGFzcyBP
YmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsK
IHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOworCiAg
ICAgc3RhdGljIE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0YW5jZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09iamVjdEltcD4oKmV4ZWMtPmhlYXAoKSkpIE9iamNG
YWxsYmFja09iamVjdEltcChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlLCBwcm9wZXJ0eU5h
bWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCShyZXZp
c2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgUV9HTE9CQUxfU1RBVElDKFF0SW5zdGFu
Y2U6OlF0U2VuZGVyU3RhYwogLy8gRGVyaXZlZCBSdW50aW1lT2JqZWN0CiBjbGFzcyBRdFJ1bnRp
bWVPYmplY3QgOiBwdWJsaWMgUnVudGltZU9iamVjdCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBS
dW50aW1lT2JqZWN0IEJhc2U7CisKICAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0KiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRy
PEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRl
Q2VsbDxRdFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVPYmplY3QoZXhl
YywgZ2xvYmFsT2JqZWN0LCBpbnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfcGl4bWFwcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTk4LDYgKzE5OCw4IEBAIHN0cnVjdCBRdFBpeG1hcE1ldGFEYXRhIHsKIC8vIERlcml2ZWQgUnVu
dGltZU9iamVjdAogY2xhc3MgUXRQaXhtYXBSdW50aW1lT2JqZWN0IDogcHVibGljIFJ1bnRpbWVP
YmplY3QgewogcHVibGljOgorICAgIHR5cGVkZWYgUnVudGltZU9iamVjdCBCYXNlOworCiAgICAg
c3RhdGljIFF0UGl4bWFwUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2Up
CiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UXRQaXhtYXBSdW50aW1l
T2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUXRQaXhtYXBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5zdGFuY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1
bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGlt
ZS5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50
aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsOCBAQCBjbGFzcyBRdFJ1bnRpbWVD
b25uZWN0aW9uTWV0aG9kRGF0YSA6IHB1CiAvLyBDb21tb24gYmFzZSBjbGFzcyAoZG9lc24ndCBy
ZWFsbHkgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcpCiBjbGFzcyBRdFJ1bnRpbWVNZXRob2QgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1
bmN0aW9uIEJhc2U7CisKICAgICB2aXJ0dWFsIH5RdFJ1bnRpbWVNZXRob2QoKTsKIAogICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtMTUwLDYgKzE1Miw4IEBAIHByb3RlY3Rl
ZDoKIGNsYXNzIFF0UnVudGltZU1ldGFNZXRob2QgOiBwdWJsaWMgUXRSdW50aW1lTWV0aG9kCiB7
CiBwdWJsaWM6CisgICAgdHlwZWRlZiBRdFJ1bnRpbWVNZXRob2QgQmFzZTsKKwogICAgIHN0YXRp
YyBRdFJ1bnRpbWVNZXRhTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBuLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3QsIGludCBpbmRleCwgY29uc3Qg
UUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVNZXRhTWV0aG9kPigqZXhlYy0+aGVh
cCgpKSkgUXRSdW50aW1lTWV0YU1ldGhvZChleGVjLCBuLCBpbnN0LCBpbmRleCwgc2lnbmF0dXJl
LCBhbGxvd1ByaXZhdGUpOwpAQCAtMTc4LDYgKzE4Miw4IEBAIGNsYXNzIFF0Q29ubmVjdGlvbk9i
amVjdDsKIGNsYXNzIFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2QgOiBwdWJsaWMgUXRSdW50aW1l
TWV0aG9kCiB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBRdFJ1bnRpbWVNZXRob2QgQmFzZTsKKwog
ICAgIHN0YXRpYyBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBuLCBib29sIGlzQ29ubmVjdCwgUGFzc1JlZlB0cjxRdElu
c3RhbmNlPiBpbnN0LCBpbnQgaW5kZXgsIGNvbnN0IFFCeXRlQXJyYXkmIHNpZ25hdHVyZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVDb25uZWN0aW9u
TWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZChleGVjLCBu
LCBpc0Nvbm5lY3QsIGluc3QsIGluZGV4LCBzaWduYXR1cmUpOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTI0OTQpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wOC0wNSAgTWFyayBIYWhuZW5iZXJnICA8
bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBQYXJlbnRDbGFzcyB0eXBlZGVm
IGluIGFsbCBKU0MgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjU3MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBKdXN0IGFkZGVkIHRoZSBCYXNlIHR5cGVkZWZzIGluIGFsbCB0aGUgY2xhc3Nl
cyB0aGF0IGFyZSBhIHN1YmNsYXNzIG9mIEpTQ2VsbCAKKyAgICAgICAgdG8gcG9pbnQgYXQgdGhl
aXIgcGFyZW50IGNsYXNzZXMuICBUaGlzIGlzIGEgY2hhbmdlIHRvIHN1cHBvcnQgZnV0dXJlIGNo
YW5nZXMgdG8gdGhlIHdheQorICAgICAgICBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIGFy
ZSBpbXBsZW1lbnRlZCBpbiBKUyBvYmplY3RzLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQv
UHJveHlJbnN0YW5jZS5tbToKKwogMjAxMS0wOC0wNSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJz
Y2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBQbHVnaW5IYWx0ZXIKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQkocmV2
aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUlu
c3RhbmNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNiArMTc5LDggQEAgSlNWYWx1ZSBQcm94
eUluc3RhbmNlOjppbnZva2UoSlNDOjpFeGVjUwogCiBjbGFzcyBQcm94eVJ1bnRpbWVNZXRob2Qg
OiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBSdW50aW1lTWV0
aG9kIEJhc2U7CisKICAgICBzdGF0aWMgUHJveHlSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbGlzdCkKICAgICB7CiAgICAgICAgIHJldHVy
biBuZXcgKGFsbG9jYXRlQ2VsbDxQcm94eVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBQ
cm94eVJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103115</attachid>
            <date>2011-08-05 14:33:00 -0700</date>
            <delta_ts>2011-08-08 16:41:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65731-20110805143259.patch</filename>
            <type>text/plain</type>
            <size>76133</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI0OTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAK
KzIwMTEtMDgtMDUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgUGFyZW50Q2xhc3MgdHlwZWRlZiBpbiBhbGwgSlNDIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzMxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBhZGRlZCB0aGUg
QmFzZSB0eXBlZGVmcyBpbiBhbGwgdGhlIGNsYXNzZXMgdGhhdCBhcmUgYSBzdWJjbGFzcyBvZiBK
U0NlbGwgCisgICAgICAgIHRvIHBvaW50IGF0IHRoZWlyIHBhcmVudCBjbGFzc2VzLiAgVGhpcyBp
cyBhIGNoYW5nZSB0byBzdXBwb3J0IGZ1dHVyZSBjaGFuZ2VzIHRvIHRoZSB3YXkKKyAgICAgICAg
Y29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgaW1wbGVtZW50ZWQgaW4gSlMgb2JqZWN0
cy4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJBY3Rp
dmF0aW9uLmg6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0Jvb2xlYW5Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9FcnJvci5jcHA6CisgICAgICAgICogcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmg6CisgICAgICAgICogcnVudGltZS9F
cnJvclByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6
CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvR2V0dGVyU2V0dGVyLmg6CisgICAgICAgICogcnVudGltZS9J
bnRlcm5hbEZ1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5j
dGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlND
OjpKU05vdEFuT2JqZWN0OjpKU05vdEFuT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT05P
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAg
ICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1dyYXBw
ZXJPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL01hdGhPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL05hdGl2
ZUVycm9yUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50
aW1lL09iamVjdFByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVnRXhwLmg6CisgICAg
ICAgICogcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvUmVn
RXhwT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxB
Y3RpdmF0aW9uLmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oOgorCiAyMDExLTA4LTA0ICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDU3RyaW5nQnVmZmVyIHNob3VsZCBoYXZlIHRocmVhZCBzYWZldHkgY2hlY2tz
IHR1cm5lZCBvbi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiA5MjQ4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNiAr
MTQ4LDggQEAgcHJpdmF0ZToKICAgICBHbG9iYWxPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKiwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpOwogCiBwdWJsaWM6CisgICAg
dHlwZWRlZiBKU0dsb2JhbE9iamVjdCBCYXNlOworCiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCog
Y3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgR2xvYmFsT2Jq
ZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgYXJndW1lbnRzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkocmV2aXNpb24g
OTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
Y2xhc3MgSlNDYWxsYmFja0NvbnN0cnVjdG9yIDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9i
amVjdCB7Ci1wcm90ZWN0ZWQ6Ci0gICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNh
bGxiYWNrKTsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBC
YXNlOworCiAgICAgc3RhdGljIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTQ2xhc3NSZWYgY2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFj
ayBjYWxsYmFjaykgCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlND
YWxsYmFja0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja0NvbnN0cnVjdG9y
KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgY2FsbGJhY2spOwpAQCAtNTEsNiAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6CisgICAgSlNDYWxsYmFja0NvbnN0
cnVjdG9yKEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwgSlNPYmplY3RD
YWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
dWN0dXJlRmxhZ3MgPSBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBKU09iamVjdDo6U3RydWN0dXJl
RmxhZ3M7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja0Z1bmN0aW9uLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSlNDYWxsYmFja0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrLCBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lKTsKIAogcHVibGljOgorICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOworCiAgICAgc3RhdGljIEpTQ2FsbGJhY2tGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3RDYWxsQXNGdW5jdGlv
bkNhbGxiYWNrIGNhbGxiYWNrLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tGdW5jdGlvbj4oKmV4ZWMtPmhl
YXAoKSkpIEpTQ2FsbGJhY2tGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGNhbGxiYWNrLCBu
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVidWdnZXJBY3RpdmF0aW9u
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIERlYnVnZ2VyQWN0aXZh
dGlvbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVjdCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPERlYnVnZ2Vy
QWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgRGVidWdnZXJBY3RpdmF0aW9uKGdsb2JhbERh
dGEsIG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVu
dHMuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEFyZ3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAgICAg
ICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2FsbEZy
YW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQXJyYXlQcm90b3R5cGU7CiAKICAgICBjbGFz
cyBBcnJheUNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewotICAgIHByaXZh
dGU6Ci0gICAgICAgIEFycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3Qq
LCBTdHJ1Y3R1cmUqLCBBcnJheVByb3RvdHlwZSopOwogICAgICAgICAKICAgICBwdWJsaWM6Cisg
ICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgICAgIHN0YXRpYyBB
cnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5cGUqIGFyclBy
b3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEFycmF5Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGV4ZWMs
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBhcnJQcm90b3R5cGUpOwpAQCAtNDgsNiArNDgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6
U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgorICAgICAgICBBcnJheUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQXJyYXlQcm90b3R5cGUq
KTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEs
NiArMzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXJyYXlQcm90b3R5cGUoSlNHbG9i
YWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBK
U0FycmF5IEJhc2U7CisKICAgICAgICAgc3RhdGljIEFycmF5UHJvdG90eXBlKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PEFycmF5UHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgQXJyYXlQcm90b3R5cGUoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9v
bGVhbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDE2ICsyOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBCb29sZWFuUHJv
dG90eXBlOwogCiAgICAgY2xhc3MgQm9vbGVhbkNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFs
RnVuY3Rpb24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIEJvb2xlYW5Db25zdHJ1Y3RvcihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEJvb2xlYW5Qcm90b3R5cGUqKTsK
LSAgICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKKwogICAgICAgICBzdGF0aWMgQm9vbGVhbkNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbFByb3RvdHlwZSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4ZWMt
PmhlYXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgYm9vbFByb3RvdHlwZSk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIEJv
b2xlYW5Db25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEJvb2xlYW5Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCb29sZWFuT2JqZWN0KEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IEpTV3JhcHBlck9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBCb29sZWFuT2JqZWN0KiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5PYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIEJvb2xlYW5PYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQm9vbGVhblByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCb29sZWFuUHJvdG90eXBlIDogcHVibGljIEJv
b2xlYW5PYmplY3QgewotICAgIHByaXZhdGU6Ci0gICAgICAgIEJvb2xlYW5Qcm90b3R5cGUoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKLQogICAgIHB1YmxpYzoKKyAg
ICAgICAgdHlwZWRlZiBCb29sZWFuT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIEJvb2xl
YW5Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwpAQCAtNDcs
NiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEFub255bW91c1Nsb3RDb3VudCA9IEJvb2xlYW5PYmplY3Q6OkFub255bW91c1Nsb3RDb3VudCAr
IDE7CiAKICAgICBwcml2YXRlOgorICAgICAgICBCb29sZWFuUHJvdG90eXBlKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRP
d25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xv
dCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKICAgICB9OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9y
LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDEwICsyOCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIERhdGVQcm90b3R5cGU7CiAKICAgICBjbGFzcyBEYXRlQ29uc3Ry
dWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAg
RGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RGF0ZVByb3RvdHlwZSopOwotICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgICAgIHN0YXRpYyBEYXRlQ29uc3RydWN0b3Iq
IGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBEYXRlUHJvdG90eXBlKiBkYXRlUHJvdG90eXBlKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUNvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgRGF0ZUNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3Ry
dWN0dXJlLCBkYXRlUHJvdG90eXBlKTsKQEAgLTQ4LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c0dldE93blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xv
YmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRGF0ZVByb3RvdHlwZSopOwogICAgICAgICB2aXJ0dWFs
IENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAg
IHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHJldmlzaW9uIDkyNDgx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERhdGVJ
bnN0YW5jZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgcHVibGljOgor
ICAgICAgICB0eXBlZGVmIEpTV3JhcHBlck9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBE
YXRlSW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBkb3VibGUgZGF0ZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPERhdGVJbnN0YW5jZT4oKmV4ZWMtPmhlYXAoKSkpIERhdGVJbnN0YW5jZShleGVjLCBz
dHJ1Y3R1cmUsIGRhdGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRl
ZiBEYXRlSW5zdGFuY2UgQmFzZTsKKwogICAgICAgICBzdGF0aWMgRGF0ZVByb3RvdHlwZSogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQ2VsbDxEYXRlUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZVByb3RvdHlwZShleGVj
LCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuY3BwCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCw4IEBAIHBy
aXZhdGU6CiAgICAgfQogCiBwdWJsaWM6CisgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJh
c2U7CisKICAgICBzdGF0aWMgU3RyaWN0TW9kZVR5cGVFcnJvckZ1bmN0aW9uKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBu
ZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1
Y3R1cmUsIG1lc3NhZ2UpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvckNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDE2ICsyOSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFcnJvclByb3RvdHlwZTsK
IAogICAgIGNsYXNzIEVycm9yQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVycm9yUHJvdG90eXBlKik7Ci0KICAgICBwdWJsaWM6
CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgICAgIHN0YXRp
YyBFcnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVy
clByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVD
ZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBFcnJvckNvbnN0cnVjdG9yKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBlcnJQcm90b3R5cGUpOwogICAgICAgICB9CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CisgICAgICAgIEVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBFcnJvclByb3RvdHlwZSopOwogICAgICAg
ICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7
CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2Uu
aAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ckluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBFcnJvckluc3RhbmNlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisK
ICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
clByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgT2JqZWN0UHJvdG90eXBlOwogCiAgICAg
Y2xhc3MgRXJyb3JQcm90b3R5cGUgOiBwdWJsaWMgRXJyb3JJbnN0YW5jZSB7Ci0gICAgcHJvdGVj
dGVkOgotICAgICAgICBFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCos
IFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEVycm9ySW5zdGFu
Y2UgQmFzZTsKKwogICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXJy
b3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CkBAIC00NSw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEVy
cm9ySW5zdGFuY2U6OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgQW5vbnltb3VzU2xvdENvdW50ID0gRXJyb3JJbnN0YW5jZTo6QW5vbnltb3VzU2xvdENvdW50
ICsgMTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDggQEAgcHJpdmF0ZToKICAgICB9CiAKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5l
dyAoYWxsb2NhdGVDZWxsPEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I+KGdsb2JhbERhdGEuaGVh
cCkpIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7CkBAIC03Miw2ICs3NCw4
IEBAIHByaXZhdGU6CiAgICAgfQogCiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisKICAgICBzdGF0aWMgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yKiBjcmVhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgVGVy
bWluYXRlZEV4ZWN1dGlvbkVycm9yKGdsb2JhbERhdGEpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2
LDYgKzY2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHVi
bGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBFeGVj
dXRhYmxlQmFzZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIGludCBudW1QYXJhbWV0ZXJzKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXhlY3V0YWJsZUJhc2U+KGdsb2JhbERhdGEuaGVhcCkpIEV4
ZWN1dGFibGVCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbnVtUGFyYW1ldGVycyk7CkBAIC0x
NjgsNiArMTcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJs
ZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNlIEJhc2U7CisKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNhbGxUaHVuaywgTmF0
aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb25zdHJ1Y3RUaHVu
aywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsKQEAgLTIxOSw2ICsyMjMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGFibGUgOiBwdWJs
aWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBFeGVjdXRh
YmxlQmFzZSBCYXNlOworCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAgICAgOiBFeGVjdXRhYmxlQmFzZShn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9DT01QSUxFRCkKICAgICAg
ICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQpAQCAtMjc3LDYgKzI4Myw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJs
ZSB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsK
IAogICAgICAgICB+RXZhbEV4ZWN1dGFibGUoKTsKIApAQCAtMzI2LDYgKzMzMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFi
bGUgQmFzZTsKKwogICAgICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFibGUqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFByb2dyYW1FeGVjdXRhYmxlPigqZXhlYy0+
aGVhcCgpKSkgUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsKQEAgLTM3OSw2ICszODgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVi
bGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKKwogICAgICAgICBz
dGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9yY2VVc2Vz
QXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhlY3V0YWJsZT4oKmV4ZWMt
PmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNl
c0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQsIGZpcnN0TGluZSwgbGFz
dExpbmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDE2ICsyOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlw
ZTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvcihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEZ1bmN0aW9uUHJvdG90eXBlKik7Ci0g
ICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsK
KwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Db25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IGZ1bmNQcm90b3R5cGUpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBGdW5j
dGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwg
RnVuY3Rpb25Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2aXNpb24gOTI0ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKLSAgICBwcml2
YXRlOgotICAgICAgICBGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Qcm90b3R5cGUqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBGdW5jdGlvblByb3RvdHlw
ZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkBAIC00Myw2ICs0Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBGdW5jdGlvblBy
b3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAg
ICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlz
aW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAg
ICAgICBzdGF0aWMgR2V0dGVyU2V0dGVyKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8R2V0dGVyU2V0dGVyPigq
ZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNpb24gOTI0ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiAg
ICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNl
OworCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87
CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaAkocmV2
aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVl
V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTQVBJVmFsdWVXcmFwcGVyIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAg
IGZyaWVuZCBKU1ZhbHVlIGpzQVBJVmFsdWVXcmFwcGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUpOwog
ICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBKU1Zh
bHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsgfQogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZp
c2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxMSArNDAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBSZWdpc3RlcjsKICAgICAKICAgICBjbGFzcyBKU0FjdGl2YXRpb24gOiBwdWJsaWMg
SlNWYXJpYWJsZU9iamVjdCB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBKU1Zhcmlh
YmxlT2JqZWN0IEJhc2U7Ci0gICAgICAgIEpTQWN0aXZhdGlvbihDYWxsRnJhbWUqLCBGdW5jdGlv
bkV4ZWN1dGFibGUqKTsKLSAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNWYXJp
YWJsZU9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU0FjdGl2YXRpb24qIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmNFeGVjKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8SlNBY3RpdmF0aW9uPihnbG9iYWxEYXRhLmhlYXApKSBKU0FjdGl2YXRpb24o
Y2FsbEZyYW1lLCBmdW5jRXhlYyk7CkBAIC03OSw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBJc0Vudmlyb25t
ZW50UmVjb3JkIHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgT3ZlcnJpZGVzVmlzaXRD
aGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBKU1ZhcmlhYmxlT2JqZWN0OjpT
dHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CisgICAgICAgIEpTQWN0aXZhdGlvbihDYWxs
RnJhbWUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqKTsKICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdl
dChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIGJvb2wgc3ltYm9s
VGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgICAg
ICBib29sIHN5bWJvbFRhYmxlR2V0KGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmLCBi
b29sJiBzbG90SXNXcml0ZWFibGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpTQXJyYXkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3Qg
QXJnTGlzdCYgaW5pdGlhbFZhbHVlcyk7CiAgICAgICAgIAogICAgIHB1YmxpYzoKKyAgICAgICAg
dHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgSlNBcnJheShWUHRyU3Rl
YWxpbmdIYWNrVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0
OSw2ICsxNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgQW5vbnltb3VzU2xvdENvdW50ID0gMDsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gMDsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIC8vIEJhc2UgaW1wbGVtZW50YXRpb247IGZvciBub24tb2JqZWN0IGNs
YXNzZXMgaW1wbGVtZW50cyBnZXRQcm9wZXJ0eVNsb3QuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
MTMgKzQ2LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgREZHOjpK
SVRDb2RlR2VuZXJhdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwogCi0g
ICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7Ci0KICAgICAgICAg
SlNGdW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGludCBs
ZW5ndGgsIGNvbnN0IElkZW50aWZpZXImLCBOYXRpdmVGdW5jdGlvbik7CiAgICAgICAgIEpTRnVu
Y3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBpbnQgbGVuZ3Ro
LCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRXhlY3V0YWJsZSopOwogICAgICAgICBKU0Z1bmN0
aW9uKEV4ZWNTdGF0ZSosIEZ1bmN0aW9uRXhlY3V0YWJsZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVGdW5jKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8SlNGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIGxlbmd0aCwgaWRlbnQsIG5hdGl2ZUZ1bmMpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiA5
MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NSw2ICsxNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTVmFyaWFibGVPYmplY3QgQmFz
ZTsKKwogICAgICAgICB2aXJ0dWFsIH5KU0dsb2JhbE9iamVjdCgpOwogCiAgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCShyZXZpc2lvbiA5MjQ4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsMTMgKzM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gaW4gY2VydGFp
biBTcXVpcnJlbEZpc2ggYnl0ZWNvZGVzIC0tIGVmZmVjdGl2ZWx5IGl0IGp1c3Qgc2lsZW50bHkg
Y29uc3VtZXMKICAgICAvLyBhbnkgb3BlcmF0aW9ucyBwZXJmb3JtZWQgb24gdGhlIHJlc3VsdCBv
ZiBhIGZhaWxlZCB0b09iamVjdCBjYWxsLgogICAgIGNsYXNzIEpTTm90QW5PYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNOb3RBbk9iamVj
dChFeGVjU3RhdGUqIGV4ZWMpCi0gICAgICAgICAgICA6IEpTTm9uRmluYWxPYmplY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkubm90QW5PYmplY3RTdHJ1Y3R1cmUuZ2V0
KCkpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU05vdEFu
T2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNOb3RBbk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpT
Tm90QW5PYmplY3QoZXhlYyk7CkBAIC01NSw2ICs1MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogCiAgICAgIHByaXZhdGU6CisgICAgICAgIEpTTm90QW5PYmplY3QoRXhlY1N0YXRl
KiBleGVjKQorICAgICAgICAgICAgOiBKU05vbkZpbmFsT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+Z2xvYmFsRGF0YSgpLm5vdEFuT2JqZWN0U3RydWN0dXJlLmdldCgpKQorICAgICAg
ICB7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBT
dHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRlc0dl
dFByb3BlcnR5TmFtZXMgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgJKHJldmlzaW9uIDkyNDgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywxMCArMzMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBTdHJpbmdp
ZmllcjsKIAogICAgIGNsYXNzIEpTT05PYmplY3QgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0IHsKLSAgICBwcml2YXRlOgotICAgICAgICBKU09OT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7Ci0KICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNPYmplY3RX
aXRoR2xvYmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIEpTT05PYmplY3QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTT05PYmplY3QoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOwpAQCAtNTMsNiArNTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJv
cGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgSlNPTk9iamVjdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBmcmllbmQgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xvdChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KiB0aGlzT2JqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCk7CiAKICAgICBwdWJsaWM6Cisg
ICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKICAgICAgICAgQUxXQVlTX0lOTElORSB2b2lkIHZpc2l0
Q2hpbGRyZW5EaXJlY3QoU2xvdFZpc2l0b3ImKTsKIApAQCAtMzMyLDYgKzMzNCw4IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpTT2JqZWN0OwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTT2JqZWN0IEJhc2U7
CisKICAgICAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShnbG9iYWxEYXRhLCBwcm90b3R5cGUsIFR5cGVJbmZv
KE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZv
KTsKQEAgLTM2MCw2ICszNjQsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxp
bmVTdG9yCiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU09iamVjdDsKIAogICAgIHB1YmxpYzoKKyAg
ICAgICAgdHlwZWRlZiBKU09iamVjdCBCYXNlOworCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxP
YmplY3QoVlB0clN0ZWFsaW5nSGFja1R5cGUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KFZQdHJT
dGVhbGluZ0hhY2ssIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3RXaXRoR2xvYmFsT2Jq
ZWN0LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDgg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAKIGNsYXNzIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG8pCiAgICAgewogICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHN0
YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNPYmplY3Qq
KTsKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBz
aXplX3QgbnVtQ2FjaGVhYmxlU2xvdCkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkocmV2aXNpb24g
OTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIEpTQ3sKICAg
ICAKICAgICBjbGFzcyBKU1N0YXRpY1Njb3BlT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVPYmpl
Y3QgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU1ZhcmlhYmxlT2JqZWN0IEJhc2U7
CisKICAgICAgICAgc3RhdGljIEpTU3RhdGljU2NvcGVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8SlNTdGF0aWNTY29wZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2NvcGVPYmpl
Y3QoZXhlYywgaWRlbnQsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2
Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgU3BlY2lhbGl6ZWRU
aHVua0pJVDsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBUaHVua0hlbHBlcnM7CiAKKyAgICAgICAg
dHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBjbGFzcyBSb3BlQnVpbGRlciB7CiAgICAg
ICAgIHB1YmxpYzoKICAgICAgICAgICAgIFJvcGVCdWlsZGVyKHVuc2lnbmVkIGZpYmVyQ291bnQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoKKyAg
ICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgU3ltYm9sVGFi
bGUmIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKm1fc3ltYm9sVGFibGU7IH0KIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpID0gMDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCShyZXZpc2lv
biA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMgU3Ry
aW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBlcnMg
Zm9yIHByaW1pdGl2ZSB0eXBlcy4KICAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3QgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBKU1dy
YXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0KICAgICBwdWJsaWM6Cisg
ICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAgICAgICAgIEpTVmFsdWUg
aW50ZXJuYWxWYWx1ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUoSlNH
bG9iYWxEYXRhJiwgSlNWYWx1ZSk7CiAKQEAgLTQyLDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGljaXQgSlNXcmFwcGVy
T2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNOb25G
aW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gOTI0ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hdGhPYmplY3Qo
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHB1YmxpYzoK
KyAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKKwogICAgICAg
ICBzdGF0aWMgTWF0aE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVhcCgp
KSkgTWF0aE9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvci5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGU7CiAKICAg
ICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rpb24g
ewotICAgIHByaXZhdGU6Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVj
dHVyZSwgY29uc3QgVVN0cmluZyYpOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIElu
dGVybmFsRnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlKTsKQEAgLTQ5LDYgKzQ4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7IHJl
dHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlz
aXRDaGlsZHJlbiB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgICAgICB2
aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAg
ICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5
cGUuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
YXRpdmVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmLCBOYXRpdmVFcnJvckNv
bnN0cnVjdG9yKik7CiAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEVycm9yUHJv
dG90eXBlIEJhc2U7CisKICAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBO
YXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbmFtZUFu
ZE1lc3NhZ2UsIGNvbnN0cnVjdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCwxMCArMjgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBOdW1iZXJQ
cm90b3R5cGU7CiAKICAgICBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE51bWJlclByb3RvdHlwZSopOwot
ICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBC
YXNlOworCiAgICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIE51bWJlclByb3RvdHlwZSogbnVtUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbnVt
UHJvdG90eXBlKTsKQEAgLTU0LDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3Bl
cnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEludGVybmFsRnVuY3Rpb246OlN0cnVj
dHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgTnVtYmVyQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBOdW1iZXJQcm90b3R5cGUqKTsK
ICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0
RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7
CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBOdW1iZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CisK
ICAgICAgICAgc3RhdGljIE51bWJlck9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJl
ck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNDgxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDEwICsyNiw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51
bWJlclByb3RvdHlwZSA6IHB1YmxpYyBOdW1iZXJPYmplY3QgewotICAgIHByaXZhdGU6Ci0gICAg
ICAgIE51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIE51bWJlck9iamVjdCBCYXNlOwor
CiAgICAgICAgIHN0YXRpYyBOdW1iZXJQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyUHJvdG90
eXBlPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKQEAgLTQ3LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBOdW1iZXJPYmplY3Q6OkFu
b255bW91c1Nsb3RDb3VudCArIDE7CiAKICAgICBwcml2YXRlOgorICAgICAgICBOdW1iZXJQcm90
b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAg
dmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjgsMTAgKzI4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgT2JqZWN0UHJvdG90eXBl
OwogCiAgICAgY2xhc3MgT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlv
biB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmplY3RQcm90b3R5cGUqKTsKLSAgICAKICAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAg
ICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVjdFBy
b3RvdHlwZSogb2JqUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBPYmplY3RD
b25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgb2JqUHJvdG90eXBlKTsK
QEAgLTUxLDYgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IElu
dGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
T2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBPYmplY3RQcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENv
bnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdl
dENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiwxMCArMjYsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBPYmpl
Y3RQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci0gICAgcHJpdmF0ZToKLSAg
ICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0
dXJlKik7Ci0KICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBC
YXNlOworCiAgICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8T2JqZWN0
UHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9i
amVjdCwgc3RydWN0dXJlKTsKQEAgLTQ3LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBKU05vbkZpbmFs
T2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgKyAxOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
T2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3Qm
KTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAgICAgICAgc3Rh
dGljIFJlZ0V4cCogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4s
IFJlZ0V4cEZsYWdzKTsKICAgICAgICAgflJlZ0V4cCgpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDky
NDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
fTsKIAogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSos
IEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwUHJvdG90eXBlKik7Ci0KICAgICBw
dWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgICAg
IHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFByb3Rv
dHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBD
b25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90eXBl
KTsKQEAgLTk0LDYgKzkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdz
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwg
SlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHBQcm90b3R5cGUqKTsKICAgICAgICAg
dmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwog
ICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJh
eS5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
Z0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMCArMjUsOSBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBNYXRjaGVzQXJyYXkgOiBwdWJsaWMgSlNB
cnJheSB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0
ZSosIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0
eXBlZGVmIEpTQXJyYXkgQmFzZTsKKwogICAgICAgICBzdGF0aWMgUmVnRXhwTWF0Y2hlc0FycmF5
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGN0b3JQ
cml2YXRlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
UmVnRXhwTWF0Y2hlc0FycmF5PigqZXhlYy0+aGVhcCgpKSkgUmVnRXhwTWF0Y2hlc0FycmF5KGV4
ZWMsIGN0b3JQcml2YXRlKTsKQEAgLTM2LDYgKzM1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZpcnR1YWwgflJlZ0V4cE1hdGNoZXNBcnJheSgpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgUmVnRXhwTWF0Y2hlc0FycmF5KEV4ZWNTdGF0ZSosIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0
ZSopOworICAgICAgICAKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3ViY2xhc3NEYXRhKCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkocmV2
aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAgKzI3LDkgQEAKIG5hbWVzcGFjZSBKU0Mgewog
ICAgIAogICAgIGNsYXNzIFJlZ0V4cE9iamVjdCA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxP
YmplY3QgewotICAgIHByb3RlY3RlZDoKLSAgICAgICAgUmVnRXhwT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwKik7Ci0KICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVk
ZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIFJlZ0V4
cE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0PigqZXhlYy0+
aGVhcCgpKSkgUmVnRXhwT2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHApOwpA
QCAtNDEsOCArNDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cE9iamVj
dChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKLQogICAgICAg
ICB2aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsKIAogICAgICAgICB2b2lkIHNldFJlZ0V4cChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFJlZ0V4cCogcikgeyBkLT5yZWdFeHAuc2V0KGdsb2JhbERh
dGEsIHRoaXMsIHIpOyB9CkBAIC03Niw2ICs3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFJlZ0V4cE9iamVjdChKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIFJlZ0V4cCopOwogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0T3du
UHJvcGVydHlTbG90IHwgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAg
KzI3LDkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwUHJvdG90eXBlIDog
cHVibGljIFJlZ0V4cE9iamVjdCB7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBSZWdFeHBQcm90
b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsK
LQogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBSZWdFeHBPYmplY3QgQmFzZTsKKwogICAg
ICAgICBzdGF0aWMgUmVnRXhwUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUmVnRXhwKiBy
ZWdFeHApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxS
ZWdFeHBQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBQcm90b3R5cGUoZXhlYywgZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CkBAIC00NCw2ICs0Myw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFJlZ0V4cFByb3Rv
dHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ0V4cCopOwog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNH
ZXRPd25Qcm9wZXJ0eVNsb3QgfCBSZWdFeHBPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiAgICAg
cHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2Nv
cGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7
CisKICAgICAgICAgc3RhdGljIFNjb3BlQ2hhaW5Ob2RlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVj
LCBTY29wZUNoYWluTm9kZSogbmV4dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFs
VGhpcykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFNj
b3BlQ2hhaW5Ob2RlPigqZXhlYy0+aGVhcCgpKSkgU2NvcGVDaGFpbk5vZGUobmV4dCwgb2JqZWN0
LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCShy
ZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2
YWxBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIFN0cmljdEV2YWxBY3RpdmF0aW9uIDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAg
ICAgc3RhdGljIFN0cmljdEV2YWxBY3RpdmF0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFN0cmljdEV2YWxBY3RpdmF0
aW9uPigqZXhlYy0+aGVhcCgpKSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oZXhlYyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJ
KHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgU3RyaW5nUHJvdG90eXBlOwogCiAgICAgY2xhc3MgU3RyaW5nQ29u
c3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAg
ICAgU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBTdHJpbmdQcm90b3R5cGUqKTsKLSAgICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0
eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgU3RyaW5nQ29u
c3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJQcm90b3R5
cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJp
bmdDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ0NvbnN0cnVjdG9yKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBzdHJQcm90b3R5cGUpOwpAQCAtNDgsNiArNDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3Ry
dWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgorICAgICAgICBTdHJpbmdDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFN0cmluZ1Byb3RvdHlwZSop
OwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1
Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEm
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBjb25zdCBV
U3RyaW5nJik7CiAgICAgICAgICAgICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IEpTV3JhcHBlck9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+
aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7ICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
T2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAkocmV2aXNpb24gOTI0ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNB
c1VuZGVmaW5lZC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIC8vIFdlYkNvcmUgdXNlcyB0aGlzIHRvIG1ha2Ugc3R5bGUuZmlsdGVyIHVuZGV0
ZWN0YWJsZQogICAgIGNsYXNzIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
IDogcHVibGljIFN0cmluZ09iamVjdCB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFN0
cmluZ09iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3RUaGF0TWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYg
c3RyaW5nKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
U3RyaW5nT2JqZWN0VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ+KCpleGVjLT5oZWFwKCkpKSBT
dHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZChleGVjLApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlzaW9u
IDkyNDgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFN0cmluZ1Byb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVy
ZSopOwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFN0cmluZ09iamVjdCBCYXNlOwor
CiAgICAgICAgIHN0YXRpYyBTdHJpbmdQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nUHJvdG90
eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIFN0cnVjdHVyZSA6IHB1YmxpYyBKU0NlbGwgewogICAgIHB1YmxpYzoKICAg
ICAgICAgZnJpZW5kIGNsYXNzIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTsKKworICAgICAgICB0
eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5m
byYgdHlwZUluZm8sIHVuc2lnbmVkIGFub255bW91c1Nsb3RDb3VudCwgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8pCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLnN0
cnVjdHVyZVN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAg
IHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBzdGF0aWMg
U3RydWN0dXJlQ2hhaW4qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVy
ZSogaGVhZCkgeyByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2Jh
bERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0
dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCksIGhlYWQpOyB9CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KiBoZWFkKCkgeyByZXR1cm4gbV92ZWN0b3IuZ2V0KCk7IH0KICAgICAgICAgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdEds
dWUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDkyNDk0KQorKysgU291cmNlL0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTA4LTA1ICBNYXJrIEhhaG5lbmJl
cmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFBhcmVudENsYXNzIHR5
cGVkZWYgaW4gYWxsIEpTQyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NTczMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEp1c3QgYWRkZWQgdGhlIEJhc2UgdHlwZWRlZnMgaW4gYWxsIHRoZSBj
bGFzc2VzIHRoYXQgYXJlIGEgc3ViY2xhc3Mgb2YgSlNDZWxsIAorICAgICAgICB0byBwb2ludCBh
dCB0aGVpciBwYXJlbnQgY2xhc3Nlcy4gIFRoaXMgaXMgYSBjaGFuZ2UgdG8gc3VwcG9ydCBmdXR1
cmUgY2hhbmdlcyB0byB0aGUgd2F5CisgICAgICAgIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3Rv
cnMgYXJlIGltcGxlbWVudGVkIGluIEpTIG9iamVjdHMuCisKKyAgICAgICAgKiBVc2VyT2JqZWN0
SW1wLmg6CisKIDIwMTEtMDgtMDQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGdXR1cmUtcHJvb2YgWGNvZGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9KU1J1bi5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1
ZS9KU1J1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAKIGNsYXNzIEpTR2x1
ZUdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgcHVibGljOgorICAg
ICAgICB0eXBlZGVmIEpTR2xvYmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIEpTR2x1
ZUdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRmxhZ3MgZmxhZ3MgPSBrSlNGbGFnTm9uZSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTR2x1ZUdsb2JhbE9iamVjdD4oZ2xv
YmFsRGF0YS5oZWFwKSkgSlNHbHVlR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwg
ZmxhZ3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCShyZXZpc2lv
biA5MjQ4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKIAogY2xhc3MgVXNlck9iamVjdEltcCA6IHB1Ymxp
YyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKKwogICAgIHN0YXRpYyBVc2VyT2JqZWN0SW1wKiBjcmVhdGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNVc2VyT2JqZWN0KiB1c2VyT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFVzZXJPYmplY3RJ
bXA+KGdsb2JhbERhdGEuaGVhcCkpIFVzZXJPYmplY3RJbXAoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCB1c2VyT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNDk0KQorKysgU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEt
MDgtMDUgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAgICAg
ICBBZGQgUGFyZW50Q2xhc3MgdHlwZWRlZiBpbiBhbGwgSlNDIGNsYXNzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAg
ICAgIEp1c3QgYWRkZWQgdGhlIEJhc2UgdHlwZWRlZnMgaW4gYWxsIHRoZSBjbGFzc2VzIHRoYXQg
YXJlIGEgc3ViY2xhc3Mgb2YgSlNDZWxsIAorICAgICAgICB0byBwb2ludCBhdCB0aGVpciBwYXJl
bnQgY2xhc3Nlcy4gIFRoaXMgaXMgYSBjaGFuZ2UgdG8gc3VwcG9ydCBmdXR1cmUgY2hhbmdlcyB0
byB0aGUgd2F5CisgICAgICAgIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIGltcGxl
bWVudGVkIGluIEpTIG9iamVjdHMuCisKKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGltZU9iamVj
dC5oOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAqIGJyaWRn
ZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgICogYnJpZGdlL2puaS9qc2Mv
SmF2YVJ1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9i
amVjdC5oOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAg
ICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcGl4
bWFwcnVudGltZS5jcHA6CisgICAgICAgICogYnJpZGdlL3F0L3F0X3J1bnRpbWUuaDoKKyAgICAg
ICAgKiBicmlkZ2UvcnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9v
YmplY3QuaDoKKyAgICAgICAgKiBicmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwOgorCiAyMDExLTA4
LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVt
b3ZlIFBsdWdpbkhhbHRlcgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRp
b0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdWRpb0NvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNBdWRpb0NvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNBdWRpb0NvbnN0cnVj
dG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IHsKICAgICBwdWJsaWM6Cisg
ICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFzZTsKKwogICAgICAg
ICBzdGF0aWMgSlNBdWRpb0NvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMs
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxs
PEpTQXVkaW9Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTQXVkaW9Db25zdHJ1Y3Rvcihl
eGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gQmFzZSBjbGFzcyBmb3IgYWxsIGNvbnN0
cnVjdG9yIG9iamVjdHMgaW4gdGhlIEpTQyBiaW5kaW5ncy4KICAgICBjbGFzcyBET01Db25zdHJ1
Y3Rvck9iamVjdCA6IHB1YmxpYyBKU0RPTVdyYXBwZXIgewogICAgIHB1YmxpYzoKKyAgICAgICAg
dHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKKwogICAgICAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8p
OwpAQCAtNjAsNiArNjIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gY2FuIG5ldmVy
IGJlIHVzZWQgZnJvbSBhIFdvcmtlckNvbnRleHQuCiAgICAgY2xhc3MgRE9NQ29uc3RydWN0b3JX
aXRoRG9jdW1lbnQgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewogICAgIHB1YmxpYzoK
KyAgICAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOworCiAgICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAkocmV2aXNpb24gOTI0ODEp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdyYXBwZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsOCBAQCBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBj
bGFzcyBKU0RPTVdyYXBwZXIgOiBwdWJsaWMgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qg
ewogcHVibGljOgorICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFz
ZTsKKwogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdAogICAgIHsK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oSlNDOjpKU09i
amVjdFdpdGhHbG9iYWxPYmplY3Q6Omdsb2JhbE9iamVjdCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjQ4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEpTSW1hZ2VDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1
bWVudCB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yV2l0aERv
Y3VtZW50IEJhc2U7CisKICAgICAgICAgc3RhdGljIEpTSW1hZ2VDb25zdHJ1Y3RvciogY3JlYXRl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU0ltYWdlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkp
KSBKU0ltYWdlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0b3Iu
aAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlv
bkNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNPcHRpb25Db25zdHJ1Y3RvciA6IHB1YmxpYyBET01D
b25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIERP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJhc2U7CisKICAgICAgICAgc3RhdGljIEpTT3B0aW9u
Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNPcHRpb25Db25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTT3B0aW9uQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTMwNjYsNiArMzA2Niw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24K
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgJHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7XG5cbiIp
OwogICAgIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgInB1YmxpYzpcbiIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7XG4i
KTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljICRjb25zdHJ1Y3RvckNsYXNz
TmFtZSogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
cmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPigqZXhl
Yy0+aGVhcCgpKSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTtcbiIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAJKHJldmlzaW9uIDkyNDgx
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDcgQEAgcHJpdmF0ZToKICAgICBK
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAogcHVibGljOgorICAgIHR5cGVkZWYgRE9NQ29uc3Ry
dWN0b3JPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3Iq
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBu
ZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDYgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0Kik7CiAKIHB1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2Jq
ZWN0IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1
Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
CShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDcgQEAgcHJp
dmF0ZToKICAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAogcHVibGljOgorICAgIHR5cGVkZWYgRE9N
Q29uc3RydWN0b3JPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0T2JqQ29uc3RydWN0b3Iq
IGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBu
ZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9iakNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgSlNUZXN0T2JqQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZS5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgcHJpdmF0ZToKICAgICBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAogcHVibGljOgorICAgIHR5cGVk
ZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVh
cCgpKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoZXhl
Yywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVu
dGltZV9hcnJheS5oCShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9y
dW50aW1lX2FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgCiBjbGFzcyBSdW50aW1lQXJyYXkgOiBwdWJsaWMgSlNBcnJheSB7CiBwdWJs
aWM6CisgICAgdHlwZWRlZiBKU0FycmF5IEJhc2U7CisKICAgICBzdGF0aWMgUnVudGltZUFycmF5
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBCaW5kaW5nczo6QXJyYXkqIGFycmF5KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4oKmV4ZWMtPmhl
YXAoKSkpIFJ1bnRpbWVBcnJheShleGVjLCBhcnJheSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgUnVudGltZU1ldGhvZCA6IHB1YmxpYyBJbnRlcm5hbEZ1
bmN0aW9uIHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwog
ICAgIHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRp
ZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAo
KSkpIFJ1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG5hbWUsIG1l
dGhvZExpc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHJl
dmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIEJpbmRpbmdzIHsKIAog
Y2xhc3MgUnVudGltZU9iamVjdCA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qgewog
cHVibGljOgorICAgIHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CisKICAg
ICBzdGF0aWMgUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5z
dGFuY2U+IGluc3RhbmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxs
PFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvdGVzdHF0YmluZGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS90ZXN0cXRiaW5kaW5ncy5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBA
QCBjbGFzcyBNeU9iamVjdCA6IHB1YmxpYyBRT2JqZWN0CiAgICAgUV9QUk9QRVJUWShpbnQgdGVz
dEludCBSRUFEIHRlc3RJbnQgV1JJVEUgc2V0VGVzdEludCkKIAogcHVibGljOgorICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAgICAgTXlPYmplY3QoKSA6IFFPYmplY3QoMCks
IGludGVnZXIoMCl7fQogCiAgICAgdm9pZCBzZXRUZXN0U3RyaW5nKGNvbnN0IFFTdHJpbmcgJnN0
cikgewpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCShyZXZp
c2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgY2xhc3MgQ0luc3RhbmNlOwogCiBjbGFz
cyBDUnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50aW1lT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0
eXBlZGVmIFJ1bnRpbWVPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBDUnVudGltZU9iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFz
c1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVPYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBA
IGJvb2wgQ0luc3RhbmNlOjpzdXBwb3J0c0ludm9rZURlZmF1bHRNZXQKIAogY2xhc3MgQ1J1bnRp
bWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBS
dW50aW1lTWV0aG9kIEJhc2U7CisKICAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPENSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkg
Q1J1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAko
cmV2aXNpb24gOTI0ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5z
dGFuY2VKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDggQEAgSlNWYWx1ZSBK
YXZhSW5zdGFuY2U6OmJvb2xlYW5WYWx1ZSgpIGNvbgogCiBjbGFzcyBKYXZhUnVudGltZU1ldGhv
ZCA6IHB1YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1bnRpbWVN
ZXRob2QgQmFzZTsKKwogICAgIHN0YXRpYyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBK
YXZhUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5o
CShyZXZpc2lvbiA5MjQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFS
dW50aW1lT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgY2xhc3MgSmF2
YUluc3RhbmNlOwogCiBjbGFzcyBKYXZhUnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50aW1lT2Jq
ZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1bnRpbWVPYmplY3QgQmFzZTsKKwogICAgIHN0
YXRpYyBKYXZhUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxKYXZhSW5zdGFuY2U+IGphdmFJbnN0KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1lT2JqZWN0
PigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBq
YXZhSW5zdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50
aW1lT2JqZWN0LmgJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvT2JqQ1J1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBj
bGFzcyBPYmpjSW5zdGFuY2U7CiAKIGNsYXNzIE9iakNSdW50aW1lT2JqZWN0IDogcHVibGljIFJ1
bnRpbWVPYmplY3QgewogcHVibGljOgorICAgIHR5cGVkZWYgUnVudGltZU9iamVjdCBCYXNlOwor
CiAgICAgc3RhdGljIE9iakNSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPE9iamNJbnN0YW5jZT4gaW5z
dCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU9i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dCwgaW5zdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0JKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2Jq
Y19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTcyLDYgKzE3Miw4IEBAIGJvb2wgT2Jq
Y0luc3RhbmNlOjpzdXBwb3J0c0ludm9rZURlZmF1bHQKIAogY2xhc3MgT2JqQ1J1bnRpbWVNZXRo
b2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBSdW50aW1l
TWV0aG9kIEJhc2U7CisKICAgICBzdGF0aWMgT2JqQ1J1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iakNSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkg
T2JqQ1J1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCShyZXZpc2lvbiA5MjQ4
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIHByaXZhdGU6CiAKIGNsYXNzIE9iamNGYWxsYmFja09i
amVjdEltcCA6IHB1YmxpYyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewogcHVibGljOgorICAg
IHR5cGVkZWYgSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CisKICAgICBzdGF0aWMgT2Jq
Y0ZhbGxiYWNrT2JqZWN0SW1wKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBPYmpjSW5zdGFuY2UqIGluc3RhbmNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPigqZXhlYy0+aGVhcCgpKSkgT2JqY0ZhbGxiYWNrT2JqZWN0
SW1wKGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDkyNDgxKQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTAsNiArNTAsOCBAQCBRX0dMT0JBTF9TVEFUSUMoUXRJbnN0YW5jZTo6UXRTZW5kZXJT
dGFjCiAvLyBEZXJpdmVkIFJ1bnRpbWVPYmplY3QKIGNsYXNzIFF0UnVudGltZU9iamVjdCA6IHB1
YmxpYyBSdW50aW1lT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1bnRpbWVPYmplY3Qg
QmFzZTsKKwogICAgIHN0YXRpYyBRdFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8SW5zdGFuY2U+IGlu
c3RhbmNlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGlt
ZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFF0UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmpl
Y3QsIGluc3RhbmNlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBy
dW50aW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcGl4
bWFwcnVudGltZS5jcHAJKHJldmlzaW9uIDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTgsNiArMTk4LDgg
QEAgc3RydWN0IFF0UGl4bWFwTWV0YURhdGEgewogLy8gRGVyaXZlZCBSdW50aW1lT2JqZWN0CiBj
bGFzcyBRdFBpeG1hcFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgUnVudGltZU9iamVjdCB7CiBwdWJs
aWM6CisgICAgdHlwZWRlZiBSdW50aW1lT2JqZWN0IEJhc2U7CisKICAgICBzdGF0aWMgUXRQaXht
YXBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxRdFBpeG1hcFJ1bnRpbWVPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBRdFBpeG1hcFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0
YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfcnVudGltZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9ydW50aW1lLmgJKHJldmlzaW9u
IDkyNDgxKQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X3J1bnRpbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw4IEBAIGNsYXNzIFF0UnVudGltZUNvbm5lY3Rpb25NZXRo
b2REYXRhIDogcHUKIC8vIENvbW1vbiBiYXNlIGNsYXNzIChkb2Vzbid0IHJlYWxseSBkbyBhbnl0
aGluZyBpbnRlcmVzdGluZykKIGNsYXNzIFF0UnVudGltZU1ldGhvZCA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsK
KwogICAgIHZpcnR1YWwgflF0UnVudGltZU1ldGhvZCgpOwogCiAgICAgc3RhdGljIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CkBAIC0xNTAsNiArMTUyLDggQEAgcHJvdGVjdGVkOgogY2xhc3MgUXRS
dW50aW1lTWV0YU1ldGhvZCA6IHB1YmxpYyBRdFJ1bnRpbWVNZXRob2QKIHsKIHB1YmxpYzoKKyAg
ICB0eXBlZGVmIFF0UnVudGltZU1ldGhvZCBCYXNlOworCiAgICAgc3RhdGljIFF0UnVudGltZU1l
dGFNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG4sIFBh
c3NSZWZQdHI8UXRJbnN0YW5jZT4gaW5zdCwgaW50IGluZGV4LCBjb25zdCBRQnl0ZUFycmF5JiBz
aWduYXR1cmUsIGJvb2wgYWxsb3dQcml2YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPFF0UnVudGltZU1ldGFNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRp
bWVNZXRhTWV0aG9kKGV4ZWMsIG4sIGluc3QsIGluZGV4LCBzaWduYXR1cmUsIGFsbG93UHJpdmF0
ZSk7CkBAIC0xNzgsNiArMTgyLDggQEAgY2xhc3MgUXRDb25uZWN0aW9uT2JqZWN0OwogY2xhc3Mg
UXRSdW50aW1lQ29ubmVjdGlvbk1ldGhvZCA6IHB1YmxpYyBRdFJ1bnRpbWVNZXRob2QKIHsKIHB1
YmxpYzoKKyAgICB0eXBlZGVmIFF0UnVudGltZU1ldGhvZCBCYXNlOworCiAgICAgc3RhdGljIFF0
UnVudGltZUNvbm5lY3Rpb25NZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIG4sIGJvb2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3Qs
IGludCBpbmRleCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KCpleGVj
LT5oZWFwKCkpKSBRdFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIG4sIGlzQ29ubmVjdCwg
aW5zdCwgaW5kZXgsIHNpZ25hdHVyZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5
MjQ5NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDExLTA4LTA1ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgQWRkIFBhcmVudENsYXNzIHR5cGVkZWYgaW4gYWxsIEpTQyBj
bGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NTczMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1
c3QgYWRkZWQgdGhlIEJhc2UgdHlwZWRlZnMgaW4gYWxsIHRoZSBjbGFzc2VzIHRoYXQgYXJlIGEg
c3ViY2xhc3Mgb2YgSlNDZWxsIAorICAgICAgICB0byBwb2ludCBhdCB0aGVpciBwYXJlbnQgY2xh
c3Nlcy4gIFRoaXMgaXMgYSBjaGFuZ2UgdG8gc3VwcG9ydCBmdXR1cmUgY2hhbmdlcyB0byB0aGUg
d2F5CisgICAgICAgIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIGltcGxlbWVudGVk
IGluIEpTIG9iamVjdHMuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNl
Lm1tOgorCiAyMDExLTA4LTA1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIFBsdWdpbkhhbHRlcgpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCShyZXZpc2lvbiA5MjQ4MSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE3OSw2ICsxNzksOCBAQCBKU1ZhbHVlIFByb3h5SW5zdGFuY2U6Omlu
dm9rZShKU0M6OkV4ZWNTCiAKIGNsYXNzIFByb3h5UnVudGltZU1ldGhvZCA6IHB1YmxpYyBSdW50
aW1lTWV0aG9kIHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1bnRpbWVNZXRob2QgQmFzZTsKKwog
ICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRp
bmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPFByb3h5UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFByb3h5UnVudGltZU1l
dGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103312</attachid>
            <date>2011-08-08 16:41:44 -0700</date>
            <delta_ts>2011-08-09 13:46:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65731-20110808164148.patch</filename>
            <type>text/plain</type>
            <size>100399</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI2NTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTkgQEAK
KzIwMTEtMDgtMDggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgUGFyZW50Q2xhc3MgdHlwZWRlZiBpbiBhbGwgSlNDIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzMxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBhZGRlZCB0aGUg
QmFzZSB0eXBlZGVmcyBpbiBhbGwgdGhlIGNsYXNzZXMgdGhhdCBhcmUgYSBzdWJjbGFzcyBvZiBK
U0NlbGwgCisgICAgICAgIHRvIHBvaW50IGF0IHRoZWlyIHBhcmVudCBjbGFzc2VzLiAgVGhpcyBp
cyBhIGNoYW5nZSB0byBzdXBwb3J0IGZ1dHVyZSBjaGFuZ2VzIHRvIHRoZSB3YXkKKyAgICAgICAg
Y29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgaW1wbGVtZW50ZWQgaW4gSlMgb2JqZWN0
cywgYW1vbmcgb3RoZXIgdGhpbmdzLgorCisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tDb25zdHJ1
Y3Rvci5oOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKToKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oOgorICAg
ICAgICAoSlNDOjo6OmFzQ2FsbGJhY2tPYmplY3QpOgorICAgICAgICAoSlNDOjo6OkpTQ2FsbGJh
Y2tPYmplY3QpOgorICAgICAgICAoSlNDOjo6OmluaXQpOgorICAgICAgICAoSlNDOjo6OmNsYXNz
TmFtZSk6CisgICAgICAgIChKU0M6Ojo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpT
Qzo6OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAoSlNDOjo6OnB1dCk6Cisg
ICAgICAgIChKU0M6Ojo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjo6OmdldENvbnN0
cnVjdERhdGEpOgorICAgICAgICAoSlNDOjo6OmNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6Ojo6
aGFzSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjo6OmdldENhbGxEYXRhKToKKyAgICAgICAgKEpT
Qzo6OjpjYWxsKToKKyAgICAgICAgKEpTQzo6OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAg
ICAgKEpTQzo6Ojp0b051bWJlcik6CisgICAgICAgIChKU0M6Ojo6dG9TdHJpbmcpOgorICAgICAg
ICAoSlNDOjo6OnNldFByaXZhdGUpOgorICAgICAgICAoSlNDOjo6OmdldFByaXZhdGUpOgorICAg
ICAgICAoSlNDOjo6OmluaGVyaXRzKToKKyAgICAgICAgKEpTQzo6OjpnZXRTdGF0aWNWYWx1ZSk6
CisgICAgICAgIChKU0M6Ojo6c3RhdGljRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoSlNDOjo6
OmNhbGxiYWNrR2V0dGVyKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24u
aDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6Cisg
ICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9B
cnJheVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQm9vbGVhbkNvbnN0cnVjdG9yLmg6
CisgICAgICAgICogcnVudGltZS9Cb29sZWFuT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9C
b29sZWFuUHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKiBydW50aW1lL0RhdGVJbnN0YW5jZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0
ZVByb3RvdHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3JQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50
aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL0dldHRlclNldHRl
ci5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlv
bi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNG
dW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTTm90QW5PYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0YXRpY1Njb3BlT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNXcmFwcGVyT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9NYXRoT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9OYXRp
dmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJvclByb3Rv
dHlwZS5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaDoKKyAgICAgICAg
KiBydW50aW1lL051bWJlck9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90
eXBlLmg6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuaDoK
KyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmg6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAg
ICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJpbmdDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZC5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmg6CisgICAgICAgICogcnVu
dGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisK
IDIwMTEtMDgtMDggIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBV
c2luZyBtcHJvdGVjdCB0byBjcmVhdGUgZ3VhcmQgcGFnZXMgYnJlYWtzIG91ciB1c2Ugb2YgbWFk
dmlzZSB0byByZWxlYXNlIGV4ZWN1dGFibGUgbWVtb3J5CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ4LDYgKzE0OCw4IEBAIHByaXZhdGU6CiAgICAgR2xvYmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IFZlY3RvcjxVU3RyaW5nPiYgYXJndW1l
bnRzKTsKIAogcHVibGljOgorICAgIHR5cGVkZWYgSlNHbG9iYWxPYmplY3QgQmFzZTsKKwogICAg
IHN0YXRpYyBHbG9iYWxPYmplY3QqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBWZWN0b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2Jh
bERhdGEuaGVhcCkpIEdsb2JhbE9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGFyZ3VtZW50
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Nv
bnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgewotcHJvdGVjdGVkOgotICAgIEpTQ2FsbGJhY2tD
b25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEpTQ2xhc3NSZWYsIEpTT2Jq
ZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayk7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU09i
amVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBKU0NhbGxiYWNrQ29uc3Ry
dWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0NsYXNzUmVmIGNsYXNzUmVmLCBKU09iamVjdENh
bGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2FsbGJhY2spIAogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkp
IEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NSZWYs
IGNhbGxiYWNrKTsKQEAgLTUxLDYgKzUxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVk
OgorICAgIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSos
IEpTQ2xhc3NSZWYsIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayk7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSW1wbGVtZW50c0hhc0luc3RhbmNl
IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oCShyZXZpc2lvbiA5MjYx
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAgcHJvdGVjdGVkOgogICAgIEpTQ2FsbGJhY2tG
dW5jdGlvbihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b25DYWxsYmFjaywgY29uc3QgSWRlbnRpZmllciYgbmFtZSk7CiAKIHB1YmxpYzoKKyAgICB0eXBl
ZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwogICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rp
b24qIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxi
YWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZXhlYywgZ2xv
YmFsT2JqZWN0LCBjYWxsYmFjaywgbmFtZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTQ2FsbGJhY2tPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0
LDE3ICsxMTQsMTkgQEAgc3RydWN0IEpTQ2FsbGJhY2tPYmplY3REYXRhIDogV2Vha0hhbmRsZQog
fTsKIAogICAgIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1jbGFzcyBKU0NhbGxiYWNrT2JqZWN0
IDogcHVibGljIEJhc2UgewordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK2NsYXNzIEpTQ2FsbGJh
Y2tPYmplY3QgOiBwdWJsaWMgUGFyZW50IHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrT2Jq
ZWN0KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSlNDbGFzc1JlZiwg
dm9pZCogZGF0YSk7CiAgICAgSlNDYWxsYmFja09iamVjdChKU0dsb2JhbERhdGEmLCBKU0NsYXNz
UmVmLCBTdHJ1Y3R1cmUqKTsKICAgICAvLyBXZSdkIGxpa2UgdG8gdXNlIHRoZSBwbGFjZW1lbnQg
dmVyc2lvbiBvZiBvcGVyYXRvciBuZXcgZGVmaW5lZCBpbiBKU0NlbGwsIGJ1dCAKLSAgICAvLyB3
ZSBjYW4ndCBiZWNhdXNlIEJhc2UgaXMgYSB0ZW1wbGF0ZSBhcmd1bWVudCwgc28gd2UganVzdCBk
dXBsaWNhdGUgdGhlIHNhbWUgCisgICAgLy8gd2UgY2FuJ3QgYmVjYXVzZSBQYXJlbnQgaXMgYSB0
ZW1wbGF0ZSBhcmd1bWVudCwgc28gd2UganVzdCBkdXBsaWNhdGUgdGhlIHNhbWUgCiAgICAgLy8g
ZnVuY3Rpb25hbGl0eSBoZXJlLgogICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHB0cikgeyByZXR1cm4gcHRyOyB9CiAKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFBhcmVudCBCYXNl
OworCiAgICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0Ns
YXNzUmVmIGNsYXNzUmVmLCB2b2lkKiBkYXRhKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAo
YWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNr
T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBjbGFzc1JlZiwgZGF0YSk7CkBA
IC0xNDQsNyArMTQ2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90bykgCiAgICAg
eyAKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIHByb3RvLCBU
eXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEJhc2U6OkFub255bW91c1Nsb3RD
b3VudCwgJnNfaW5mbyk7IAorICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFs
RGF0YSwgcHJvdG8sIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgUGFyZW50
OjpBbm9ueW1vdXNTbG90Q291bnQsICZzX2luZm8pOyAKICAgICB9CiAgICAgCiAgICAgSlNWYWx1
ZSBnZXRQcml2YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25z
dApAQCAtMTYzLDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBQcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmcgfCBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgfCBPdmVycmlkZXNIYXNJbnN0YW5jZSB8IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4gfCBPdmVy
cmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gUHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
IHwgT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW1wbGVtZW50c0hhc0luc3RhbmNlIHwg
T3ZlcnJpZGVzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVz
R2V0UHJvcGVydHlOYW1lcyB8IFBhcmVudDo6U3RydWN0dXJlRmxhZ3M7CiAKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0OwpAQCAtMTg4LDEwICsxOTAsMTAg
QEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUygoc3Rh
dGljX2Nhc3Q8QmFzZSo+KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnNfaW5mbyk7
CisgICAgICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoKHN0YXRpY19jYXN0PFBhcmVudCo+
KHRoaXMpKSwgJkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6c19pbmZvKTsKICAgICAgICAgQ09N
UElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKLSAgICAgICAgQVNTRVJUKEJh
c2U6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Ci0g
ICAgICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CisgICAgICAgIEFTU0VSVChQYXJl
bnQ6OnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7Cisg
ICAgICAgIFBhcmVudDo6dmlzaXRDaGlsZHJlbih2aXNpdG9yKTsKICAgICAgICAgbV9jYWxsYmFj
a09iamVjdERhdGEtPnZpc2l0Q2hpbGRyZW4odmlzaXRvcik7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsMzYgKzQyLDM2IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KLWlubGluZSBKU0Nh
bGxiYWNrT2JqZWN0PEJhc2U+KiBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojphc0NhbGxiYWNrT2Jq
ZWN0KEpTVmFsdWUgdmFsdWUpCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgoraW5saW5lIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50PiogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNr
T2JqZWN0KEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGFzT2JqZWN0KHZhbHVlKS0+aW5o
ZXJpdHMoJnNfaW5mbykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0
Kj4oYXNPYmplY3QodmFsdWUpKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1KU0NhbGxi
YWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYg
anNDbGFzcywgdm9pZCogZGF0YSkKLSAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUp
Cit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgorSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpKU0Nh
bGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQ2xhc3NSZWYganNDbGFzcywgdm9pZCogZGF0YSkK
KyAgICA6IFBhcmVudChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSkKICAgICAsIG1fY2FsbGJhY2tP
YmplY3REYXRhKGFkb3B0UHRyKG5ldyBKU0NhbGxiYWNrT2JqZWN0RGF0YShkYXRhLCBqc0NsYXNz
KSkpCiB7Ci0gICAgQVNTRVJUKEJhc2U6OmluaGVyaXRzKCZzX2luZm8pKTsKKyAgICBBU1NFUlQo
UGFyZW50Ojppbmhlcml0cygmc19pbmZvKSk7CiAgICAgaW5pdChleGVjKTsKIH0KIAogLy8gR2xv
YmFsIG9iamVjdCBjb25zdHJ1Y3Rvci4KIC8vIEZJWE1FOiBNb3ZlIHRoaXMgaW50byBhIHNlcGFy
YXRlIEpTR2xvYmFsQ2FsbGJhY2tPYmplY3QgY2xhc3MgZGVyaXZlZCBmcm9tIHRoaXMgb25lLgot
dGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1KU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpKU0NhbGxiYWNr
T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDbGFzc1JlZiBqc0NsYXNzLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICA6IEJhc2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQordGVt
cGxhdGUgPGNsYXNzIFBhcmVudD4KK0pTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6SlNDYWxsYmFj
a09iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2xhc3NSZWYganNDbGFzcywgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBQYXJlbnQoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKQog
ICAgICwgbV9jYWxsYmFja09iamVjdERhdGEoYWRvcHRQdHIobmV3IEpTQ2FsbGJhY2tPYmplY3RE
YXRhKDAsIGpzQ2xhc3MpKSkKIHsKLSAgICBBU1NFUlQoQmFzZTo6aW5oZXJpdHMoJnNfaW5mbykp
OwotICAgIEFTU0VSVChCYXNlOjppc0dsb2JhbE9iamVjdCgpKTsKKyAgICBBU1NFUlQoUGFyZW50
Ojppbmhlcml0cygmc19pbmZvKSk7CisgICAgQVNTRVJUKFBhcmVudDo6aXNHbG9iYWxPYmplY3Qo
KSk7CiAgICAgaW5pdChzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdCo+KHRoaXMpLT5nbG9iYWxF
eGVjKCkpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KLXZvaWQgSlNDYWxsYmFja09iamVj
dDxCYXNlPjo6aW5pdChFeGVjU3RhdGUqIGV4ZWMpCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgor
dm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEFTU0VSVChleGVjKTsKICAgICAKQEAgLTEwMCwxOCArMTAwLDE4IEBAIHZvaWQgSlNDYWxs
YmFja09iamVjdDxCYXNlPjo6aW5pdChFeGVjU3QKICAgICB9CiB9CiAKLXRlbXBsYXRlIDxjbGFz
cyBCYXNlPgotVVN0cmluZyBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpjbGFzc05hbWUoKSBjb25z
dAordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK1VTdHJpbmcgSlNDYWxsYmFja09iamVjdDxQYXJl
bnQ+OjpjbGFzc05hbWUoKSBjb25zdAogewogICAgIFVTdHJpbmcgdGhpc0NsYXNzTmFtZSA9IGNs
YXNzUmVmKCktPmNsYXNzTmFtZSgpOwogICAgIGlmICghdGhpc0NsYXNzTmFtZS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0aGlzQ2xhc3NOYW1lOwogICAgIAotICAgIHJldHVybiBCYXNlOjpj
bGFzc05hbWUoKTsKKyAgICByZXR1cm4gUGFyZW50OjpjbGFzc05hbWUoKTsKIH0KIAotdGVtcGxh
dGUgPGNsYXNzIEJhc2U+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK2Jvb2wgSlNDYWxs
YmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAg
ICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwpAQCAtMTY1LDExICsxNjUsMTEgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PEJhc2U+OjpnZXRPd25Qcm9wZQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHJldHVy
biBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKKyAg
ICByZXR1cm4gUGFyZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBz
bG90KTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8
QmFzZT46OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQor
dGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK2Jvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBpZiAoZ2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCkpIHsKQEAgLTE4NCwxMSArMTg0LDExIEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxCYXNlPjo6Z2V0T3duUHJvcGUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihleGVjLCBwcm9wZXJ0eU5h
bWUsIGRlc2NyaXB0b3IpOworICAgIHJldHVybiBQYXJlbnQ6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpOwogfQogCi10ZW1wbGF0ZSA8Y2xh
c3MgQmFzZT4KLXZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6cHV0KEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgordm9pZCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVm
ID0gdG9SZWYodGhpcyk7CkBAIC0yMzYsMTcgKzIzNiwxNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmpl
Y3Q8QmFzZT46OnB1dChFeGVjU3RhCiAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRy
eSogZW50cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChwcm9wZXJ0eU5hbWUuaW1wbCgpKSkgewog
ICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5CisgICAgICAg
ICAgICAgICAgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpwdXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsgLy8gcHV0IGFzIG92ZXJyaWRlIHByb3BlcnR5
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIHJldHVybiBCYXNlOjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
c2xvdCk7CisgICAgcmV0dXJuIFBhcmVudDo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUs
IHNsb3QpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KLWJvb2wgSlNDYWxsYmFja09iamVj
dDxCYXNlPjo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgorYm9vbCBKU0NhbGxiYWNr
T2JqZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0b1JlZihl
eGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CkBAIC0yODUsMTcg
KzI4NSwxNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmRlbGV0ZVByb3BlCiAgICAg
ICAgIH0KICAgICB9CiAgICAgCi0gICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGV4ZWMs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIFBhcmVudDo6ZGVsZXRlUHJvcGVydHkoZXhlYywg
cHJvcGVydHlOYW1lKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1ib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8QmFzZT46OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQg
cHJvcGVydHlOYW1lKQordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK2Jvb2wgSlNDYWxsYmFja09i
amVjdDxQYXJlbnQ+OjpkZWxldGVQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHBy
b3BlcnR5TmFtZSkKIHsKICAgICByZXR1cm4gZGVsZXRlUHJvcGVydHkoZXhlYywgSWRlbnRpZmll
cjo6ZnJvbShleGVjLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+
Ci1Db25zdHJ1Y3RUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmdldENvbnN0cnVjdERhdGEo
Q29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKK3RlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CitD
b25zdHJ1Y3RUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q29uc3RydWN0RGF0YShD
b25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogewogICAgIGZvciAoSlNDbGFzc1JlZiBqc0Ns
YXNzID0gY2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNz
KSB7CiAgICAgICAgIGlmIChqc0NsYXNzLT5jYWxsQXNDb25zdHJ1Y3RvcikgewpAQCAtMzA2LDE0
ICszMDYsMTQgQEAgQ29uc3RydWN0VHlwZSBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpnZQogICAg
IHJldHVybiBDb25zdHJ1Y3RUeXBlTm9uZTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1F
bmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojpjb25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjKQordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK0VuY29kZWRKU1ZhbHVlIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU09i
amVjdCogY29uc3RydWN0b3IgPSBleGVjLT5jYWxsZWUoKTsKICAgICBKU0NvbnRleHRSZWYgZXhl
Y1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yUmVmID0gdG9S
ZWYoY29uc3RydWN0b3IpOwogICAgIAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gc3Rh
dGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxCYXNlPio+KGNvbnN0cnVjdG9yKS0+Y2xhc3NSZWYo
KTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CisgICAgZm9yIChK
U0NsYXNzUmVmIGpzQ2xhc3MgPSBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4q
Pihjb25zdHJ1Y3RvciktPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5w
YXJlbnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxi
YWNrIGNhbGxBc0NvbnN0cnVjdG9yID0ganNDbGFzcy0+Y2FsbEFzQ29uc3RydWN0b3IpIHsKICAg
ICAgICAgICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihleGVjLT5hcmd1
bWVudENvdW50KCkpOwogICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVu
dHMoYXJndW1lbnRDb3VudCk7CkBAIC0zMzUsOCArMzM1LDggQEAgRW5jb2RlZEpTVmFsdWUgSlND
YWxsYmFja09iamVjdDxCYXNlPjo6YwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1
ZSgpKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1ib29sIEpTQ2FsbGJhY2tPYmplY3Q8
QmFzZT46Omhhc0luc3RhbmNlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1
ZSkKK3RlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+Citib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6aGFzSW5zdGFuY2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlKQog
ewogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RS
ZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwpAQCAtMzU4LDggKzM1OCw4IEBAIGJvb2wgSlNDYWxs
YmFja09iamVjdDxCYXNlPjo6aGFzSW5zdGFuY2UKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXRl
bXBsYXRlIDxjbGFzcyBCYXNlPgotQ2FsbFR5cGUgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6Z2V0
Q2FsbERhdGEoQ2FsbERhdGEmIGNhbGxEYXRhKQordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK0Nh
bGxUeXBlIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Z2V0Q2FsbERhdGEoQ2FsbERhdGEmIGNh
bGxEYXRhKQogewogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsganND
bGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChqc0Ns
YXNzLT5jYWxsQXNGdW5jdGlvbikgewpAQCAtMzcwLDE0ICszNzAsMTQgQEAgQ2FsbFR5cGUgSlND
YWxsYmFja09iamVjdDxCYXNlPjo6Z2V0Q2FsbAogICAgIHJldHVybiBDYWxsVHlwZU5vbmU7CiB9
CiAKLXRlbXBsYXRlIDxjbGFzcyBCYXNlPgotRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVj
dDxCYXNlPjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50Pgor
RW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU0NvbnRleHRSZWYgZXhlY1JlZiA9IHRvUmVmKGV4ZWMpOwogICAgIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uUmVmID0gdG9SZWYoZXhlYy0+Y2FsbGVlKCkpOwogICAgIEpTT2Jq
ZWN0UmVmIHRoaXNPYmpSZWYgPSB0b1JlZihleGVjLT5ob3N0VGhpc1ZhbHVlKCkudG9UaGlzT2Jq
ZWN0KGV4ZWMpKTsKICAgICAKLSAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHN0YXRpY19j
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT4qPih0b0pTKGZ1bmN0aW9uUmVmKSktPmNsYXNzUmVm
KCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgeworICAgIGZvciAo
SlNDbGFzc1JlZiBqc0NsYXNzID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+
Kj4odG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25D
YWxsYmFjayBjYWxsQXNGdW5jdGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAg
ICAgICAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oZXhlYy0+YXJndW1l
bnRDb3VudCgpKTsKICAgICAgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRz
KGFyZ3VtZW50Q291bnQpOwpAQCAtMzk5LDggKzM5OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8QmFzZT46OmMKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
KSk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBCYXNlPgotdm9pZCBKU0NhbGxiYWNrT2JqZWN0PEJh
c2U+OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQordGVtcGxhdGUgPGNsYXNz
IFBhcmVudD4KK3ZvaWQgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0eU5h
bWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVu
dW1lcmF0aW9uTW9kZSBtb2RlKQogewogICAgIEpTQ29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYo
ZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwpAQCAtNDM0LDEx
ICs0MzQsMTEgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpnZXRPd25Qcm9wZQogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIEJhc2U6OmdldE93blByb3BlcnR5TmFtZXMoZXhlYywg
cHJvcGVydHlOYW1lcywgbW9kZSk7CisgICAgUGFyZW50OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKGV4
ZWMsIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KLWRv
dWJsZSBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0Cit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgorZG91YmxlIEpTQ2FsbGJhY2tPYmplY3Q8UGFy
ZW50Pjo6dG9OdW1iZXIoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIC8vIFdlIG5lZWQg
dGhpcyBjaGVjayB0byBndWFyZCBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHRoaXMgb2JqZWN0IGlz
IHJocyBvZgogICAgIC8vIGEgYmluYXJ5IGV4cHJlc3Npb24gd2hlcmUgbGhzIHRocmV3IGFuIGV4
Y2VwdGlvbiBpbiBpdHMgY29udmVyc2lvbiB0bwpAQCAtNDY2LDExICs0NjYsMTEgQEAgZG91Ymxl
IEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnRvTnVtYmVyKAogICAgICAgICAgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIHZhbHVlKS5nZXROdW1iZXIoZFZhbHVlKSA/IGRWYWx1ZSA6IHN0ZDo6bnVt
ZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAgICAgIH0KICAgICAgICAgICAg
IAotICAgIHJldHVybiBCYXNlOjp0b051bWJlcihleGVjKTsKKyAgICByZXR1cm4gUGFyZW50Ojp0
b051bWJlcihleGVjKTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci1VU3RyaW5nIEpTQ2Fs
bGJhY2tPYmplY3Q8QmFzZT46OnRvU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKK3RlbXBs
YXRlIDxjbGFzcyBQYXJlbnQ+CitVU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6dG9T
dHJpbmcoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIEpTQ29udGV4dFJlZiBjdHggPSB0
b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CkBAIC00
OTEsMjMgKzQ5MSwyMyBAQCBVU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnRvU3RyaW5n
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgdmFsdWUpLmdldFN0cmluZyhleGVj
KTsKICAgICAgICAgfQogICAgICAgICAgICAgCi0gICAgcmV0dXJuIEJhc2U6OnRvU3RyaW5nKGV4
ZWMpOworICAgIHJldHVybiBQYXJlbnQ6OnRvU3RyaW5nKGV4ZWMpOwogfQogCi10ZW1wbGF0ZSA8
Y2xhc3MgQmFzZT4KLXZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6c2V0UHJpdmF0ZSh2b2lk
KiBkYXRhKQordGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KK3ZvaWQgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpzZXRQcml2YXRlKHZvaWQqIGRhdGEpCiB7CiAgICAgbV9jYWxsYmFja09iamVjdERh
dGEtPnByaXZhdGVEYXRhID0gZGF0YTsKIH0KIAotdGVtcGxhdGUgPGNsYXNzIEJhc2U+Ci12b2lk
KiBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpnZXRQcml2YXRlKCkKK3RlbXBsYXRlIDxjbGFzcyBQ
YXJlbnQ+Cit2b2lkKiBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFByaXZhdGUoKQogewog
ICAgIHJldHVybiBtX2NhbGxiYWNrT2JqZWN0RGF0YS0+cHJpdmF0ZURhdGE7CiB9CiAKLXRlbXBs
YXRlIDxjbGFzcyBCYXNlPgotYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojppbmhlcml0cyhK
U0NsYXNzUmVmIGMpIGNvbnN0Cit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgorYm9vbCBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OmluaGVyaXRzKEpTQ2xhc3NSZWYgYykgY29uc3QKIHsKICAgICBm
b3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBq
c0NsYXNzLT5wYXJlbnRDbGFzcykKICAgICAgICAgaWYgKGpzQ2xhc3MgPT0gYykKQEAgLTUxNiw4
ICs1MTYsOCBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmluaGVyaXRzKEpTCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KLUpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxCYXNlPjo6Z2V0U3RhdGljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgorSlNWYWx1
ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmdldFN0YXRpY1ZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIEpTT2JqZWN0UmVmIHRo
aXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5
TmFtZVJlZjsKQEAgLTU0NSwxNCArNTQ1LDE0IEBAIEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxC
YXNlPjo6Z2V0U3RhdGkKICAgICByZXR1cm4gSlNWYWx1ZSgpOwogfQogCi10ZW1wbGF0ZSA8Y2xh
c3MgQmFzZT4KLUpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6c3RhdGljRnVuY3Rpb25H
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgorSlNWYWx1ZSBKU0NhbGxi
YWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFzQ2FsbGJhY2tPYmplY3Qoc2xvdEJhc2Up
OworICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBhc0NhbGxiYWNrT2JqZWN0KHNsb3RQ
YXJlbnQpOwogICAgIAogICAgIC8vIENoZWNrIGZvciBjYWNoZWQgb3Igb3ZlcnJpZGUgcHJvcGVy
dHkuCiAgICAgUHJvcGVydHlTbG90IHNsb3QyKHRoaXNPYmopOwotICAgIGlmICh0aGlzT2JqLT5C
YXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90MikpCisgICAg
aWYgKHRoaXNPYmotPlBhcmVudDo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFt
ZSwgc2xvdDIpKQogICAgICAgICByZXR1cm4gc2xvdDIuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlO
YW1lKTsKICAgICAKICAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHRoaXNPYmotPmNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewpAQCAtNTcx
LDEwICs1NzEsMTAgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpzdGF0aWNGdQog
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsICJT
dGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2FsbEFzRnVuY3Rpb24g
Y2FsbGJhY2suIikpOwogfQogCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KLUpTVmFsdWUgSlNDYWxs
YmFja09iamVjdDxCYXNlPjo6Y2FsbGJhY2tHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit0ZW1wbGF0ZSA8Y2xh
c3MgUGFyZW50PgorSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90UGFyZW50LCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iaiA9IGFzQ2Fs
bGJhY2tPYmplY3Qoc2xvdEJhc2UpOworICAgIEpTQ2FsbGJhY2tPYmplY3QqIHRoaXNPYmogPSBh
c0NhbGxiYWNrT2JqZWN0KHNsb3RQYXJlbnQpOwogICAgIAogICAgIEpTT2JqZWN0UmVmIHRoaXNS
ZWYgPSB0b1JlZih0aGlzT2JqKTsKICAgICBSZWZQdHI8T3BhcXVlSlNTdHJpbmc+IHByb3BlcnR5
TmFtZVJlZjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFj
dGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXJBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVidWdnZXJBY3RpdmF0
aW9uIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlw
ZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIERlYnVnZ2VyQWN0
aXZhdGlvbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqIG9iamVj
dCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPERlYnVn
Z2VyQWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgRGVidWdnZXJBY3RpdmF0aW9uKGdsb2Jh
bERhdGEsIG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Bcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEFyZ3VtZW50cyA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAg
ICAgICAgIHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3
IChhbGxvY2F0ZUNlbGw8QXJndW1lbnRzPihnbG9iYWxEYXRhLmhlYXApKSBBcmd1bWVudHMoY2Fs
bEZyYW1lKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBBcnJheVByb3RvdHlwZTsKIAogICAgIGNs
YXNzIEFycmF5Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHJp
dmF0ZToKLSAgICAgICAgQXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVj
dCosIFN0cnVjdHVyZSosIEFycmF5UHJvdG90eXBlKik7Ci0gICAgICAgIAogICAgIHB1YmxpYzoK
KyAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKICAgICAgICAgc3RhdGlj
IEFycmF5Q29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBBcnJheVByb3RvdHlwZSogYXJy
UHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5Q29uc3RydWN0b3IoZXhl
YywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGFyclByb3RvdHlwZSk7CkBAIC00OCw2ICs0Nyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBJbnRlcm5hbEZ1bmN0aW9u
OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CisgICAgICAgIEFycmF5Q29uc3RydWN0
b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBBcnJheVByb3RvdHlw
ZSopOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
UHJvcGVydHlEZXNjcmlwdG9yJik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBcnJheVByb3RvdHlwZShKU0ds
b2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IEpTQXJyYXkgQmFzZTsKKwogICAgICAgICBzdGF0aWMgQXJyYXlQcm90b3R5cGUqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8QXJyYXlQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBBcnJheVByb3RvdHlwZShnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
b29sZWFuQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsMTYgKzI4LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEJvb2xlYW5Q
cm90b3R5cGU7CiAKICAgICBjbGFzcyBCb29sZWFuQ29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJu
YWxGdW5jdGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgQm9vbGVhblByb3RvdHlwZSop
OwotICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOworCiAgICAgICAgIHN0YXRpYyBCb29sZWFuQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBCb29sZWFuUHJvdG90eXBlKiBib29sUHJvdG90eXBlKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhbkNvbnN0cnVjdG9yPigqZXhl
Yy0+aGVhcCgpKSkgQm9vbGVhbkNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBib29sUHJvdG90eXBlKTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
Qm9vbGVhbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
KiwgQm9vbGVhblByb3RvdHlwZSopOwogICAgICAgICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0
Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUg
Z2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJvb2xlYW5PYmplY3Qo
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVk
ZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIEJvb2xlYW5PYmplY3Qq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8Qm9vbGVhbk9i
amVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgQm9vbGVhbk9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5Q
cm90b3R5cGUuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5Qcm90b3R5cGUgOiBwdWJsaWMg
Qm9vbGVhbk9iamVjdCB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgQm9vbGVhblByb3RvdHlwZShF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgor
ICAgICAgICB0eXBlZGVmIEJvb2xlYW5PYmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgQm9v
bGVhblByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxCb29sZWFuUHJvdG90eXBlPigqZXhlYy0+aGVhcCgp
KSkgQm9vbGVhblByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkBAIC00
Nyw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgQW5vbnltb3VzU2xvdENvdW50ID0gQm9vbGVhbk9iamVjdDo6QW5vbnltb3VzU2xvdENvdW50
ICsgMTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIEJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgdmlydHVhbCBib29sIGdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogICAgIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgRGF0ZVByb3RvdHlwZTsKIAogICAgIGNsYXNzIERhdGVDb25z
dHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAg
ICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBEYXRlUHJvdG90eXBlKik7Ci0gICAgICAgIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRl
ZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKICAgICAgICAgc3RhdGljIERhdGVDb25zdHJ1Y3Rv
ciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxEYXRlQ29uc3RydWN0
b3I+KCpleGVjLT5oZWFwKCkpKSBEYXRlQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGRhdGVQcm90b3R5cGUpOwpAQCAtNDgsNiArNDcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJuYWxGdW5jdGlvbjo6U3RydWN0dXJlRmxhZ3M7
CiAKICAgICBwcml2YXRlOgorICAgICAgICBEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBEYXRlUHJvdG90eXBlKik7CiAgICAgICAgIHZpcnR1
YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEmKTsKICAgICAg
ICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkocmV2aXNpb24gOTI2
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlSW5zdGFuY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGF0
ZUluc3RhbmNlKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSopOwogICAgICAgICAKICAgICBwdWJsaWM6
CisgICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGlj
IERhdGVJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGRvdWJsZSBkYXRlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxv
Y2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMs
IHN0cnVjdHVyZSwgZGF0ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRGF0ZVByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRGF0ZVByb3RvdHlwZShFeGVjU3RhdGUqLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBl
ZGVmIERhdGVJbnN0YW5jZSBCYXNlOworCiAgICAgICAgIHN0YXRpYyBEYXRlUHJvdG90eXBlKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPERhdGVQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBEYXRlUHJvdG90eXBlKGV4
ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Vycm9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5jcHAJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNiArMTc0LDggQEAg
cHJpdmF0ZToKICAgICB9CiAKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEludGVybmFsRnVuY3Rpb24g
QmFzZTsKKwogICAgIHN0YXRpYyBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24qIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhl
YXAoKSkpIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5jdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHN0
cnVjdHVyZSwgbWVzc2FnZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjksMTYgKzI5LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEVycm9yUHJvdG90eXBl
OwogCiAgICAgY2xhc3MgRXJyb3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKLSAgICBwcml2YXRlOgotICAgICAgICBFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgRXJyb3JQcm90b3R5cGUqKTsKLQogICAgIHB1Ymxp
YzoKKyAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKICAgICAgICAgc3Rh
dGljIEVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBFcnJvclByb3RvdHlwZSog
ZXJyUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0b3Io
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGVyclByb3RvdHlwZSk7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKKyAgICAgICAgRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3Rh
dGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEVycm9yUHJvdG90eXBlKik7CiAgICAg
ICAgIHZpcnR1YWwgQ29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERhdGEm
KTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwogICAg
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5j
ZS5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9ySW5zdGFuY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEVycm9ySW5zdGFuY2UgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVj
dCB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
KwogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgICAgICBzdGF0
aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
U1ZhbHVlIHByb3RvdHlwZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCAr
MjgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBPYmplY3RQcm90b3R5cGU7CiAKICAg
ICBjbGFzcyBFcnJvclByb3RvdHlwZSA6IHB1YmxpYyBFcnJvckluc3RhbmNlIHsKLSAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIEVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKik7Ci0KICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgRXJyb3JJbnN0
YW5jZSBCYXNlOworCiAgICAgICAgIHN0YXRpYyBFcnJvclByb3RvdHlwZSogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxF
cnJvclByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yUHJvdG90eXBlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKQEAgLTQ1LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgRXJyb3JQcm90b3R5cGUoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
RXJyb3JJbnN0YW5jZTo6U3RydWN0dXJlRmxhZ3M7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBFcnJvckluc3RhbmNlOjpBbm9ueW1vdXNTbG90Q291
bnQgKyAxOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksOCBAQCBwcml2YXRlOgogICAgIH0KIAogcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25G
aW5hbE9iamVjdCBCYXNlOworCiAgICAgc3RhdGljIEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3Iq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgewogICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5o
ZWFwKSkgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsKQEAgLTcyLDYgKzc0
LDggQEAgcHJpdmF0ZToKICAgICB9CiAKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPihnbG9iYWxEYXRhLmhlYXApKSBU
ZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NTMsNyArNTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBO
VU1fUEFSQU1FVEVSU19JU19IT1NUID0gMDsKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBOVU1f
UEFSQU1FVEVSU19OT1RfQ09NUElMRUQgPSAtMTsKIAotICAgIHByb3RlY3RlZDoKICAgICAgICAg
RXhlY3V0YWJsZUJhc2UoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgaW50IG51bVBhcmFtZXRlcnMpCiAgICAgICAgICAgICA6IEpTQ2VsbChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICAsIG1fbnVtUGFyYW1ldGVyc0ZvckNhbGwobnVtUGFy
YW1ldGVycykKQEAgLTY2LDYgKzY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAg
ICAgIHN0YXRpYyBFeGVjdXRhYmxlQmFzZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGludCBudW1QYXJhbWV0ZXJzKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RXhlY3V0YWJsZUJhc2U+KGdsb2Jh
bERhdGEuaGVhcCkpIEV4ZWN1dGFibGVCYXNlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbnVtUGFy
YW1ldGVycyk7CkBAIC0xNjgsNiArMTY5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZSA6IHB1YmxpYyBFeGVjdXRhYmxlQmFzZSB7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEV4ZWN1dGFibGVCYXNl
IEJhc2U7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJs
ZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGNhbGxUaHVuaywgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb25zdHJ1Y3RUaHVuaywgTmF0aXZlRnVuY3Rpb24gY29uc3RydWN0b3IpCiAgICAgICAgIHsK
QEAgLTIxOSw2ICsyMjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFNjcmlwdEV4
ZWN1dGFibGUgOiBwdWJsaWMgRXhlY3V0YWJsZUJhc2UgewogICAgIHB1YmxpYzoKKyAgICAgICAg
dHlwZWRlZiBFeGVjdXRhYmxlQmFzZSBCYXNlOworCiAgICAgICAgIFNjcmlwdEV4ZWN1dGFibGUo
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KQogICAgICAgICAgICAgOiBF
eGVjdXRhYmxlQmFzZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIE5VTV9QQVJBTUVURVJTX05PVF9D
T01QSUxFRCkKICAgICAgICAgICAgICwgbV9zb3VyY2Uoc291cmNlKQpAQCAtMjc3LDYgKzI4Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4
ZWN1dGFibGUgQmFzZTsKIAogICAgICAgICB+RXZhbEV4ZWN1dGFibGUoKTsKIApAQCAtMzI2LDYg
KzMzMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKKwogICAgICAgICBzdGF0aWMgUHJvZ3JhbUV4ZWN1dGFi
bGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFByb2dyYW1FeGVj
dXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgUHJvZ3JhbUV4ZWN1dGFibGUoZXhlYywgc291cmNlKTsK
QEAgLTM3OSw2ICszODcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFz
ZTsKKwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IGJvb2wgZm9yY2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMs
IGJvb2wgaXNJblN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uRXhl
Y3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uRXhlY3V0YWJsZShleGVjLCBuYW1lLCBz
b3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQs
IGZpcnN0TGluZSwgbGFzdExpbmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDE2ICsyOCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBG
dW5jdGlvblByb3RvdHlwZTsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ29uc3RydWN0b3IgOiBwdWJs
aWMgSW50ZXJuYWxGdW5jdGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25Db25z
dHJ1Y3RvcihFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIEZ1bmN0aW9u
UHJvdG90eXBlKik7Ci0gICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEludGVybmFs
RnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Db25zdHJ1Y3RvciogY3Jl
YXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jUHJvdG90eXBlKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25zdHJ1
Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIGZ1bmNQcm90b3R5cGUpOwogICAgICAgICB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICBGdW5jdGlvbkNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgRnVuY3Rpb25Qcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25z
dHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0
dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAkocmV2
aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0
aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0
eXBlZGVmIEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgRnVuY3Rpb25Q
cm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Qcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBG
dW5jdGlvblByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkBAIC00Myw2
ICs0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7
CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVy
U2V0dGVyLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvR2V0dGVyU2V0dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0Nl
bGwgQmFzZTsKKwogICAgICAgICBzdGF0aWMgR2V0dGVyU2V0dGVyKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8
R2V0dGVyU2V0dGVyPigqZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uaAko
cmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5h
bEZ1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uIDogcHVibGljIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdCB7CiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKICAgICAgICAgY29uc3QgVVN0cmluZyYgbmFtZShFeGVjU3RhdGUq
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBUElWYWx1
ZVdyYXBwZXIuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQVBJVmFsdWVXcmFwcGVyIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgICAgIGZyaWVuZCBKU1ZhbHVlIGpzQVBJVmFsdWVXcmFwcGVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOwogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
KwogICAgICAgICBKU1ZhbHVlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS5nZXQoKTsg
fQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FQSVZhbHVlV3JhcHBlcigpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxMCArNDEsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uIDogcHVibGljIEpTVmFy
aWFibGVPYmplY3QgewogICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgSlNWYXJpYWJsZU9i
amVjdCBCYXNlOwogICAgICAgICBKU0FjdGl2YXRpb24oQ2FsbEZyYW1lKiwgRnVuY3Rpb25FeGVj
dXRhYmxlKik7CiAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTVmFyaWFibGVP
YmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgSlNBY3RpdmF0aW9uKiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jRXhlYykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2Nh
dGVDZWxsPEpTQWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBY3RpdmF0aW9uKGNhbGxG
cmFtZSwgZnVuY0V4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTQXJyYXkoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgQXJnTGlz
dCYgaW5pdGlhbFZhbHVlcyk7CiAgICAgICAgIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgSlNBcnJheShWUHRyU3RlYWxpbmdI
YWNrVHlwZSk7CiAgICAgICAgIHZpcnR1YWwgfkpTQXJyYXkoKTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gOTI2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDEzICs0NiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IERGRzo6SklUQ29kZUdlbmVyYXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0
YTsKIAotICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwotCiAg
ICAgICAgIEpTRnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUq
LCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiwgTmF0aXZlRnVuY3Rpb24pOwogICAgICAg
ICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgaW50
IGxlbmd0aCwgY29uc3QgSWRlbnRpZmllciYsIE5hdGl2ZUV4ZWN1dGFibGUqKTsKICAgICAgICAg
SlNGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBTY29wZUNoYWluTm9k
ZSopOwogICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNPYmplY3RXaXRo
R2xvYmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuYykKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCwgc3RydWN0dXJlLCBsZW5ndGgsIGlkZW50LCBuYXRpdmVGdW5jKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2
aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNiArMTQyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTVmFy
aWFibGVPYmplY3QgQmFzZTsKKwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxPYmplY3QqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SlNHbG9iYWxPYmplY3Q+
KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU05vdEFuT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5o
CShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90
QW5PYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNO
b25GaW5hbE9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBKU05vdEFuT2JqZWN0KiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUNlbGw8SlNOb3RBbk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTTm90QW5PYmplY3Qo
ZXhlYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5o
CShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05P
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTAgKzMzLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgU3RyaW5naWZpZXI7CiAKICAgICBjbGFzcyBKU09OT2JqZWN0IDogcHVibGlj
IEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgSlNPTk9i
amVjdChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAg
ICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRp
YyBKU09OT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTT05PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU09O
T2JqZWN0KGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKQEAgLTUzLDYgKzUyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIEpTT05PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1
Y3R1cmUqKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCogdGhp
c09iaiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
OwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAg
IHZpcnR1YWwgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCB2aXNpdENoaWxkcmVuRGlyZWN0KFNsb3RWaXNpdG9yJik7CiAKQEAgLTMz
Miw2ICszMzQsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKU09iamVjdDsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlw
ZWRlZiBKU09iamVjdCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUoZ2xvYmFsRGF0YSwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIEFub255bW91
c1Nsb3RDb3VudCwgJnNfaW5mbyk7CkBAIC0zNjAsNiArMzY0LDggQEAgQ09NUElMRV9BU1NFUlQo
KEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBmcmllbmQgY2xhc3MgSlNPYmplY3Q7
CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNPYmplY3QgQmFzZTsKKwogICAgICAg
ICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KFZQdHJTdGVhbGluZ0hhY2tUeXBlKQogICAgICAgICAg
ICAgOiBKU09iamVjdChWUHRyU3RlYWxpbmdIYWNrLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAg
IHN0YXRpYyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqKTsKICAgICAgICAgc3RhdGljIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVj
U3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRh
LCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkocmV2aXNp
b24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0YXRpY1Njb3Bl
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIEpTQ3sK
ICAgICAKICAgICBjbGFzcyBKU1N0YXRpY1Njb3BlT2JqZWN0IDogcHVibGljIEpTVmFyaWFibGVP
YmplY3QgewogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBKU1ZhcmlhYmxlT2JqZWN0IEJh
c2U7CisKICAgICAgICAgc3RhdGljIEpTU3RhdGljU2NvcGVPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0
ZUNlbGw8SlNTdGF0aWNTY29wZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2NvcGVP
YmplY3QoZXhlYywgaWRlbnQsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2
ICs2Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgU3BlY2lhbGl6
ZWRUaHVua0pJVDsKICAgICAgICAgZnJpZW5kIHN0cnVjdCBUaHVua0hlbHBlcnM7CiAKKyAgICAg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKwogICAgICAgICBjbGFzcyBSb3BlQnVpbGRlciB7CiAg
ICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIFJvcGVCdWlsZGVyKHVuc2lnbmVkIGZpYmVyQ291
bnQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIAogICAgIHB1YmxpYzoK
KyAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgU3ltYm9s
VGFibGUmIHN5bWJvbFRhYmxlKCkgY29uc3QgeyByZXR1cm4gKm1fc3ltYm9sVGFibGU7IH0KIAog
ICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIEpTVmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpID0gMDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9iamVjdC5oCShyZXZp
c2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTV3JhcHBlck9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAvLyBUaGlzIGNsYXNzIGlzIHVzZWQgYXMgYSBiYXNlIGZvciBjbGFzc2VzIHN1Y2ggYXMg
U3RyaW5nLAogICAgIC8vIE51bWJlciwgQm9vbGVhbiBhbmQgRGF0ZSB3aGljaCBhcmUgd3JhcHBl
cnMgZm9yIHByaW1pdGl2ZSB0eXBlcy4KICAgICBjbGFzcyBKU1dyYXBwZXJPYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBK
U1dyYXBwZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7Ci0KICAgICBwdWJsaWM6
CisgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCiAgICAgICAgIEpTVmFs
dWUgaW50ZXJuYWxWYWx1ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldEludGVybmFsVmFsdWUo
SlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSk7CiAKQEAgLTQyLDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGljaXQgSlNXcmFw
cGVyT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgSlNO
b25GaW5hbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuaAkocmV2aXNpb24gOTI2MTgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hdGhPYmpl
Y3QoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKIAogICAgIHB1Ymxp
YzoKKyAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKKwogICAg
ICAgICBzdGF0aWMgTWF0aE9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVh
cCgpKSkgTWF0aE9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMw
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JQcm90b3R5cGU7CiAK
ICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVuY3Rp
b24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSwgY29uc3QgVVN0cmluZyYpOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVm
IEludGVybmFsRnVuY3Rpb24gQmFzZTsKKwogICAgICAgICBzdGF0aWMgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJl
LCBjb25zdCBVU3RyaW5nJiBuYW1lQW5kTWVzc2FnZSkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBwcm90b3R5cGVTdHJ1Y3R1cmUsIG5hbWVBbmRNZXNzYWdlKTsKQEAgLTQ5LDYgKzQ4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX2Vycm9yU3RydWN0dXJlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcmKTsK
ICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVz
VmlzaXRDaGlsZHJlbiB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogICAgICAg
ICB2aXJ0dWFsIENvbnN0cnVjdFR5cGUgZ2V0Q29uc3RydWN0RGF0YShDb25zdHJ1Y3REYXRhJik7
CiAgICAgICAgIHZpcnR1YWwgQ2FsbFR5cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yUHJvdG90eXBlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90
b3R5cGUuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYXRpdmVFcnJvclByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBOYXRpdmVFcnJvclByb3RvdHlwZShFeGVjU3RhdGUq
LCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmLCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yKik7CiAgICAgCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEVycm9y
UHJvdG90eXBlIEJhc2U7CisKICAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBj
cmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZUFuZE1lc3NhZ2UsIE5hdGl2ZUVy
cm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gbmV3IChhbGxvY2F0ZUNlbGw8TmF0aXZlRXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkp
KSBOYXRpdmVFcnJvclByb3RvdHlwZShleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbmFt
ZUFuZE1lc3NhZ2UsIGNvbnN0cnVjdG9yKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL051bWJlckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuaAkocmV2aXNpb24gOTI2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOCwxMCArMjgsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBOdW1i
ZXJQcm90b3R5cGU7CiAKICAgICBjbGFzcyBOdW1iZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBJbnRl
cm5hbEZ1bmN0aW9uIHsKLSAgICBwcml2YXRlOgotICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIE51bWJlclByb3RvdHlwZSop
OwotICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlv
biBCYXNlOworCiAgICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyQ29uc3RydWN0b3I+KCpleGVjLT5o
ZWFwKCkpKSBOdW1iZXJDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
bnVtUHJvdG90eXBlKTsKQEAgLTU0LDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blBy
b3BlcnR5U2xvdCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEludGVybmFsRnVuY3Rpb246OlN0
cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgTnVtYmVyQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBOdW1iZXJQcm90b3R5cGUq
KTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3Ry
dWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRh
Jik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ck9iamVjdC5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL051bWJlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBOdW1iZXJPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0IEJhc2U7
CisKICAgICAgICAgc3RhdGljIE51bWJlck9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51
bWJlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHJldmlzaW9uIDkyNjE4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDEwICsyNiw5IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IE51bWJlclByb3RvdHlwZSA6IHB1YmxpYyBOdW1iZXJPYmplY3QgewotICAgIHByaXZhdGU6Ci0g
ICAgICAgIE51bWJlclByb3RvdHlwZShFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOwotCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIE51bWJlck9iamVjdCBCYXNl
OworCiAgICAgICAgIHN0YXRpYyBOdW1iZXJQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8TnVtYmVyUHJv
dG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKQEAgLTQ3LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBOdW1iZXJPYmplY3Q6
OkFub255bW91c1Nsb3RDb3VudCArIDE7CiAKICAgICBwcml2YXRlOgorICAgICAgICBOdW1iZXJQ
cm90b3R5cGUoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
YmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMTAgKzI4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgT2JqZWN0UHJvdG90
eXBlOwogCiAgICAgY2xhc3MgT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBPYmplY3RQcm90b3R5cGUqKTsKLSAgICAK
ICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAg
ICAgICAgIHN0YXRpYyBPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE9iamVj
dFByb3RvdHlwZSogb2JqUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBPYmpl
Y3RDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgb2JqUHJvdG90eXBl
KTsKQEAgLTUxLDYgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1
cmUqLCBPYmplY3RQcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdl
dENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBl
IGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCShyZXZpc2lvbiA5MjYxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxMCArMjYsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBP
YmplY3RQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Ci0gICAgcHJpdmF0ZToK
LSAgICAgICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKik7Ci0KICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8T2Jq
ZWN0UHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0UHJvdG90eXBlKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKTsKQEAgLTQ3LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBBbm9ueW1vdXNTbG90Q291bnQgPSBKU05vbkZp
bmFsT2JqZWN0OjpBbm9ueW1vdXNTbG90Q291bnQgKyAxOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgT2JqZWN0UHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJl
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eVNs
b3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUq
LCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHAgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAgICAgICAg
c3RhdGljIFJlZ0V4cCogY3JlYXRlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFVTdHJpbmcmIHBhdHRl
cm4sIFJlZ0V4cEZsYWdzKTsKICAgICAgICAgflJlZ0V4cCgpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmgJKHJldmlzaW9u
IDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsMTAgKzU2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yIDogcHVibGljIEludGVybmFsRnVu
Y3Rpb24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwUHJvdG90eXBlKik7Ci0KICAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAg
ICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cFBy
b3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBSZWdF
eHBDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwUHJvdG90
eXBlKTsKQEAgLTk0LDYgKzkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEltcGxlbWVudHNIYXNJbnN0YW5jZSB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZs
YWdzOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgUmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRl
KiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHBQcm90b3R5cGUqKTsKICAgICAg
ICAgdmlydHVhbCBDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYp
OwogICAgICAgICB2aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNB
cnJheS5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cE1hdGNoZXNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkoRXhlY1N0YXRlKiwgUmVn
RXhwQ29uc3RydWN0b3JQcml2YXRlKik7CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYg
SlNBcnJheSBCYXNlOworCiAgICAgICAgIHN0YXRpYyBSZWdFeHBNYXRjaGVzQXJyYXkqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSogY3RvclByaXZhdGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBN
YXRjaGVzQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBNYXRjaGVzQXJyYXkoZXhlYywgY3Rv
clByaXZhdGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
T2JqZWN0LmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNyw5IEBACiBuYW1l
c3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBSZWdFeHBPYmplY3QgOiBwdWJsaWMgSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0IHsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFJlZ0V4cE9iamVj
dChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIFJlZ0V4cCopOwotCiAgICAgcHVibGljOgor
ICAgICAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOworCiAgICAgICAg
IHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4cE9i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgcmVnRXhwKTsKQEAgLTQwLDggKzM5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmplY3Q+KGdsb2Jh
bERhdGEuaGVhcCkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhw
KTsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiBKU09iamVjdFdpdGhHbG9i
YWxPYmplY3QgQmFzZTsKIAogICAgICAgICB2aXJ0dWFsIH5SZWdFeHBPYmplY3QoKTsKIApAQCAt
NzYsNiArNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVk
OgorICAgICAgICBSZWdFeHBPYmplY3QoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdF
eHAqKTsKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3Zl
cnJpZGVzVmlzaXRDaGlsZHJlbiB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTT2Jq
ZWN0V2l0aEdsb2JhbE9iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKICAgICBwcml2YXRlOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJ
KHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhw
UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEwICsyNyw5IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cFByb3RvdHlwZSA6IHB1YmxpYyBSZWdFeHBPYmplY3Qg
ewotICAgIHByb3RlY3RlZDoKLSAgICAgICAgUmVnRXhwUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgUmVnRXhwKik7Ci0KICAgICBwdWJsaWM6CisgICAg
ICAgIHR5cGVkZWYgUmVnRXhwT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIFJlZ0V4cFBy
b3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPigqZXhl
Yy0+aGVhcCgpKSkgUmVnRXhwUHJvdG90eXBlKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
LCByZWdFeHApOwpAQCAtNDQsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
CiAgICAgcHJvdGVjdGVkOgorICAgICAgICBSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiwgSlNH
bG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBSZWdFeHAqKTsKICAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwg
UmVnRXhwT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiA5MjYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworCiAgICAgICAgIHN0YXRpYyBT
Y29wZUNoYWluTm9kZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIG5l
eHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTY29wZUNoYWluTm9kZT4oKmV4ZWMt
PmhlYXAoKSkpIFNjb3BlQ2hhaW5Ob2RlKG5leHQsIG9iamVjdCwgZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBnbG9iYWxUaGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmljdEV2YWxBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRpb24uaAkocmV2aXNpb24gOTI2MTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBTdHJp
Y3RFdmFsQWN0aXZhdGlvbiA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKKyAg
ICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBTdHJpY3RFdmFs
QWN0aXZhdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICB7CiAgICAgICAgIHJldHVy
biBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkp
IFN0cmljdEV2YWxBY3RpdmF0aW9uKGV4ZWMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjYxOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDEwICsyOCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFN0
cmluZ1Byb3RvdHlwZTsKIAogICAgIGNsYXNzIFN0cmluZ0NvbnN0cnVjdG9yIDogcHVibGljIElu
dGVybmFsRnVuY3Rpb24gewotICAgIHByaXZhdGU6Ci0gICAgICAgIFN0cmluZ0NvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgU3RyaW5nUHJvdG90eXBl
Kik7Ci0gICAgICAgIAogICAgIHB1YmxpYzoKKyAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0
aW9uIEJhc2U7CisKICAgICAgICAgc3RhdGljIFN0cmluZ0NvbnN0cnVjdG9yKiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ICwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFN0cmluZ1Byb3RvdHlwZSogc3RyUHJvdG90eXBlKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3RvcihleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgc3RyUHJvdG90eXBlKTsKQEAgLTQ4LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93
blByb3BlcnR5U2xvdCB8IEludGVybmFsRnVuY3Rpb246OlN0cnVjdHVyZUZsYWdzOwogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgU3RyaW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiwgSlNHbG9iYWxP
YmplY3QqLCBTdHJ1Y3R1cmUqLCBTdHJpbmdQcm90b3R5cGUqKTsKICAgICAgICAgdmlydHVhbCBD
b25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoQ29uc3RydWN0RGF0YSYpOwogICAgICAgICB2
aXJ0dWFsIENhbGxUeXBlIGdldENhbGxEYXRhKENhbGxEYXRhJik7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCShyZXZpc2lvbiA5MjYxOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxMSArMjcsOSBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBT
dHJpbmdPYmplY3QgOiBwdWJsaWMgSlNXcmFwcGVyT2JqZWN0IHsKLSAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKLSAgICAgICAgU3Ry
aW5nT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIGNvbnN0IFVTdHJpbmcmKTsKLSAgICAg
ICAgICAgICAgICAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgSlNXcmFwcGVyT2JqZWN0
IEJhc2U7CisKICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdP
YmplY3QoZXhlYywgc3RydWN0dXJlKTsgIApAQCAtNjEsNiArNTksOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICBTdHJpbmdPYmplY3QoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlKik7CisgICAgICAgIFN0cmluZ09iamVjdChFeGVjU3RhdGUqLCBT
dHJ1Y3R1cmUqLCBjb25zdCBVU3RyaW5nJik7CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IE92ZXJyaWRl
c0dldFByb3BlcnR5TmFtZXMgfCBKU1dyYXBwZXJPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogICAg
ICAgICBTdHJpbmdPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNTdHJpbmcqKTsK
ICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nT2JqZWN0
VGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5o
CShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gV2ViQ29yZSB1c2VzIHRoaXMgdG8g
bWFrZSBzdHlsZS5maWx0ZXIgdW5kZXRlY3RhYmxlCiAgICAgY2xhc3MgU3RyaW5nT2JqZWN0VGhh
dE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgOiBwdWJsaWMgU3RyaW5nT2JqZWN0IHsKICAgICBwdWJs
aWM6CisgICAgICAgIHR5cGVkZWYgU3RyaW5nT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGlj
IFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBVU3RyaW5nJiBzdHJpbmcpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3RUaGF0TWFzcXVlcmFkZXNBc1VuZGVm
aW5lZD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09iamVjdFRoYXRNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKGV4ZWMsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RyaW5nUHJvdG90eXBlKEV4ZWNTdGF0ZSosIEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CiAKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVk
ZWYgU3RyaW5nT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGljIFN0cmluZ1Byb3RvdHlwZSog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKGFs
bG9jYXRlQ2VsbDxTdHJpbmdQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdQcm90b3R5
cGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgU3RydWN0dXJlIDogcHVibGljIEpT
Q2VsbCB7CiAgICAgcHVibGljOgogICAgICAgICBmcmllbmQgY2xhc3MgU3RydWN0dXJlVHJhbnNp
dGlvblRhYmxlOworCisgICAgICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisKICAgICAgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBw
cm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbywgdW5zaWduZWQgYW5vbnltb3VzU2xv
dENvdW50LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKGdsb2JhbERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gOTI2
MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwogCiAgICAgcHVibGljOgorICAgICAgICB0eXBlZGVmIEpTQ2VsbCBC
YXNlOworCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVDaGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKSB7IHJldHVybiBuZXcgKGFsbG9jYXRlQ2Vs
bDxTdHJ1Y3R1cmVDaGFpbj4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlQ2hhaW4oZ2xvYmFs
RGF0YSwgZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVDaGFpblN0cnVjdHVyZS5nZXQoKSwgaGVhZCk7IH0K
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4qIGhlYWQoKSB7IHJldHVybiBtX3ZlY3Rv
ci5nZXQoKTsgfQogICAgICAgICB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRHbHVlL0NoYW5nZUxvZwkocmV2aXNpb24gOTI2NTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdEdsdWUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTEtMDgtMDggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgUGFyZW50Q2xhc3MgdHlwZWRlZiBpbiBhbGwgSlNDIGNsYXNzZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSnVzdCBhZGRlZCB0aGUgQmFz
ZSB0eXBlZGVmcyBpbiBhbGwgdGhlIGNsYXNzZXMgdGhhdCBhcmUgYSBzdWJjbGFzcyBvZiBKU0Nl
bGwgCisgICAgICAgIHRvIHBvaW50IGF0IHRoZWlyIHBhcmVudCBjbGFzc2VzLiAgVGhpcyBpcyBh
IGNoYW5nZSB0byBzdXBwb3J0IGZ1dHVyZSBjaGFuZ2VzIHRvIHRoZSB3YXkKKyAgICAgICAgY29u
c3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyBhcmUgaW1wbGVtZW50ZWQgaW4gSlMgb2JqZWN0cywg
YW1vbmcgb3RoZXIgdGhpbmdzLgorCisgICAgICAgICogSlNSdW4uaDoKKyAgICAgICAgKiBVc2Vy
T2JqZWN0SW1wLmg6CisKIDIwMTEtMDgtMDQgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4K
IAogICAgICAgICBGdXR1cmUtcHJvb2YgWGNvZGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9KU1J1bi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0R2x1ZS9KU1J1bi5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0R2x1ZS9KU1J1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAKIGNsYXNz
IEpTR2x1ZUdsb2JhbE9iamVjdCA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdCB7CiAgICAgcHVibGlj
OgorICAgICAgICB0eXBlZGVmIEpTR2xvYmFsT2JqZWN0IEJhc2U7CisKICAgICAgICAgc3RhdGlj
IEpTR2x1ZUdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRmxhZ3MgZmxhZ3MgPSBrSlNGbGFnTm9uZSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEpTR2x1ZUdsb2JhbE9iamVj
dD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbHVlR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVj
dHVyZSwgZmxhZ3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRHbHVlL1VzZXJPYmplY3RJbXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdEdsdWUvVXNlck9iamVjdEltcC5oCShy
ZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0R2x1ZS9Vc2VyT2JqZWN0SW1wLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAKIAogY2xhc3MgVXNlck9iamVjdEltcCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmlu
YWxPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBVc2VyT2JqZWN0SW1wKiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNVc2VyT2JqZWN0KiB1
c2VyT2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFVzZXJP
YmplY3RJbXA+KGdsb2JhbERhdGEuaGVhcCkpIFVzZXJPYmplY3RJbXAoZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlLCB1c2VyT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNjUzKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAK
KzIwMTEtMDgtMDggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBBZGQgUGFyZW50Q2xhc3MgdHlwZWRlZiBpbiBhbGwgSlNDIGNsYXNzZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NzMxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgor
CisgICAgICAgIEp1c3QgYWRkZWQgdGhlIEJhc2UgdHlwZWRlZnMgaW4gYWxsIHRoZSBjbGFzc2Vz
IHRoYXQgYXJlIGEgc3ViY2xhc3Mgb2YgSlNDZWxsIAorICAgICAgICB0byBwb2ludCBhdCB0aGVp
ciBwYXJlbnQgY2xhc3Nlcy4gIFRoaXMgaXMgYSBjaGFuZ2UgdG8gc3VwcG9ydCBmdXR1cmUgY2hh
bmdlcyB0byB0aGUgd2F5CisgICAgICAgIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJl
IGltcGxlbWVudGVkIGluIEpTIG9iamVjdHMsIGFtb25nIG90aGVyIHRoaW5ncy4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTT3B0aW9u
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEludGVyZmFjZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmg6CisgICAgICAgICogYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAg
KiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZh
SW5zdGFuY2VKU0MuY3BwOgorICAgICAgICAqIGJyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2Jq
ZWN0Lmg6CisgICAgICAgICogYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAg
ICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKiBicmlkZ2UvcXQvcXRf
aW5zdGFuY2UuY3BwOgorICAgICAgICAqIGJyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcDoK
KyAgICAgICAgKiBicmlkZ2UvcXQvcXRfcnVudGltZS5oOgorICAgICAgICAqIGJyaWRnZS9ydW50
aW1lX2FycmF5Lmg6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAg
ICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6CisgICAgICAgICogYnJpZGdlL3Rlc3RxdGJpbmRp
bmdzLmNwcDoKKyAgICAgICAgKEdsb2JhbDo6Y2xhc3NOYW1lKToKKwogCiAgICAgICAgIExvZ2lj
IHRvIGNvbXB1dGUgdmlzaWJsZSBkaXNwbGF5IHJlY3QgaW4gR3JhcGhpY3NMYXllckNBOjpzeW5j
Q29tcG9zaXRpbmdTdGF0ZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU3MDgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9D
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXVkaW9Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQXVkaW9Db25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICsz
Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEpTQXVkaW9Db25zdHJ1Y3Rv
ciA6IHB1YmxpYyBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCB7CiAgICAgcHVibGljOgorICAg
ICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJhc2U7CisKICAgICAgICAg
c3RhdGljIEpTQXVkaW9Db25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxK
U0F1ZGlvQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0F1ZGlvQ29uc3RydWN0b3IoZXhl
Yywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNJ
bWFnZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IHsKICAg
ICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFz
ZTsKKwogICAgICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6
YWxsb2NhdGVDZWxsPEpTSW1hZ2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTSW1hZ2VD
b25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU09wdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNPcHRpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lv
biA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTT3B0aW9uQ29uc3RydWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBKU09wdGlvbkNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9y
V2l0aERvY3VtZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0
b3JXaXRoRG9jdW1lbnQgQmFzZTsKKwogICAgICAgICBzdGF0aWMgSlNPcHRpb25Db25zdHJ1Y3Rv
ciogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU09wdGlvbkNvbnN0cnVjdG9yPigqZXhl
Yy0+aGVhcCgpKSkgSlNPcHRpb25Db25zdHJ1Y3RvcihleGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNjk3LDEw
ICs2OTcsMTAgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAKICAgICAjIENsYXNzIGRlY2xhcmF0aW9u
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgImNsYXNzICRjbGFzc05hbWUgOiBwdWJsaWMgJHBh
cmVudENsYXNzTmFtZSB7XG4iKTsKLSAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHR5cGVk
ZWYgJHBhcmVudENsYXNzTmFtZSBCYXNlO1xuIik7CiAKICAgICAjIFN0YXRpYyBjcmVhdGUgbWV0
aG9kcwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJwdWJsaWM6XG4iKTsKKyAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgIHR5cGVkZWYgJHBhcmVudENsYXNzTmFtZSBCYXNlO1xuIik7CiAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OkpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwk
aW1wbFR5cGU+IGltcGwsIEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7CkBAIC05OTUsOCArOTk1LDggQEAg
c3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBBZGQgcHJvdG90eXBlIGRlY2xhcmF0aW9uLgogICAg
ICVzdHJ1Y3R1cmVGbGFncyA9ICgpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJjbGFzcyAk
e2NsYXNzTmFtZX1Qcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmpl
Y3Qge1xuIik7Ci0gICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB0eXBlZGVmIEpTQzo6SlNP
YmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAicHVibGljOlxuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB0eXBlZGVmIEpT
Qzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7XG4iKTsKICAgICBpZiAoJGludGVyZmFj
ZU5hbWUgbmUgIkRPTVdpbmRvdyIgJiYgISRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IklzV29ya2VyQ29udGV4dCJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7XG4iKTsKICAgICB9CkBAIC0zMDY2LDYgKzMwNjYsNyBAQCBzdWIgR2VuZXJhdGVD
b25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCopO1xuXG4iKTsKICAgICAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJw
dWJsaWM6XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdHlwZWRlZiBET01Db25z
dHJ1Y3Rvck9iamVjdCBCYXNlO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHN0
YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7XG4iKTsKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjb25z
dHJ1Y3RvckNsYXNzTmFtZT4oKmV4ZWMtPmhlYXAoKSkpICRjb25zdHJ1Y3RvckNsYXNzTmFtZShl
eGVjLCBzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7XG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2
Nyw3IEBAIHByaXZhdGU6CiAgICAgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKIHB1YmxpYzoK
KyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7CiAgICAgc3RhdGljIEpTVGVz
dEludGVyZmFjZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgewogICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
KGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgJ
KHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZSA6IHB1YmxpYyBKU0RP
TVdyYXBwZXIgewotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CiBwdWJsaWM6CisgICAg
dHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0SW50ZXJmYWNlKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPiBpbXBsKQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBpbXBsKTsKQEAgLTYzLDggKzYzLDggQEAgSlNDOjpKU1ZhbHVlIHRvSlMoSlNDOjpF
eGVjU3RhdGUqLCBKU0RPTQogVGVzdEludGVyZmFjZSogdG9UZXN0SW50ZXJmYWNlKEpTQzo6SlNW
YWx1ZSk7CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7Ci0gICAgdHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEds
b2JhbE9iamVjdCBCYXNlOwogcHVibGljOgorICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhH
bG9iYWxPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBzdGF0aWMgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjgsNiArNjgsNyBAQCBwcml2YXRlOgogICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqKTsKIAogcHVibGljOgorICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3Qg
QmFzZTsKICAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
KiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICByZXR1cm4g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3Ry
dWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3Ry
dWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDggQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA6IHB1YmxpYyBKU0RP
TVdyYXBwZXIgewotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CiBwdWJsaWM6CisgICAg
dHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI+IGltcGwpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5o
ZWFwKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCwgaW1wbCk7CkBAIC02MSw4ICs2MSw4IEBAIEpTQzo6SlNWYWx1ZSB0b0pTKEpTQzo6RXhlY1N0
YXRlKiwgSlNET00KIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKEpTQzo6SlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3Qg
ewotICAgIHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKIHB1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiAgICAg
c3RhdGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgc3RhdGljIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiAr
MTQ3LDcgQEAgcHJpdmF0ZToKICAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAogcHVibGljOgorICAg
IHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0T2Jq
Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9iakNvbnN0cnVjdG9yPigq
ZXhlYy0+aGVhcCgpKSkgSlNUZXN0T2JqQ29uc3RydWN0b3IoZXhlYywgc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDggKzMwLDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNUZXN0T2JqIDog
cHVibGljIEpTRE9NV3JhcHBlciB7Ci0gICAgdHlwZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKIHB1
YmxpYzoKKyAgICB0eXBlZGVmIEpTRE9NV3JhcHBlciBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RP
YmoqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPFRlc3RPYmo+IGltcGwpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLmhlYXApKSBKU1Rlc3RPYmooc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwp
OwpAQCAtNzAsOCArNzAsOCBAQCBKU0M6OkpTVmFsdWUgdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEpT
RE9NCiBUZXN0T2JqKiB0b1Rlc3RPYmooSlNDOjpKU1ZhbHVlKTsKIAogY2xhc3MgSlNUZXN0T2Jq
UHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IHsKLSAgICB0
eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJhc2U7CiBwdWJsaWM6CisgICAg
dHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogICAgIHN0YXRpYyBK
U0M6OkpTT2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogICAgIHN0YXRpYyBKU1Rlc3RPYmpQcm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlKQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCShyZXZpc2lvbiA5MjYxOCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0Kik7CiAKIHB1YmxpYzoKKyAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7
CiAgICAgc3RhdGljIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICByZXR1
cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKGV4ZWMsIHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw4ICszMiw4IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSA6IHB1YmxpYyBKU0RPTVdyYXBw
ZXIgewotICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7CiBwdWJsaWM6CisgICAgdHlwZWRl
ZiBKU0RPTVdyYXBwZXIgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlPiBpbXBsKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKQEAgLTYzLDggKzYzLDggQEAgSlND
OjpKU1ZhbHVlIHRvSlMoSlNDOjpFeGVjU3RhdGUqLCBKU0RPTQogVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSogdG9UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEpT
Qzo6SlNWYWx1ZSk7CiAKIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7Ci0gICAg
dHlwZWRlZiBKU0M6OkpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBCYXNlOwogcHVibGljOgorICAg
IHR5cGVkZWYgSlNDOjpKU09iamVjdFdpdGhHbG9iYWxPYmplY3QgQmFzZTsKICAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3Qq
KTsKICAgICBzdGF0aWMgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHJldmlzaW9uIDkyNjE4KQor
KysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfYXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKIGNsYXNzIFJ1bnRpbWVBcnJh
eSA6IHB1YmxpYyBKU0FycmF5IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTQXJyYXkgQmFzZTsK
KwogICAgIHN0YXRpYyBSdW50aW1lQXJyYXkqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEJpbmRp
bmdzOjpBcnJheSogYXJyYXkpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNl
bGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5KGV4ZWMsIGFycmF5
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiA5
MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBSdW50aW1l
TWV0aG9kIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogcHVibGljOgorICAgIHR5cGVkZWYg
SW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlz
dCYgbWV0aG9kTGlzdCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxS
dW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxP
YmplY3QsIHN0cnVjdHVyZSwgbmFtZSwgbWV0aG9kTGlzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBA
QCBuYW1lc3BhY2UgQmluZGluZ3MgewogCiBjbGFzcyBSdW50aW1lT2JqZWN0IDogcHVibGljIEpT
T2JqZWN0V2l0aEdsb2JhbE9iamVjdCB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBKU09iamVjdFdp
dGhHbG9iYWxPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgUGFzc1JlZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkp
IFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS90ZXN0cXRiaW5kaW5ncy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3Rlc3RxdGJpbmRpbmdzLmNwcAkocmV2aXNpb24g
OTI2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvdGVzdHF0YmluZGluZ3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw3ICs3Niw5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M6OkJpbmRpbmdz
OwogCiBjbGFzcyBHbG9iYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiBwdWJsaWM6Ci0g
IHZpcnR1YWwgVVN0cmluZyBjbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiZ2xvYmFsIjsgfQor
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgdmlydHVhbCBVU3RyaW5n
IGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9CiB9OwogCiBzdGF0aWMgY2hh
ciBjb2RlW10gPQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5o
CShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2Jq
ZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAgY2xhc3MgQ0luc3RhbmNlOwog
CiBjbGFzcyBDUnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50aW1lT2JqZWN0IHsKIHB1YmxpYzoK
KyAgICB0eXBlZGVmIFJ1bnRpbWVPYmplY3QgQmFzZTsKKwogICAgIHN0YXRpYyBDUnVudGltZU9i
amVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUGFzc1JlZlB0cjxDSW5zdGFuY2U+IGluc3RhbmNlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRp
bWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzEx
MSw4IEBAIGJvb2wgQ0luc3RhbmNlOjpzdXBwb3J0c0ludm9rZURlZmF1bHRNZXQKIAogY2xhc3Mg
Q1J1bnRpbWVNZXRob2QgOiBwdWJsaWMgUnVudGltZU1ldGhvZCB7CiBwdWJsaWM6CisgICAgdHlw
ZWRlZiBSdW50aW1lTWV0aG9kIEJhc2U7CisKICAgICBzdGF0aWMgQ1J1bnRpbWVNZXRob2QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPENSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVh
cCgpKSkgQ1J1bnRpbWVNZXRob2QoZXhlYywgZ2xvYmFsT2JqZWN0LCBuYW1lLCBsaXN0KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlND
LmNwcAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9K
YXZhSW5zdGFuY2VKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDggQEAgSlNW
YWx1ZSBKYXZhSW5zdGFuY2U6OmJvb2xlYW5WYWx1ZSgpIGNvbgogCiBjbGFzcyBKYXZhUnVudGlt
ZU1ldGhvZCA6IHB1YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1
bnRpbWVNZXRob2QgQmFzZTsKKwogICAgIHN0YXRpYyBKYXZhUnVudGltZU1ldGhvZCogY3JlYXRl
KEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIGxpc3QpCiAgICAgewogICAgICAg
ICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFw
KCkpKSBKYXZhUnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9i
amVjdC5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNj
L0phdmFSdW50aW1lT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgY2xh
c3MgSmF2YUluc3RhbmNlOwogCiBjbGFzcyBKYXZhUnVudGltZU9iamVjdCA6IHB1YmxpYyBSdW50
aW1lT2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1bnRpbWVPYmplY3QgQmFzZTsKKwog
ICAgIHN0YXRpYyBKYXZhUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxKYXZhSW5zdGFuY2U+IGphdmFJ
bnN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1l
T2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBqYXZhSW5zdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVu
dGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09i
akNSdW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
OCBAQCBjbGFzcyBPYmpjSW5zdGFuY2U7CiAKIGNsYXNzIE9iakNSdW50aW1lT2JqZWN0IDogcHVi
bGljIFJ1bnRpbWVPYmplY3QgewogcHVibGljOgorICAgIHR5cGVkZWYgUnVudGltZU9iamVjdCBC
YXNlOworCiAgICAgc3RhdGljIE9iakNSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBl
eGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPE9iamNJbnN0YW5j
ZT4gaW5zdCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVu
dGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgaW5zdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1
bnRpbWUuaAkocmV2aXNpb24gOTI2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9v
YmpjX3J1bnRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsOCBAQCBwcml2YXRlOgog
CiBjbGFzcyBPYmpjRmFsbGJhY2tPYmplY3RJbXAgOiBwdWJsaWMgSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdCBC
YXNlOworCiAgICAgc3RhdGljIE9iamNGYWxsYmFja09iamVjdEltcCogY3JlYXRlKEV4ZWNTdGF0
ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgT2JqY0luc3RhbmNlKiBpbnN0
YW5jZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgcmV0
dXJuIG5ldyAoYWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09iamVjdEltcD4oKmV4ZWMtPmhlYXAo
KSkpIE9iamNGYWxsYmFja09iamVjdEltcChleGVjLCBnbG9iYWxPYmplY3QsIGluc3RhbmNlLCBw
cm9wZXJ0eU5hbWUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRfaW5zdGFuY2Uu
Y3BwCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0
YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDggQEAgUV9HTE9CQUxfU1RBVElD
KFF0SW5zdGFuY2U6OlF0U2VuZGVyU3RhYwogLy8gRGVyaXZlZCBSdW50aW1lT2JqZWN0CiBjbGFz
cyBRdFJ1bnRpbWVPYmplY3QgOiBwdWJsaWMgUnVudGltZU9iamVjdCB7CiBwdWJsaWM6CisgICAg
dHlwZWRlZiBSdW50aW1lT2JqZWN0IEJhc2U7CisKICAgICBzdGF0aWMgUXRSdW50aW1lT2JqZWN0
KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
YXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1bnRpbWVP
YmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0YW5jZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcXQvcXRfcGl4bWFwcnVudGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYnJpZGdlL3F0L3F0X3BpeG1hcHJ1bnRpbWUuY3BwCShyZXZpc2lvbiA5MjYxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9waXhtYXBydW50aW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk4LDYgKzE5OCw4IEBAIHN0cnVjdCBRdFBpeG1hcE1ldGFEYXRhIHsKIC8vIERl
cml2ZWQgUnVudGltZU9iamVjdAogY2xhc3MgUXRQaXhtYXBSdW50aW1lT2JqZWN0IDogcHVibGlj
IFJ1bnRpbWVPYmplY3QgewogcHVibGljOgorICAgIHR5cGVkZWYgUnVudGltZU9iamVjdCBCYXNl
OworCiAgICAgc3RhdGljIFF0UGl4bWFwUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjxJbnN0YW5jZT4g
aW5zdGFuY2UpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8UXRQaXht
YXBSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUXRQaXhtYXBSdW50aW1lT2JqZWN0KGV4
ZWMsIGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3F0L3F0X3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQv
cXRfcnVudGltZS5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9x
dC9xdF9ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsOCBAQCBjbGFzcyBR
dFJ1bnRpbWVDb25uZWN0aW9uTWV0aG9kRGF0YSA6IHB1CiAvLyBDb21tb24gYmFzZSBjbGFzcyAo
ZG9lc24ndCByZWFsbHkgZG8gYW55dGhpbmcgaW50ZXJlc3RpbmcpCiBjbGFzcyBRdFJ1bnRpbWVN
ZXRob2QgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBJ
bnRlcm5hbEZ1bmN0aW9uIEJhc2U7CisKICAgICB2aXJ0dWFsIH5RdFJ1bnRpbWVNZXRob2QoKTsK
IAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpAQCAtMTUwLDYgKzE1Miw4IEBA
IHByb3RlY3RlZDoKIGNsYXNzIFF0UnVudGltZU1ldGFNZXRob2QgOiBwdWJsaWMgUXRSdW50aW1l
TWV0aG9kCiB7CiBwdWJsaWM6CisgICAgdHlwZWRlZiBRdFJ1bnRpbWVNZXRob2QgQmFzZTsKKwog
ICAgIHN0YXRpYyBRdFJ1bnRpbWVNZXRhTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBuLCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3QsIGludCBpbmRl
eCwgY29uc3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlLCBib29sIGFsbG93UHJpdmF0ZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRlQ2VsbDxRdFJ1bnRpbWVNZXRhTWV0aG9kPigq
ZXhlYy0+aGVhcCgpKSkgUXRSdW50aW1lTWV0YU1ldGhvZChleGVjLCBuLCBpbnN0LCBpbmRleCwg
c2lnbmF0dXJlLCBhbGxvd1ByaXZhdGUpOwpAQCAtMTc1LDkgKzE3OSwxMCBAQCBwcml2YXRlOgog
fTsKIAogY2xhc3MgUXRDb25uZWN0aW9uT2JqZWN0OwotY2xhc3MgUXRSdW50aW1lQ29ubmVjdGlv
bk1ldGhvZCA6IHB1YmxpYyBRdFJ1bnRpbWVNZXRob2QKLXsKK2NsYXNzIFF0UnVudGltZUNvbm5l
Y3Rpb25NZXRob2QgOiBwdWJsaWMgUXRSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKKyAgICB0eXBl
ZGVmIFF0UnVudGltZU1ldGhvZCBCYXNlOworCiAgICAgc3RhdGljIFF0UnVudGltZUNvbm5lY3Rp
b25NZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG4sIGJv
b2wgaXNDb25uZWN0LCBQYXNzUmVmUHRyPFF0SW5zdGFuY2U+IGluc3QsIGludCBpbmRleCwgY29u
c3QgUUJ5dGVBcnJheSYgc2lnbmF0dXJlKQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdGVDZWxsPFF0UnVudGltZUNvbm5lY3Rpb25NZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBRdFJ1
bnRpbWVDb25uZWN0aW9uTWV0aG9kKGV4ZWMsIG4sIGlzQ29ubmVjdCwgaW5zdCwgaW5kZXgsIHNp
Z25hdHVyZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MjY1MykKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTA4LTA4
ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IFBhcmVudENsYXNzIHR5cGVkZWYgaW4gYWxsIEpTQyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTczMQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEp1c3QgYWRkZWQgdGhlIEJhc2UgdHlwZWRl
ZnMgaW4gYWxsIHRoZSBjbGFzc2VzIHRoYXQgYXJlIGEgc3ViY2xhc3Mgb2YgSlNDZWxsIAorICAg
ICAgICB0byBwb2ludCBhdCB0aGVpciBwYXJlbnQgY2xhc3Nlcy4gIFRoaXMgaXMgYSBjaGFuZ2Ug
dG8gc3VwcG9ydCBmdXR1cmUgY2hhbmdlcyB0byB0aGUgd2F5CisgICAgICAgIGNvbnN0cnVjdG9y
cyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIGltcGxlbWVudGVkIGluIEpTIG9iamVjdHMsIGFtb25nIG90
aGVyIHRoaW5ncy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
TWV0aG9kLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuaDoKKwogMjAxMS0wOC0wOCAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgTG9naWMgdG8gY29tcHV0ZSB2aXNpYmxlIGRpc3BsYXkgcmVjdCBpbiBHcmFwaGlj
c0xheWVyQ0E6OnN5bmNDb21wb3NpdGluZ1N0YXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE1ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QTWV0aG9kLmgJKHJldmlz
aW9uIDkyNjE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L0pTTlBNZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIC8vIEEgSlNPYmplY3QgdGhhdCB3cmFwcyBhbiBOUE1ldGhvZC4KIGNsYXNzIEpT
TlBNZXRob2QgOiBwdWJsaWMgSlNDOjpJbnRlcm5hbEZ1bmN0aW9uIHsKIHB1YmxpYzoKKyAgICB0
eXBlZGVmIEpTQzo6SW50ZXJuYWxGdW5jdGlvbiBCYXNlOworCiAgICAgc3RhdGljIEpTTlBNZXRo
b2QqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBKU0M6OklkZW50aWZpZXImIGlkZW50LCBOUElkZW50aWZpZXIgbnBJ
ZGVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpTTlBN
ZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBKU05QTWV0aG9kKGV4ZWMsIGdsb2JhbE9iamVjdCwgaWRl
bnQsIG5wSWRlbnQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05l
dHNjYXBlL0pTTlBPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5oCShyZXZpc2lvbiA5MjYxOCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDggQEAgY2xhc3MgTlBSdW50aW1lT2JqZWN0TWFwOwog
CiBjbGFzcyBKU05QT2JqZWN0IDogcHVibGljIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
IHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIEpTQzo6SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0IEJh
c2U7CisKICAgICBzdGF0aWMgSlNOUE9iamVjdCogY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgTlBSdW50aW1lT2JqZWN0TWFwKiBvYmplY3RNYXAsIE5QT2JqZWN0KiBu
cE9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPEpT
TlBPYmplY3Q+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU05QT2JqZWN0KGds
b2JhbE9iamVjdCwgb2JqZWN0TWFwLCBucE9iamVjdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5MjY1MykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTA4LTA4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFo
bmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFBhcmVudENsYXNzIHR5cGVkZWYgaW4g
YWxsIEpTQyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTczMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEp1c3QgYWRkZWQgdGhlIEJhc2UgdHlwZWRlZnMgaW4gYWxsIHRoZSBjbGFzc2VzIHRo
YXQgYXJlIGEgc3ViY2xhc3Mgb2YgSlNDZWxsIAorICAgICAgICB0byBwb2ludCBhdCB0aGVpciBw
YXJlbnQgY2xhc3Nlcy4gIFRoaXMgaXMgYSBjaGFuZ2UgdG8gc3VwcG9ydCBmdXR1cmUgY2hhbmdl
cyB0byB0aGUgd2F5CisgICAgICAgIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgYXJlIGlt
cGxlbWVudGVkIGluIEpTIG9iamVjdHMsIGFtb25nIG90aGVyIHRoaW5ncy4KKworICAgICAgICAq
IFBsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW06CisgICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvUHJveHlSdW50aW1lT2JqZWN0Lmg6CisKIDIwMTEtMDgtMDggIENocmlzIE1hcnJpbiAgPGNt
YXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIExvZ2ljIHRvIGNvbXB1dGUgdmlzaWJsZSBkaXNw
bGF5IHJlY3QgaW4gR3JhcGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1t
CShyZXZpc2lvbiA5MjYxOCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2ICsxNzksOCBAQCBKU1ZhbHVl
IFByb3h5SW5zdGFuY2U6Omludm9rZShKU0M6OkV4ZWNTCiAKIGNsYXNzIFByb3h5UnVudGltZU1l
dGhvZCA6IHB1YmxpYyBSdW50aW1lTWV0aG9kIHsKIHB1YmxpYzoKKyAgICB0eXBlZGVmIFJ1bnRp
bWVNZXRob2QgQmFzZTsKKwogICAgIHN0YXRpYyBQcm94eVJ1bnRpbWVNZXRob2QqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBsaXN0KQogICAgIHsKICAgICAgICAg
cmV0dXJuIG5ldyAoYWxsb2NhdGVDZWxsPFByb3h5UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAo
KSkpIFByb3h5UnVudGltZU1ldGhvZChleGVjLCBnbG9iYWxPYmplY3QsIG5hbWUsIGxpc3QpOwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlS
dW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDkyNjE4KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9Ib3N0ZWQvUHJveHlSdW50aW1lT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYg
KzM2LDggQEAgY2xhc3MgUHJveHlJbnN0YW5jZTsKIAogY2xhc3MgUHJveHlSdW50aW1lT2JqZWN0
IDogcHVibGljIEpTQzo6QmluZGluZ3M6OlJ1bnRpbWVPYmplY3QgewogcHVibGljOgorICAgIHR5
cGVkZWYgSlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdCBCYXNlOworCiAgICAgc3RhdGljIFBy
b3h5UnVudGltZU9iamVjdCogY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8UHJveHlJbnN0YW5jZT4gaW5zdGFu
Y2UpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxQcm94eVJ1
bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBQcm94eVJ1bnRpbWVPYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0LCBpbnN0YW5jZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>