<?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>74676</bug_id>
          
          <creation_ts>2011-12-15 19:42:10 -0800</creation_ts>
          <short_desc>Placement new does an unnecessary NULL check</short_desc>
          <delta_ts>2011-12-19 17:23:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>abarth</cc>
    
    <cc>japhet</cc>
    
    <cc>levin+threading</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522456</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-15 19:42:10 -0800</bug_when>
    <thetext>Placement new does an unnecessary NULL check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522500</commentid>
    <comment_count>1</comment_count>
      <attachid>119558</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-15 21:17:30 -0800</bug_when>
    <thetext>Created attachment 119558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522514</commentid>
    <comment_count>2</comment_count>
      <attachid>119558</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-15 21:40:24 -0800</bug_when>
    <thetext>Comment on attachment 119558
Patch

Attachment 119558 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10914532</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522523</commentid>
    <comment_count>3</comment_count>
      <attachid>119558</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-15 21:53:40 -0800</bug_when>
    <thetext>Comment on attachment 119558
Patch

Attachment 119558 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10903538</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522524</commentid>
    <comment_count>4</comment_count>
      <attachid>119563</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-15 21:53:40 -0800</bug_when>
    <thetext>Created attachment 119563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522563</commentid>
    <comment_count>5</comment_count>
      <attachid>119572</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-15 23:14:07 -0800</bug_when>
    <thetext>Created attachment 119572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523108</commentid>
    <comment_count>6</comment_count>
      <attachid>119572</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-16 15:29:27 -0800</bug_when>
    <thetext>Comment on attachment 119572
Patch

LGTM, but I&apos;m not a reviewer yet :-) Just learning the reviewing ropes, so to speak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523950</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-19 09:45:24 -0800</bug_when>
    <thetext>Committed r103243: &lt;http://trac.webkit.org/changeset/103243&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524206</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-12-19 14:56:48 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r103243: &lt;http://trac.webkit.org/changeset/103243&gt;

It broke Qt Win build:
In file included from /ramdisk/qt-windows-32bit-release/build/Source/JavaScriptCore/wtf/ThreadSpecificWin.cpp:23:0:
/ramdisk/qt-windows-32bit-release/build/Source/JavaScriptCore/wtf/ThreadSpecific.h: In member function &apos;WTF::ThreadSpecific&lt;T&gt;::operator T*()&apos;:
/ramdisk/qt-windows-32bit-release/build/Source/JavaScriptCore/wtf/ThreadSpecific.h:256:14: error: &apos;NotNull&apos; was not declared in this scope</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524326</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-19 17:23:15 -0800</bug_when>
    <thetext>Qt build fix: &lt;http://trac.webkit.org/changeset/103287&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119558</attachid>
            <date>2011-12-15 21:17:30 -0800</date>
            <delta_ts>2011-12-15 21:53:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74676-20111215211730.patch</filename>
            <type>text/plain</type>
            <size>115737</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMiBA
QAorMjAxMS0xMi0xNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFBsYWNlbWVudCBuZXcgZG9lcyBhbiB1bm5lY2Vzc2FyeSBOVUxMIGNoZWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY3NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkZWZpbmUgb3Vy
IG93biB2ZXJzaW9uLCB3aGljaCBza2lwcyB0aGUgTlVMTCBjaGVjay4KKyAgICAgICAgCisgICAg
ICAgIE5vdCBhIG1lYXN1cmFibGUgc3BlZWR1cCwgYnV0IGNvZGUgaW5zcGVjdGlvbiBzaG93cyBi
ZXR0ZXIgY29kZSBnZW5lcmF0ZWQsCisgICAgICAgIGFuZCBJIGJlbGlldmUgdGhpcyBpcyBhIHN0
ZXAgdG93YXJkIHR1cm5pbmcgb2ZmIC1mb21pdC1mcmFtZS1wb2ludGVyLgorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVs
bCB2ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBuZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVj
ay4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6IFJlbW92ZWQgYSBjb25mbGlj
dGluZywgdW5uZWNlc3NhcmF5IHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgKEpTQzo6SlNDYWxs
YmFja09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uaDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAqIGhlYXAvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Omdyb3cp
OgorICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFw
OjphbGxvY2F0ZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6cmVj
eWNsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6
Y2xlYXIpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgICogcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgor
ICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkJvb2xlYW5PYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmg6CisgICAgICAgIChKU0M6OkJvb2xlYW5Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAg
ICAgIChKU0M6OkRhdGVJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQ
cm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RGF0ZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JG
dW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkVy
cm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6
SlNBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6
OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVsbCB2ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBu
ZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVjay4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
IFJlbW92ZWQgYSBjb25mbGljdGluZywgdW5uZWNlc3NhcmF5IHBsYWNlbWVudCBuZXcuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbFRoaXMuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxUaGlzOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU05v
dEFuT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y3JlYXRl
TnVsbCk6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpSb3BlQnVpbGRlcjo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAgICogcnVudGltZS9N
YXRoT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJv
clByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6
Ok51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNy
ZWF0ZVdpdGhvdXRDYWNoaW5nKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNo
ZXNBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWlu
Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmg6
CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNo
YWluOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAo
V1RGOjpCaXRWZWN0b3I6Ok91dE9mTGluZUJpdHM6OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVsbCB2
ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBuZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVjay4K
KworICAgICAgICAqIHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oOgorICAgICAgICAoV1RGOjpC
dW1wUG9pbnRlclBvb2w6OmNyZWF0ZSk6IFN0YW5kYXJkaXplZCBzcGFjaW5nIHRvIG1ha2UgZ3Jl
cCBlYXNpZXIuCisKKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKFdURjo6
Qnl0ZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHd0Zi9EZXF1ZS5oOgorICAgICAgICAoV1RG
Ojo6OmFwcGVuZCk6CisgICAgICAgIChXVEY6Ojo6cHJlcGVuZCk6IFVzZSBOb3ROdWxsLCBhcyBh
Ym92ZS4KKworICAgICAgICAqIHd0Zi9GYXN0QWxsb2NCYXNlLmg6IEFkZGVkIGEgcGxhY2VtZW50
IG5ldywgc2luY2UgdGhpcyBjbGFzcyB3b3VsZCBvdGhlcndpc2UKKyAgICAgICAgaGlkZSB0aGUg
bmFtZSBvZiB0aGUgZ2xvYmFsIHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgKFdURjo6ZmFzdE5l
dyk6IFN0YW5kYXJkaXplZCBzcGFjaW5nLiBNb3N0IG9mIHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBu
ZWVkCisgICAgICAgIE5vdE51bGwsIHNpbmNlIHRoZXkgY2hlY2sgZm9yIE5VTEwsIGFuZCB0aGUg
b3B0aW1pemVyIGNhbiBzZWUgdGhhdC4KKworICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAg
ICAgICAgKiB3dGYvSGFzaFRyYWl0cy5oOgorICAgICAgICAoV1RGOjpTaW1wbGVDbGFzc0hhc2hU
cmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0
b3IuY3BwOgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9yOjphbGxvY0ZyZWVTcGFjZU5vZGUp
OiBOb3ROdWxsLCBhcyBhYm92ZS4KKworICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAg
ICAgICAgKHRocm93KTogVGhpcyBpcyBvdXIgTm90TnVsbCBwbGFjZW1lbnQgbmV3LiBEZWNsYXJp
bmcgdGhhdCB3ZSB0aHJvdyBpcworICAgICAgICB0aGUgQysrIHdheSB0byBzYXkgdGhhdCBvcGVy
YXRvciBuZXcgd2lsbCBub3QgcmV0dXJuIE5VTEwuCisKKyAgICAgICAgKiB3dGYvVGhyZWFkU3Bl
Y2lmaWMuaDoKKyAgICAgICAgKFdURjo6VCk6CisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAg
ICAgICAoV1RGOjo6OmFwcGVuZCk6CisgICAgICAgIChXVEY6Ojo6dHJ5QXBwZW5kKToKKyAgICAg
ICAgKFdURjo6Ojp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAoV1RGOjo6Omluc2VydCk6Cisg
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6cmVhbGxvY2F0ZSk6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNw
cDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppbml0KTogVXNlIE5vdE51bGwsIGFzIGFi
b3ZlLgorCisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpZYXJyOjpJbnRlcnByZXRlcjo6YWxsb2NEaXNqdW5jdGlvbkNvbnRleHQpOgorICAgICAgICAo
SlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6UGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OlBh
cmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJw
cmV0ZXI6OmFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQpOiBTdGFuZGFyZGl6ZWQK
KyAgICAgICAgc3BhY2luZyBmb3IgZWFzeSBncmVwLgorCiAyMDExLTEyLTE1ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAocjEwMjg2
Nik6IE5hdmlnYXRpbmcgYXdheSBmcm9tIG9yIGNsb3NpbmcgYSBwYWdlIHdpdGggYSBwbHVnaW4g
Y3Jhc2hlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUy
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3Ry
aW5nPiYgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9i
amVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICBHbG9iYWxPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5o
ZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
R2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhl
YXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVudHMpOworICAg
ICAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9i
YWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVu
dHMpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0NsYXNzUmVmIGNsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2Fs
bGJhY2spIAogICAgIHsKLSAgICAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NS
ZWYsIGNhbGxiYWNrKTsKKyAgICAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgY2xhc3NSZWYsIGNhbGxiYWNrKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdCwgY2xhc3NSZWYpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tG
dW5jdGlvbi5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgICB7Ci0gICAg
ICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Nh
bGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjayk7CisgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5o
ZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAg
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwog
ICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksMTAgKzExOSw2IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFyZW50
IHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIEpTQ2xhc3NSZWYsIHZvaWQqIGRhdGEpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QoSlNHbG9i
YWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7Ci0gICAgLy8gV2UnZCBsaWtlIHRvIHVz
ZSB0aGUgcGxhY2VtZW50IHZlcnNpb24gb2Ygb3BlcmF0b3IgbmV3IGRlZmluZWQgaW4gSlNDZWxs
LCBidXQgCi0gICAgLy8gd2UgY2FuJ3QgYmVjYXVzZSBQYXJlbnQgaXMgYSB0ZW1wbGF0ZSBhcmd1
bWVudCwgc28gd2UganVzdCBkdXBsaWNhdGUgdGhlIHNhbWUgCi0gICAgLy8gZnVuY3Rpb25hbGl0
eSBoZXJlLgotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHB0cikgeyByZXR1
cm4gcHRyOyB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSopOwogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJik7CkBAIC0xMzMsMTMgKzEyOSwxMyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0NsYXNzUmVmIGNsYXNzUmVmLCB2b2lkKiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChnbG9iYWxPYmplY3QsICFzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpIHx8IHN0cnVjdHVy
ZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgSlNDYWxsYmFja09i
amVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0
PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGNsYXNz
UmVmLCBkYXRhKTsKKyAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PigqZXhlYy0+aGVhcCgp
KSkgSlNDYWxsYmFja09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGNsYXNzUmVmLCBkYXRhKTsKICAg
ICAgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMpOwogICAgICAgICByZXR1
cm4gY2FsbGJhY2tPYmplY3Q7CiAgICAgfQogICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0KiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NsYXNzUmVmIGNsYXNzUmVmLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTQ2FsbGJhY2tPYmplY3QqIGNhbGxi
YWNrT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3RydWN0dXJl
KTsKKyAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0Nh
bGxiYWNrT2JqZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOwogICAgICAgICBj
YWxsYmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgIHJldHVy
biBjYWxsYmFja09iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDI4MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIERlYnVnZ2VyQWN0aXZhdGlvbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgRGVidWdnZXJBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3RpdmF0aW9u
PihnbG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSk7CisgICAg
ICAgICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxEZWJ1Z2dlckFjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIERlYnVnZ2Vy
QWN0aXZhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGFjdGl2YXRpb24tPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEsIG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gYWN0aXZhdGlv
bjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVh
cC5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hh
bmRsZUhlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSGFuZGxl
SGVhcDo6Z3JvdygpCiAgICAgTm9kZSogYmxvY2sgPSBtX2Jsb2NrU3RhY2suZ3JvdygpOwogICAg
IGZvciAoaW50IGkgPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGggLSAxOyBpID49IDA7IC0taSkg
ewogICAgICAgICBOb2RlKiBub2RlID0gJmJsb2NrW2ldOwotICAgICAgICBuZXcgKG5vZGUpIE5v
ZGUodGhpcyk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgbm9kZSkgTm9kZSh0aGlzKTsKICAgICAg
ICAgbV9mcmVlTGlzdC5wdXNoKG5vZGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IYW5kbGVIZWFwLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1
OCw3IEBAIGlubGluZSBIYW5kbGVTbG90IEhhbmRsZUhlYXA6OmFsbG9jYXRlKCkKICAgICAgICAg
Z3JvdygpOwogCiAgICAgTm9kZSogbm9kZSA9IG1fZnJlZUxpc3QucG9wKCk7Ci0gICAgbmV3IChu
b2RlKSBOb2RlKHRoaXMpOworICAgIG5ldyAoTm90TnVsbCwgbm9kZSkgTm9kZSh0aGlzKTsKICAg
ICBtX2ltbWVkaWF0ZUxpc3QucHVzaChub2RlKTsKICAgICByZXR1cm4gdG9IYW5kbGUobm9kZSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxMiBAQCBNYXJrZWRCbG9jayogTWFy
a2VkQmxvY2s6OmNyZWF0ZShIZWFwKiBoCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9j
YXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgYmxvY2tT
aXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgaWYgKCFzdGF0aWNfY2FzdDxi
b29sPihhbGxvY2F0aW9uKSkKICAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gbmV3IChhbGxv
Y2F0aW9uLmJhc2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgaGVhcCwgY2VsbFNpemUpOwor
ICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGFsbG9jYXRpb24uYmFzZSgpKSBNYXJrZWRCbG9jayhh
bGxvY2F0aW9uLCBoZWFwLCBjZWxsU2l6ZSk7CiB9CiAKIE1hcmtlZEJsb2NrKiBNYXJrZWRCbG9j
azo6cmVjeWNsZShNYXJrZWRCbG9jayogYmxvY2ssIHNpemVfdCBjZWxsU2l6ZSkKIHsKLSAgICBy
ZXR1cm4gbmV3IChibG9jaykgTWFya2VkQmxvY2soYmxvY2stPm1fYWxsb2NhdGlvbiwgYmxvY2st
Pm1faGVhcCwgY2VsbFNpemUpOworICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGJsb2NrKSBNYXJr
ZWRCbG9jayhibG9jay0+bV9hbGxvY2F0aW9uLCBibG9jay0+bV9oZWFwLCBjZWxsU2l6ZSk7CiB9
CiAKIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koTWFya2VkQmxvY2sqIGJsb2NrKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY2xlYXIoKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3JlZi5+Q29kZVJlZigpOwotICAgICAgICAgICAgbmV3ICgmbV9yZWYp
IENvZGVSZWYoKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fcmVmKSBDb2RlUmVmKCk7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSGFzaFRyYWl0czxKU0M6OkNhbGxJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEpT
Qzo6Q2FsbElkZW50aWZpZXI+IHsKICAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKEpTQzo6Q2FsbElkZW50aWZpZXImIHNsb3QpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG5ldyAoJnNsb3QpIEpTQzo6Q2FsbElkZW50aWZpZXIoSlNDOjpVU3RyaW5nKCksIEpTQzo6VVN0
cmluZygpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgICAgICAg
ICAgbmV3IChOb3ROdWxsLCAmc2xvdCkgSlNDOjpDYWxsSWRlbnRpZmllcihKU0M6OlVTdHJpbmco
KSwgSlNDOjpVU3RyaW5nKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSlND
OjpDYWxsSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQXJndW1lbnRzKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwor
ICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwog
ICAgICAgICAgICAgYXJndW1lbnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUpOwogICAgICAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcnJheUNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEFycmF5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5Q29u
c3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGFycmF5UHJvdG90eXBlKTsKICAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBBcnJh
eVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFy
cmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxBcnJheVByb3RvdHlw
ZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgIEFycmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBcnJheVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90
eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQm9vbGVhbkNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblBy
b3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8Qm9vbGVhbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhbkNv
bnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBib29sZWFuUHJvdG90eXBlKTsKICAgICAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBCb29s
ZWFuT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgQm9vbGVhbk9iamVjdCogYm9vbGVhbiA9
IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5PYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEJvb2xl
YW5PYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEJvb2xlYW5PYmpl
Y3QqIGJvb2xlYW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCb29sZWFuT2JqZWN0Pihn
bG9iYWxEYXRhLmhlYXApKSBCb29sZWFuT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBib29sZWFuLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIHJldHVybiBib29sZWFuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCShyZXZpc2lvbiAxMDI4MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxC
b29sZWFuUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhblByb3RvdHlwZShleGVjLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgQm9vbGVhblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgRGF0ZUNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlw
ZSkKICAgICAgICAgewotICAgICAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIERhdGVD
b25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBEYXRlQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUNv
bnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVj
LCBkYXRlUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUlu
c3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBkYXRlKTsKICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBEYXRlSW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBEYXRlSW5zdGFu
Y2UqIGluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVh
cCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBEYXRlSW5z
dGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNl
PigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBE
YXRlUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAg
RGF0ZVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZVByb3RvdHlw
ZT4oKmV4ZWMtPmhlYXAoKSkpIERhdGVQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIERhdGVQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPERhdGVQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBEYXRlUHJvdG90eXBlKGV4ZWMsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOworICAgICAgICAgICAgU3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CiAgICAgICAgICAg
ICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9i
YWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBF
cnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVycm9y
UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBFcnJvckNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIEVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0b3Io
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKGV4ZWMsIGVycm9yUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCAr
MzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2Uq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBFcnJvckluc3Rh
bmNlKiBpbnN0YW5jZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KGdsb2JhbERh
dGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIG1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICAgICAgRXJyb3JJ
bnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhl
Yy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICAgICAgRXJyb3JJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5j
ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgVVN0cmluZygiIiwgMCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0
ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3RvdHlwZShleGVj
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkg
RXJyb3JQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW50ZXJydXB0ZWRFeGVjdXRp
b25FcnJvciogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7Ci0gICAgICAg
IEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9yID0gbmV3IChhbGxvY2F0ZUNlbGw8SW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgSW50ZXJydXB0ZWRFeGVj
dXRpb25FcnJvcihnbG9iYWxEYXRhKTsKKyAgICAgICAgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
ciogZXJyb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yPihnbG9iYWxEYXRhLmhlYXApKSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKGdsb2Jh
bERhdGEpOwogICAgICAgICBlcnJvci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAg
ICAgIHJldHVybiBlcnJvcjsKICAgICB9CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgewotICAgICAgICBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9y
ID0gbmV3IChhbGxvY2F0ZUNlbGw8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPihnbG9iYWxEYXRh
LmhlYXApKSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7CisgICAgICAgIFRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvciogZXJyb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+KGdsb2JhbERhdGEuaGVhcCkpIFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsKICAgICAgICAgZXJyb3ItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTAyODA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODQsMTAgKzE4NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFT
U0VSVChnbG9iYWxEYXRhLmNhblVzZUpJVCgpKTsKICAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGU7CiAgICAgICAgICAgICBpZiAoIWNhbGxUaHVuaykgewotICAgICAgICAg
ICAgICAgIGV4ZWN1dGFibGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihn
bG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBj
b25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKICAgICAgICAgICAg
ICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBKSVRDb2RlKCksIEpJ
VENvZGUoKSwgaW50cmluc2ljKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZXhlY3V0YWJsZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2Jh
bERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0
cnVjdG9yKTsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0
YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5j
dGlvbihjYWxsVGh1bmspLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3RydWN0VGh1bmspLCBp
bnRyaW5zaWMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFk
ZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpOwotICAgICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVh
cCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsK
KyAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVF
eGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAg
ICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGds
b2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIoZXhlY3V0YWJsZSwgJmZpbmFsaXplKTsKICAgICAg
ICAgICAgIHJldHVybiBleGVjdXRhYmxlOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KSAK
ICAgICAgICAgewotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRh
YmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgRXZhbEV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhl
Y3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJ
blN0cmljdENvbnRleHQpOwogICAgICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LmFkZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwogICAgICAgICAgICAgcmV0dXJu
IGV4ZWN1dGFibGU7CkBAIC0zODUsNyArMzg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIFByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1dGFibGU+
KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgICAg
ICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxQcm9ncmFtRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIFByb2dyYW1FeGVjdXRh
YmxlKGV4ZWMsIHNvdXJjZSk7CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhl
YXAuYWRkRmluYWxpemVyKGV4ZWN1dGFibGUsICZmaW5hbGl6ZSk7CiAgICAgICAgICAgICByZXR1
cm4gZXhlY3V0YWJsZTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9y
Y2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewot
ICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25FeGVjdXRh
YmxlKGV4ZWMsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBp
c0luU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KCpl
eGVjLT5oZWFwKCkpKSBGdW5jdGlvbkV4ZWN1dGFibGUoZXhlYywgbmFtZSwgc291cmNlLCBmb3Jj
ZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAg
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CiAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVh
cC5hZGRGaW5hbGl6ZXIoZXhlY3V0YWJsZSwgJmZpbmFsaXplKTsKICAgICAgICAgICAgIHJldHVy
biBleGVjdXRhYmxlOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIEZ1bmN0
aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rp
b25FeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5T
dHJpY3RDb250ZXh0KTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEsIG5hbWUsIGZpcnN0TGluZSwgbGFzdExpbmUpOwogICAgICAgICAgICAgZ2xvYmFs
RGF0YS5oZWFwLmFkZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwogICAgICAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvblByb3Rv
dHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEZ1bmN0aW9u
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0cnVjdG9yPigqZXhl
Yy0+aGVhcCgpKSkgRnVuY3Rpb25Db25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHBy
b3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVh
cCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5
cGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbihleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gbmV3IChhbGxvY2F0ZUNlbGw8R2V0
dGVyU2V0dGVyPigqZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpOworICAgICAgICAg
ICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxHZXR0ZXJTZXR0ZXI+KCpleGVjLT5oZWFwKCkpKSBHZXR0ZXJTZXR0ZXIoZXhlYyk7CiAgICAg
ICAgICAgICBnZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CiAgICAgICAgICAgICByZXR1cm4gZ2V0dGVyU2V0dGVyOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHJl
dmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFs
dWVXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSlNBUElWYWx1ZVdyYXBwZXIqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpIAogICAgICAgICB7Ci0gICAgICAgICAgICBK
U0FQSVZhbHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQVBJVmFsdWVX
cmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIoZXhlYyk7CisgICAgICAg
ICAgICBKU0FQSVZhbHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQVBJVmFsdWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIo
ZXhlYyk7CiAgICAgICAgICAgICB3cmFwcGVyLT5maW5pc2hDcmVhdGlvbihleGVjLCB2YWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBKU0FjdGl2YXRpb24qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxK
U0FjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIEpTQWN0aXZhdGlvbihjYWxsRnJhbWUsIGZ1
bmNFeGVjKTsKKyAgICAgICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBY3Rp
dmF0aW9uKGNhbGxGcmFtZSwgZnVuY0V4ZWMpOwogICAgICAgICAgICAgYWN0aXZhdGlvbi0+Zmlu
aXNoQ3JlYXRpb24oY2FsbEZyYW1lKTsKICAgICAgICAgICAgIHJldHVybiBhY3RpdmF0aW9uOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI4ICs3NiwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJh
eShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0K
IAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsIEFycmF5Q3Jl
YXRpb25Nb2RlIGNyZWF0ZU1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJh
eShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSwgaW5pdGlhbExlbmd0aCwgY3JlYXRlTW9kZSk7CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3Jl
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkq
IGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNB
cnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBK
U0FycmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSwgaW5pdGlhbFZhbHVlcyk7CiAgICAgICAgICAgICByZXR1cm4g
YXJyYXk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEpTVmFsdWUq
IHZhbHVlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KGdsb2JhbERhdGEuaGVhcCkpIEpT
QXJyYXkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGFycmF5LT5maW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhLCB2YWx1ZXMsIGxlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm4g
YXJyYXk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
CiAgICAgYm9vbCBjYW5Db25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVO
b25lOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERh
dGEoKS5nZXRIb3N0RnVuY3Rpb24oYm91bmRGdW5jdGlvbkNhbGwsIGNhbkNvbnN0cnVjdCA/IGJv
dW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7Ci0g
ICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQm91bmRG
dW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQm91bmRGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+Ym91bmRGdW5jdGlvblN0cnVjdHVyZSgpLCB0YXJnZXRGdW5jdGlv
biwgYm91bmRUaGlzLCBib3VuZEFyZ3MpOworICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0JvdW5kRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmJv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhpcywgYm91bmRB
cmdzKTsKIAogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBs
ZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBKU0J5dGVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKICAgICAgICAgewotICAgICAgICAgICAgSlNCeXRl
QXJyYXkqIGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNCeXRlQXJyYXk+KCpleGVjLT5oZWFw
KCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UpOworICAgICAgICAgICAg
SlNCeXRlQXJyYXkqIGFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCeXRlQXJy
YXk+KCpleGVjLT5oZWFwKCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUsIHN0b3JhZ2Up
OwogICAgICAgICAgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKGV4ZWMpOwogICAgICAgICAgICAg
cmV0dXJuIGFycmF5OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdI
YWNrIH07CiAgICAgICAgIGV4cGxpY2l0IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrVHlwZSkgeyB9
CiAKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHBsYWNlbWVudE5ld0Rlc3RpbmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlv
bjsgfSAvLyBVc2VkIGZvciBpbml0aWFsaXphdGlvbiBhZnRlciBHQyBhbGxvY2F0aW9uLgotCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOyAvLyBJbnZva2VkIGJ5IEdDIGZpbmFsaXphdGlv
bi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBib29sIEpTRnVuY3Rp
b246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24obmF0
aXZlRnVuY3Rpb24sIG5hdGl2ZUNvbnN0cnVjdG9yKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0
aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
KTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBkbyB0
aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBk
byBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4
ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwpAQCAtNjgsNyAr
NjgsNyBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlCiAKIEpTRnVu
Y3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUpCiB7Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUo
KSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgZnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKGV4ZWMsIG5hdGl2ZUV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAg
cmV0dXJuIGZ1bmN0aW9uOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0
aW9uKGV4ZWMsIGV4ZWN1dGFibGUsIHNjb3BlQ2hhaW4pOworICAgICAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhl
Yy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBleGVjdXRhYmxlLCBzY29wZUNoYWluKTsKICAg
ICAgICAgICAgIEFTU0VSVChmdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsK
ICAgICAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBz
Y29wZUNoYWluKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTAy
ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbFRoaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbFRoaXMuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEpTR2xvYmFsVGhpcyogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU0dsb2Jh
bFRoaXMqIGdsb2JhbFRoaXMgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbFRoaXM+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTR2xvYmFsVGhpcyhnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAg
ICBKU0dsb2JhbFRoaXMqIGdsb2JhbFRoaXMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0dsb2JhbFRoaXM+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsVGhpcyhnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUpOwogICAgICAgICBnbG9iYWxUaGlzLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRh
KTsKICAgICAgICAgcmV0dXJuIGdsb2JhbFRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBKU05vdEFuT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBKU05vdEFuT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU05vdEFu
T2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNOb3RBbk9iamVjdChleGVjKTsKKyAgICAgICAgICAg
IEpTTm90QW5PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTm90
QW5PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU05vdEFuT2JqZWN0KGV4ZWMpOwogICAgICAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU09OT2JqZWN0KiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgSlNPTk9iamVjdCogb2JqZWN0
ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTT05PYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNPTk9iamVjdCogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAo
KSkpIEpTT05PYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAKICAgICAgICAgc3RhdGlj
IEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9
IG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0ZpbmFs
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpTRmlu
YWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5h
bE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgZmluYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmluYWxPYmplY3Q7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3Bl
cnR5TmFtZUl0CiAgICAgICAgICYmICFvLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSAmJiAhby0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcygpKQogICAgICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgCi0gICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHBy
b3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7CisgICAgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90
cyk7CiAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJv
cGVydHlOYW1lcy5kYXRhKCkpOwogCiAgICAgaWYgKG8tPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAgICAg
ICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1D
YWNoZWFibGVTbG90KQogICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKiBpdGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFt
ZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CisgICAgICAgICAgICBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CiAgICAgICAgICAg
ICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsK
ICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkocmV2
aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBK
U0N7CiAKICAgICAgICAgc3RhdGljIEpTU3RhdGljU2NvcGVPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIHNjb3BlT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdGF0aWNTY29wZU9iamVj
dD4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2NvcGVPYmplY3QoZXhlYyk7CisgICAgICAgICAg
ICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBzY29wZU9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTU3RhdGljU2NvcGVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU1N0YXRpY1Njb3Bl
T2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgc2NvcGVPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIHJldHVybiBz
Y29wZU9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcg
QEAgVVN0cmluZyBKU1N0cmluZzo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleAogCiBpbmxpbmUgU3Ry
aW5nT2JqZWN0KiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAgU3RyaW5nT2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnN0cmlu
Z09iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09i
amVjdChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0
dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJpbmcpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZU51
bGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU1N0
cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEu
aGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0
cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAg
ICAgICB9CkBAIC0xNzIsMTkgKzE3MiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmFsdWUtPmxlbmd0
aCgpOwogICAgICAgICAgICAgc2l6ZV90IGNvc3QgPSB2YWx1ZS0+Y29zdCgpOwotICAgICAgICAg
ICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9i
YWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICBK
U1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+
KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKTsKICAgICAgICAg
ICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbGVuZ3RoLCBjb3N0KTsK
ICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogczEs
IEpTU3RyaW5nKiBzMikKICAgICAgICAgewotICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmlu
ZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmlu
ZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmco
Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIHMxLCBzMik7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKICAgICAgICAgewot
ICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3Ry
aW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHMxLCBzMiwgczMpOwogICAgICAg
ICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQpAQCAtMTkyLDcgKzE5Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAgICAgICAgIEpT
U3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUpOworICAgICAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9i
YWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CiAgICAgICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGxlbmd0aCk7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBNYXRoT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgTWF0aE9i
amVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBNYXRoT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVh
cCgpKSkgTWF0aE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBy
ZXR1cm4gb2JqZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZVN0cnVjdHVyZSwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAgICAgICAg
ICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5h
dGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
bmFtZSwgY29uc3RydWN0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3Rvciog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNv
bnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE51bWJlckNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJl
ckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyQ29uc3RydWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KGV4ZWMsIG51bWJlclByb3RvdHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ck9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAg
ICAgICAgICAgTnVtYmVyT2JqZWN0KiBudW1iZXIgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJP
YmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgTnVtYmVyT2JqZWN0KiBudW1iZXIgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbnVtYmVyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIHJldHVybiBudW1iZXI7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBzdGF0aWMgTnVtYmVyUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICAgICAgewotICAgICAgICAgICAgTnVtYmVyUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJQ
cm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE51bWJlclByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyUHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDEw
MjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0
UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9iamVj
dENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPE9iamVjdENvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBPYmplY3RDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgb2JqZWN0UHJvdG90eXBlKTsK
ICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9u
IDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBPYmplY3RQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShl
eGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFw
KCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTcsNyArMjU3LDcgQEAgUmVnRXhwOjp+UmVnRXhwKCkKIAogUmVnRXhwKiBSZWdFeHA6OmNyZWF0
ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgUmVnRXhwKiByZWdFeHAg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHA+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cChnbG9i
YWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CisgICAgUmVnRXhwKiByZWdFeHAgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHA+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cChn
bG9iYWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CiAgICAgcmVnRXhwLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICByZXR1cm4gcmVnRXhwOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lv
biAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
Z0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBS
ZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cENvbnN0cnVjdG9yKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgUmVnRXhwQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHJlZ0V4cFByb3RvdHlw
ZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgUmVnRXhwTWF0Y2hlc0FycmF5KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGN0b3JQcml2YXRlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHJlZ0V4cCA9IG5ldyAoYWxs
b2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE1hdGNo
ZXNBcnJheShleGVjKTsKKyAgICAgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogcmVnRXhwID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwTWF0Y2hlc0FycmF5PigqZXhlYy0+aGVh
cCgpKSkgUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMpOwogICAgICAgICAgICAgcmVnRXhwLT5maW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGN0b3JQcml2YXRlKTsKICAgICAgICAgICAg
IHJldHVybiByZWdFeHA7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTQgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmpl
Y3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAg
ICAgICAgUmVnRXhwT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IHJlZ0V4cCk7CisgICAgICAgICAgICBSZWdFeHBPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFJlZ0V4cE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVj
dChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwKTsKICAgICAgICAgICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAg
ICAgICAgUmVnRXhwT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIFJlZ0V4cE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBSZWdFeHBP
YmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CiAgICAgICAgICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlw
ZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSZWdFeHBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4
cFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cFByb3RvdHlwZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPigqZXhlYy0+
aGVhcCgpKSkgUmVnRXhwUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHAp
OwogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSwxMyArNTksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFNj
b3BlQ2hhaW5Ob2RlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogbmV4
dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKICAgICAgICAgewotICAg
ICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5vZGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTY29wZUNo
YWluTm9kZT4oKmV4ZWMtPmhlYXAoKSkpIFNjb3BlQ2hhaW5Ob2RlKG5leHQsIG9iamVjdCwgZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICAgIFNjb3BlQ2hh
aW5Ob2RlKiBub2RlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+
KCpleGVjLT5oZWFwKCkpKSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CiAgICAgICAgICAgICBub2RlLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFNjb3BlQ2hhaW5Ob2RlKiBjcmVhdGUoU2NvcGVD
aGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gbmV3IChhbGxvY2F0
ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhlYXApKSBTY29wZUNoYWluTm9kZShu
ZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CisgICAg
ICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFNjb3BlQ2hhaW5Ob2RlPihnbG9iYWxEYXRhLT5oZWFwKSkgU2NvcGVDaGFpbk5vZGUobmV4dCwg
b2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOwogICAgICAgICAg
ICAgbm9kZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEw
MjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFN0cmljdEV2YWxBY3RpdmF0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHsK
LSAgICAgICAgU3RyaWN0RXZhbEFjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3Rp
dmF0aW9uKGV4ZWMpOworICAgICAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmljdEV2YWxBY3RpdmF0aW9uPigqZXhlYy0+
aGVhcCgpKSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oZXhlYyk7CiAgICAgICAgIGFjdGl2YXRpb24t
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIHJldHVybiBhY3Rp
dmF0aW9uOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nQ29u
c3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90
b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgU3RyaW5nQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgU3RyaW5nQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3Rv
cihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24oZXhlYywgc3RyaW5nUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyAr
MzUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKLSAgICAg
ICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKTsgIAorICAgICAgICAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOyAgCiAgICAgICAgICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RyaW5nKTsKICAgICAgICAgICAg
IHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBz
dHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3
IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFN0cmluZ09iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhl
Yy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsK
ICAgICAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlz
aW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSlNTdHJpbmcqIGVtcHR5ID0ganNFbXB0eVN0cmluZyhleGVjKTsK
LSAgICAgICAgICAgIFN0cmluZ1Byb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNl
bGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMs
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IFN0cmluZ1Byb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcHJvdG90eXBl
LT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGVtcHR5KTsKICAgICAgICAgICAg
IHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8p
OwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxT
dHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgdHlwZUluZm8sIGNsYXNzSW5mbyk7CisgICAgICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4o
Z2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCB0eXBlSW5mbywgY2xhc3NJbmZvKTsKICAgICAgICAgICAgIHN0cnVjdHVyZS0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlOwog
ICAgICAgICB9CkBAIC0xODgsNyArMTg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1
Y3R1cmUpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhKTsK
KyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSk7
CiAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIENyZWF0
aW5nRWFybHlDZWxsKTsKICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CiAgICAgICAgIH0K
QEAgLTIwMyw3ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLnN0cnVj
dHVyZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5l
dyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFw
KSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBuZXdTdHJ1
Y3R1cmUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIG5l
d1N0cnVjdHVyZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVD
aGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKQog
ICAgICAgICB7IAotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWlu
KGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCkpOwor
ICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGds
b2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCkpOwogICAg
ICAgICAgICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGhlYWQpOwogICAgICAg
ICAgICAgcmV0dXJuIGNoYWluOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0JpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9CaXRWZWN0b3IuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0JpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
Qml0VmVjdG9yOjpPdXRPZkxpbmVCaXRzKiBCaXRWZWN0b3I6Ok91dAogewogICAgIG51bUJpdHMg
PSAobnVtQml0cyArIGJpdHNJblBvaW50ZXIoKSAtIDEpICYgfihiaXRzSW5Qb2ludGVyKCkgLSAx
KTsKICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihPdXRPZkxpbmVCaXRzKSArIHNpemVvZih1aW50
cHRyX3QpICogKG51bUJpdHMgLyBiaXRzSW5Qb2ludGVyKCkpOwotICAgIE91dE9mTGluZUJpdHMq
IHJlc3VsdCA9IG5ldyAoZmFzdE1hbGxvYyhzaXplKSkgT3V0T2ZMaW5lQml0cyhudW1CaXRzKTsK
KyAgICBPdXRPZkxpbmVCaXRzKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Moc2l6
ZSkpIE91dE9mTGluZUJpdHMobnVtQml0cyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3Iu
aAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9p
bnRlckFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb246
OmFsbG9jYXRlKHBvb2xTaXplKTsKICAgICAgICAgaWYgKCEhYWxsb2NhdGlvbikKLSAgICAgICAg
ICAgIHJldHVybiBuZXcoYWxsb2NhdGlvbikgQnVtcFBvaW50ZXJQb29sKGFsbG9jYXRpb24pOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGlvbikgQnVtcFBvaW50ZXJQb29sKGFsbG9j
YXRpb24pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0J5dGVBcnJheS5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gQnl0ZUFycmF5OjpjcmVhdGUoCiB7CiAgICAgdW5z
aWduZWQgY2hhciogYnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXJbc2l6ZSArIE9CSkVDVF9PRkZT
RVRPRihCeXRlQXJyYXksIG1fZGF0YSldOwogICAgIEFTU0VSVCgocmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KGJ1ZmZlcikgJiAzKSA9PSAwKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IChidWZm
ZXIpIEJ5dGVBcnJheShzaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoTm90TnVsbCwg
YnVmZmVyKSBCeXRlQXJyYXkoc2l6ZSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0RlcXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9EZXF1ZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0RlcXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICB7CiAgICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAgICAgZXhwYW5kQ2FwYWNp
dHlJZk5lZWRlZCgpOwotICAgICAgICBuZXcgKCZtX2J1ZmZlci5idWZmZXIoKVttX2VuZF0pIFQo
dmFsdWUpOworICAgICAgICBuZXcgKE5vdE51bGwsICZtX2J1ZmZlci5idWZmZXIoKVttX2VuZF0p
IFQodmFsdWUpOwogICAgICAgICBpZiAobV9lbmQgPT0gbV9idWZmZXIuY2FwYWNpdHkoKSAtIDEp
CiAgICAgICAgICAgICBtX2VuZCA9IDA7CiAgICAgICAgIGVsc2UKQEAgLTQ3MSw3ICs0NzEsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIG1fc3RhcnQgPSBtX2J1ZmZlci5jYXBhY2l0
eSgpIC0gMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgLS1tX3N0YXJ0OwotICAgICAgICBu
ZXcgKCZtX2J1ZmZlci5idWZmZXIoKVttX3N0YXJ0XSkgVCh2YWx1ZSk7CisgICAgICAgIG5ldyAo
Tm90TnVsbCwgJm1fYnVmZmVyLmJ1ZmZlcigpW21fc3RhcnRdKSBUKHZhbHVlKTsKICAgICAgICAg
Y2hlY2tWYWxpZGl0eSgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0QWxsb2NCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0QWxsb2NCYXNlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBA
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUg
IkZhc3RNYWxsb2MuaCIKKyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKICNpbmNsdWRlICJUeXBl
VHJhaXRzLmgiCiAKICNkZWZpbmUgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgXApAQCAtMTIyLDYg
KzEyMywxMSBAQCBwdWJsaWM6IFwKICAgICAgICAgIDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgXAog
ICAgICAgICAgOjpXVEY6OmZhc3RGcmVlKHApOyBcCiAgICAgfSBcCisgICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHRocm93KC4uLikgXAor
ICAgIHsgXAorICAgICAgICBBU1NFUlQobG9jYXRpb24pOyBcCisgICAgICAgIHJldHVybiBsb2Nh
dGlvbjsgXAorICAgIH0gXAogcHJpdmF0ZTogXAogdHlwZWRlZiBpbnQgVGhpc0lzSGVyZVRvRm9y
Y2VBU2VtaWNvbG9uQWZ0ZXJUaGlzTWFjcm8KIApAQCAtMTM4LDcgKzE0NCw3IEBAIG5hbWVzcGFj
ZSBXVEYgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZmFzdE1hbGxvY01hdGNo
VmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXcpOwotICAgICAgICBy
ZXR1cm4gOjpuZXcocCkgVDsKKyAgICAgICAgcmV0dXJuIDo6bmV3IChwKSBUOwogICAgIH0KIAog
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcxPgpAQCAtMTUwLDcgKzE1Niw3
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZmFz
dE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXcp
OwotICAgICAgICByZXR1cm4gOjpuZXcocCkgVChhcmcxKTsKKyAgICAgICAgcmV0dXJuIDo6bmV3
IChwKSBUKGFyZzEpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBBcmcxLCB0eXBlbmFtZSBBcmcyPgpAQCAtMTYyLDcgKzE2OCw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRh
dGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXcpOwotICAgICAgICByZXR1cm4g
OjpuZXcocCkgVChhcmcxLCBhcmcyKTsKKyAgICAgICAgcmV0dXJuIDo6bmV3IChwKSBUKGFyZzEs
IGFyZzIpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcx
LCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFtZSBBcmczPgpAQCAtMTc0LDcgKzE4MCw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZmFzdE1hbGxvY01h
dGNoVmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXcpOwotICAgICAg
ICByZXR1cm4gOjpuZXcocCkgVChhcmcxLCBhcmcyLCBhcmczKTsKKyAgICAgICAgcmV0dXJuIDo6
bmV3IChwKSBUKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFtZSBBcmczLCB0eXBl
bmFtZSBBcmc0PgpAQCAtMTg2LDcgKzE5Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAKICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwg
SW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXcpOwotICAgICAgICByZXR1cm4gOjpuZXcocCkgVChh
cmcxLCBhcmcyLCBhcmczLCBhcmc0KTsKKyAgICAgICAgcmV0dXJuIDo6bmV3IChwKSBUKGFyZzEs
IGFyZzIsIGFyZzMsIGFyZzQpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0
eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFtZSBBcmczLCB0eXBlbmFtZSBBcmc0
LCB0eXBlbmFtZSBBcmc1PgpAQCAtMTk4LDcgKzIwNCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxs
b2MocCwgSW50ZXJuYWw6OkFsbG9jVHlwZUZhc3ROZXcpOwotICAgICAgICByZXR1cm4gOjpuZXco
cCkgVChhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKKyAgICAgICAgcmV0dXJuIDo6bmV3
IChwKSBUKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOwogICAgIH0KIAogICAgIG5hbWVz
cGFjZSBJbnRlcm5hbCB7CkBAIC0yNDQsNyArMjUwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgICAgICAgICAgZmFzdE1hbGxvY01hdGNoVmFsaWRhdGVNYWxsb2MocCwgSW50ZXJuYWw6OkFs
bG9jVHlwZUZhc3ROZXdBcnJheSk7CiAKICAgICAgICAgICAgICAgICBmb3IgKFQqIHBPYmplY3Qg
PSBwLCAqcE9iamVjdEVuZCA9IHBPYmplY3QgKyBjb3VudDsgcE9iamVjdCAhPSBwT2JqZWN0RW5k
OyArK3BPYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHBPYmplY3QpIFQ7CisgICAg
ICAgICAgICAgICAgICAgIDo6bmV3IChwT2JqZWN0KSBUOwogCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHA7CiAgICAgICAgICAgICB9CkBAIC0yODYsNyArMjkyLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICAgICAgICAgKmEuc2l6ZSsrID0gY291bnQ7CiAKICAgICAgICAgICAgICAgICBm
b3IgKFQqIHBUID0gYS50LCAqcFRFbmQgPSBwVCArIGNvdW50OyBwVCAhPSBwVEVuZDsgKytwVCkK
LSAgICAgICAgICAgICAgICAgICAgOjpuZXcocFQpIFQ7CisgICAgICAgICAgICAgICAgICAgIDo6
bmV3IChwVCkgVDsKIAogICAgICAgICAgICAgICAgIHJldHVybiBhLnQ7CiAgICAgICAgICAgICB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgJKHJldmlzaW9uIDEwMjgw
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY0MSw3ICs2NDEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTw+IHN0
cnVjdCBIYXNoVGFibGVCdWNrZXRJbml0aWFsaXplcjxmYWxzZT4gewogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIFZhbHVlPiBzdGF0aWMgdm9pZCBpbml0aWFsaXpl
KFZhbHVlJiBidWNrZXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoJmJ1Y2tldCkgVmFs
dWUoVHJhaXRzOjplbXB0eVZhbHVlKCkpOworICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmYnVj
a2V0KSBWYWx1ZShUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CiAgICAgICAgIH0KICAgICB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUcmFpdHMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUcmFpdHMuaAkocmV2aXNpb24gMTAyODA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIyLDYgKzIyLDcgQEAKICNkZWZpbmUgV1RGX0hhc2hUcmFpdHNfaAogCiAjaW5jbHVk
ZSAiSGFzaEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIlN0ZExpYkV4dHJhcy5oIgogI2luY2x1ZGUg
IlR5cGVUcmFpdHMuaCIKICNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPGxpbWl0cz4KQEAg
LTEwNSw3ICsxMDYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHN0cnVjdCBTaW1wbGVDbGFzc0hhc2hUcmFpdHMgOiBHZW5lcmljSGFzaFRyYWl0czxUPiB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwotICAg
ICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYgc2xvdCkgeyBuZXcgKCZz
bG90KSBUKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgY29u
c3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgVChIYXNo
VGFibGVEZWxldGVkVmFsdWUpOyB9CiAgICAgICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVl
KGNvbnN0IFQmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
OyB9CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2Nh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL01ldGFBbGxv
Y2F0b3IuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNyArMzk3LDcgQEAgTWV0
YUFsbG9jYXRvcjo6RnJlZVNwYWNlTm9kZSogTWV0YUFsbG9jYQogI2lmbmRlZiBOREVCVUcKICAg
ICBtX21hbGxvY0JhbGFuY2UrKzsKICNlbmRpZgotICAgIHJldHVybiBuZXcgKGZhc3RNYWxsb2Mo
c2l6ZW9mKEZyZWVTcGFjZU5vZGUpKSkgRnJlZVNwYWNlTm9kZSgwLCAwKTsKKyAgICByZXR1cm4g
bmV3IChOb3ROdWxsLCBmYXN0TWFsbG9jKHNpemVvZihGcmVlU3BhY2VOb2RlKSkpIEZyZWVTcGFj
ZU5vZGUoMCwgMCk7CiB9CiAKIHZvaWQgTWV0YUFsbG9jYXRvcjo6ZnJlZUZyZWVTcGFjZU5vZGUo
RnJlZVNwYWNlTm9kZSogbm9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3Rk
TGliRXh0cmFzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TdGRM
aWJFeHRyYXMuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TdGRMaWJFeHRyYXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSwxNCBAQCBpbmxp
bmUgQXJyYXlFbGVtZW50VHlwZSogZ2VuZXJpY0JpbmFyeVNlCiAKIH0gLy8gbmFtZXNwYWNlIFdU
RgogCisvLyBUaGlzIHZlcnNpb24gb2YgcGxhY2VtZW50IG5ldyBvbWl0cyBhIDAgY2hlY2suCitl
bnVtIE5vdE51bGxUYWcgeyBOb3ROdWxsIH07CitpbmxpbmUgdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHRocm93KC4uLikKK3sKKyAgICBBU1NF
UlQobG9jYXRpb24pOworICAgIHJldHVybiBsb2NhdGlvbjsKK30KKwogdXNpbmcgV1RGOjpiaW5h
cnlTZWFyY2g7CiB1c2luZyBXVEY6OmJpdHdpc2VfY2FzdDsKIHVzaW5nIFdURjo6c2FmZUNhc3Q7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCShyZXZp
c2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmlj
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBpbmxpbmUgVGhyZWFkU3BlY2lm
aWM8VD46Om9wZXJhdG9yIFQqKCkKICAgICAgICAgLy8gbmVlZHMgdG8gYWNjZXNzIHRoZSB2YWx1
ZSwgdG8gYXZvaWQgcmVjdXJzaW9uLgogICAgICAgICBwdHIgPSBzdGF0aWNfY2FzdDxUKj4oZmFz
dFplcm9lZE1hbGxvYyhzaXplb2YoVCkpKTsKICAgICAgICAgc2V0KHB0cik7Ci0gICAgICAgIG5l
dyAocHRyKSBUOworICAgICAgICBuZXcgKE5vdE51bGwsIHB0cikgVDsKICAgICB9CiAgICAgcmV0
dXJuIHB0cjsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaAkocmV2aXNpb24g
MTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtNzQsNyArNzQsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZShUKiBiZWdpbiwgVCogZW5kKSAKICAgICAgICAgewogICAgICAgICAgICAg
Zm9yIChUKiBjdXIgPSBiZWdpbjsgY3VyICE9IGVuZDsgKytjdXIpCi0gICAgICAgICAgICAgICAg
bmV3IChjdXIpIFQ7CisgICAgICAgICAgICAgICAgbmV3IChOb3ROdWxsLCBjdXIpIFQ7CiAgICAg
ICAgIH0KICAgICB9OwogCkBAIC05Niw3ICs5Niw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAg
ICBzdGF0aWMgdm9pZCBtb3ZlKGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3Qp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlIChzcmMgIT0gc3JjRW5kKSB7Ci0gICAgICAg
ICAgICAgICAgbmV3IChkc3QpIFQoKnNyYyk7CisgICAgICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCBkc3QpIFQoKnNyYyk7CiAjaWYgQ09NUElMRVIoU1VOQ0MpICYmIF9fU1VOUFJPX0NDIDw9IDB4
NTkwCiAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxUKj4oc3JjKS0+flQoKTsgLy8gV29yayBh
cm91bmQgb2JzY3VyZSBTdW5DQyAxMiBjb21waWxlciBidWcuCiAjZWxzZQpAQCAtMTE1LDcgKzEx
NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgICAgIHdoaWxlIChzcmMgIT0gc3Jj
RW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIC0tc3JjRW5kOwogICAgICAgICAgICAgICAgICAg
ICAtLWRzdEVuZDsKLSAgICAgICAgICAgICAgICAgICAgbmV3IChkc3RFbmQpIFQoKnNyY0VuZCk7
CisgICAgICAgICAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgZHN0RW5kKSBUKCpzcmNFbmQpOwog
ICAgICAgICAgICAgICAgICAgICBzcmNFbmQtPn5UKCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBz
dGF0aWMgdm9pZCB1bmluaXRpYWxpemVkQ29weShjb25zdCBUKiBzcmMsIGNvbnN0IFQqIHNyY0Vu
ZCwgVCogZHN0KSAKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUgKHNyYyAhPSBzcmNFbmQp
IHsKLSAgICAgICAgICAgICAgICBuZXcgKGRzdCkgVCgqc3JjKTsKKyAgICAgICAgICAgICAgICBu
ZXcgKE5vdE51bGwsIGRzdCkgVCgqc3JjKTsKICAgICAgICAgICAgICAgICArK2RzdDsKICAgICAg
ICAgICAgICAgICArK3NyYzsKICAgICAgICAgICAgIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIHZvaWQgdW5pbml0aWFsaXplZEZpbGwoVCogZHN0
LCBUKiBkc3RFbmQsIGNvbnN0IFQmIHZhbCkgCiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxl
IChkc3QgIT0gZHN0RW5kKSB7Ci0gICAgICAgICAgICAgICAgbmV3IChkc3QpIFQodmFsKTsKKyAg
ICAgICAgICAgICAgICBuZXcgKE5vdE51bGwsIGRzdCkgVCh2YWwpOwogICAgICAgICAgICAgICAg
ICsrZHN0OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MjcsNyArOTI3LDcgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICAgICBDUkFTSCgpOwogICAgICAgICBUKiBkZXN0ID0gZW5k
KCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkKLSAgICAg
ICAgICAgIG5ldyAoJmRlc3RbaV0pIFQoZGF0YVtpXSk7CisgICAgICAgICAgICBuZXcgKE5vdE51
bGwsICZkZXN0W2ldKSBUKGRhdGFbaV0pOwogICAgICAgICBtX3NpemUgPSBuZXdTaXplOwogICAg
IH0KIApAQCAtOTQ1LDcgKzk0NSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBUKiBkZXN0ID0gZW5kKCk7CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZGF0YVNpemU7ICsraSkKLSAgICAgICAgICAgIG5ldyAoJmRlc3RbaV0pIFQo
ZGF0YVtpXSk7CisgICAgICAgICAgICBuZXcgKE5vdE51bGwsICZkZXN0W2ldKSBUKGRhdGFbaV0p
OwogICAgICAgICBtX3NpemUgPSBuZXdTaXplOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CkBAIC05NjcsOSArOTY3LDkgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIC8vIG9ubHkgYXNz
dW1lIGl0IGlzIGEgYnVnIHdpdGggdGhlIGNvbXBpbGVyLiBDYXN0aW5nIGlzIGEgYmFkIHNvbHV0
aW9uLAogICAgICAgICAvLyBob3dldmVyLCBiZWNhdXNlIGl0IHN1YnZlcnRzIGltcGxpY2l0IGNv
bnZlcnNpb25zLCBzbyBhIGJldHRlciAKICAgICAgICAgLy8gb25lIGlzIG5lZWRlZC4gCi0gICAg
ICAgIG5ldyAoZW5kKCkpIFQoc3RhdGljX2Nhc3Q8VD4oKnB0cikpOworICAgICAgICBuZXcgKE5v
dE51bGwsIGVuZCgpKSBUKHN0YXRpY19jYXN0PFQ+KCpwdHIpKTsKICNlbHNlCi0gICAgICAgIG5l
dyAoZW5kKCkpIFQoKnB0cik7CisgICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoKnB0cik7
CiAjZW5kaWYKICAgICAgICAgKyttX3NpemU7CiAgICAgfQpAQCAtOTgyLDcgKzk4Miw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgIHsKICAgICAgICAgQVNTRVJUKHNpemUoKSA8IGNhcGFjaXR5KCkp
OwogICAgICAgICBjb25zdCBVKiBwdHIgPSAmdmFsOwotICAgICAgICBuZXcgKGVuZCgpKSBUKCpw
dHIpOworICAgICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKCpwdHIpOwogICAgICAgICArK21f
c2l6ZTsKICAgICB9CiAKQEAgLTEwMTAsNyArMTAxMCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAg
ICAgICBUKiBzcG90ID0gYmVnaW4oKSArIHBvc2l0aW9uOwogICAgICAgICBUeXBlT3BlcmF0aW9u
czo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVuZCgpLCBzcG90ICsgZGF0YVNpemUpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGFTaXplOyArK2kpCi0gICAgICAgICAgICBuZXcg
KCZzcG90W2ldKSBUKGRhdGFbaV0pOworICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmc3BvdFtp
XSkgVChkYXRhW2ldKTsKICAgICAgICAgbV9zaXplID0gbmV3U2l6ZTsKICAgICB9CiAgICAgIApA
QCAtMTAyNiw3ICsxMDI2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIH0KICAgICAgICAg
VCogc3BvdCA9IGJlZ2luKCkgKyBwb3NpdGlvbjsKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1v
dmVPdmVybGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIDEpOwotICAgICAgICBuZXcgKHNwb3Qp
IFQoKmRhdGEpOworICAgICAgICBuZXcgKE5vdE51bGwsIHNwb3QpIFQoKmRhdGEpOwogICAgICAg
ICArK21fc2l6ZTsKICAgICB9CiAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9BdG9taWNTdHJpbmdIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2guaAkod29ya2luZyBj
b3B5KQpAQCAtNTEsNyArNTEsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAvLyBBdG9taWNTdHJp
bmdIYXNoIGlzIHRoZSBkZWZhdWx0IGhhc2ggZm9yIEF0b21pY1N0cmluZwogICAgIHRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8V1RGOjpBdG9taWNTdHJpbmc+IDogR2VuZXJpY0hhc2hUcmFp
dHM8V1RGOjpBdG9taWNTdHJpbmc+IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRW
YWx1ZShXVEY6OkF0b21pY1N0cmluZyYgc2xvdCkgeyBuZXcgKCZzbG90KSBXVEY6OkF0b21pY1N0
cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0
cnVjdERlbGV0ZWRWYWx1ZShXVEY6OkF0b21pY1N0cmluZyYgc2xvdCkgeyBuZXcgKE5vdE51bGws
ICZzbG90KSBXVEY6OkF0b21pY1N0cmluZyhIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CiAgICAg
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBz
bG90KSB7IHJldHVybiBzbG90LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KICAgICB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDcgKzg5LDcgQEAgUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdAogICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0
YXRpY19jYXN0PFN0cmluZ0ltcGwqPihmYXN0TWFsbG9jKHNpemUpKTsKIAogICAgIGRhdGEgPSBy
ZWludGVycHJldF9jYXN0PExDaGFyKj4oc3RyaW5nICsgMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyAoc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0b3IpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IChOb3ROdWxsLCBzdHJpbmcpIFN0cmluZ0ltcGwobGVu
Z3RoLCBGb3JjZThCaXRDb25zdHJ1Y3RvcikpOwogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBVQ2hhciom
IGRhdGEpCkBAIC0xMDgsNyArMTA4LDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJ
bXBsOjpjcmVhdAogICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0lt
cGwqPihmYXN0TWFsbG9jKHNpemUpKTsKIAogICAgIGRhdGEgPSByZWludGVycHJldF9jYXN0PFVD
aGFyKj4oc3RyaW5nICsgMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoc3RyaW5nKSBTdHJp
bmdJbXBsKGxlbmd0aCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgKE5vdE51bGwsIHN0cmlu
ZykgU3RyaW5nSW1wbChsZW5ndGgpKTsKIH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpyZWFsbG9jYXRlKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKQpAQCAtMTMwLDcgKzEzMCw3IEBAIFBhc3NS
ZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGwKICAgICBTdHJpbmdJbXBsKiBzdHJp
bmcgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oZmFzdFJlYWxsb2Mob3JpZ2luYWxTdHJpbmcu
bGVha1JlZigpLCBzaXplKSk7CiAKICAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxMQ2hhcio+
KHN0cmluZyArIDEpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgKHN0cmluZykgU3RyaW5nSW1w
bChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0
b3IpKTsKIH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbG9jYXRl
KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxTdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwg
VUNoYXIqJiBkYXRhKQpAQCAtMTUyLDcgKzE1Miw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6cmVhbGwKICAgICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxT
dHJpbmdJbXBsKj4oZmFzdFJlYWxsb2Mob3JpZ2luYWxTdHJpbmcubGVha1JlZigpLCBzaXplKSk7
CiAKICAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KHN0cmluZyArIDEpOwotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgKHN0cmluZykgU3RyaW5nSW1wbChsZW5ndGgpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IChOb3ROdWxsLCBzdHJpbmcpIFN0cmluZ0ltcGwobGVuZ3RoKSk7
CiB9CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlKGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI0Nyw5ICsyNDcsOSBAQCBwdWJsaWM6CiAgICAgICAgIG91dHB1dCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8VCo+KHJlc3VsdEltcGwgKyAxKTsKIAogICAgICAgICBpZiAoc2l6ZW9mKFQpID09IHNpemVv
ZihjaGFyKSkKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcocmVzdWx0SW1wbCkgU3Ry
aW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IChOb3ROdWxsLCByZXN1bHRJbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwg
Rm9yY2U4Qml0Q29uc3RydWN0b3IpKTsKIAotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3KHJl
c3VsdEltcGwpIFN0cmluZ0ltcGwobGVuZ3RoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgKE5vdE51bGwsIHJlc3VsdEltcGwpIFN0cmluZ0ltcGwobGVuZ3RoKSk7CiAgICAgfQogCiAg
ICAgLy8gUmVhbGxvY2F0ZSB0aGUgU3RyaW5nSW1wbC4gVGhlIG9yaWdpbmFsU3RyaW5nIG11c3Qg
YmUgb25seSBvd25lZCBieSB0aGUgUGFzc1JlZlB0ciwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjgsMTMgKzY4LDEzIEBAIHZvaWQgQXRvbWljU3RyaW5nOjppbml0KCkK
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgICAgICAvLyBVc2UgcGxhY2Vt
ZW50IG5ldyB0byBpbml0aWFsaXplIHRoZSBnbG9iYWxzLgotICAgICAgICBuZXcgKCh2b2lkKikm
bnVsbEF0b20pIEF0b21pY1N0cmluZzsKLSAgICAgICAgbmV3ICgodm9pZCopJmVtcHR5QXRvbSkg
QXRvbWljU3RyaW5nKCIiKTsKLSAgICAgICAgbmV3ICgodm9pZCopJnRleHRBdG9tKSBBdG9taWNT
dHJpbmcoIiN0ZXh0Iik7Ci0gICAgICAgIG5ldyAoKHZvaWQqKSZjb21tZW50QXRvbSkgQXRvbWlj
U3RyaW5nKCIjY29tbWVudCIpOwotICAgICAgICBuZXcgKCh2b2lkKikmc3RhckF0b20pIEF0b21p
Y1N0cmluZygiKiIpOwotICAgICAgICBuZXcgKCh2b2lkKikmeG1sQXRvbSkgQXRvbWljU3RyaW5n
KCJ4bWwiKTsKLSAgICAgICAgbmV3ICgodm9pZCopJnhtbG5zQXRvbSkgQXRvbWljU3RyaW5nKCJ4
bWxucyIpOworICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmbnVsbEF0b20pIEF0b21pY1N0
cmluZzsKKyAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJmVtcHR5QXRvbSkgQXRvbWljU3Ry
aW5nKCIiKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnRleHRBdG9tKSBBdG9taWNT
dHJpbmcoIiN0ZXh0Iik7CisgICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZjb21tZW50QXRv
bSkgQXRvbWljU3RyaW5nKCIjY29tbWVudCIpOworICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lk
Kikmc3RhckF0b20pIEF0b21pY1N0cmluZygiKiIpOworICAgICAgICBuZXcgKE5vdE51bGwsICh2
b2lkKikmeG1sQXRvbSkgQXRvbWljU3RyaW5nKCJ4bWwiKTsKKyAgICAgICAgbmV3IChOb3ROdWxs
LCAodm9pZCopJnhtbG5zQXRvbSkgQXRvbWljU3RyaW5nKCJ4bWxucyIpOwogCiAgICAgICAgIGlu
aXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIGFsbG9jYXRvclBvb2wgPSBhbGxvY2F0
b3JQb29sLT5lbnN1cmVDYXBhY2l0eShzaXplKTsKICAgICAgICAgaWYgKCFhbGxvY2F0b3JQb29s
KQogICAgICAgICAgICAgQ1JBU0goKTsKLSAgICAgICAgcmV0dXJuIG5ldyhhbGxvY2F0b3JQb29s
LT5hbGxvYyhzaXplKSkgRGlzanVuY3Rpb25Db250ZXh0KCk7CisgICAgICAgIHJldHVybiBuZXcg
KGFsbG9jYXRvclBvb2wtPmFsbG9jKHNpemUpKSBEaXNqdW5jdGlvbkNvbnRleHQoKTsKICAgICB9
CiAKICAgICB2b2lkIGZyZWVEaXNqdW5jdGlvbkNvbnRleHQoRGlzanVuY3Rpb25Db250ZXh0KiBj
b250ZXh0KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBvdXRw
dXRbKGZpcnN0U3VicGF0dGVybklkIDw8IDEpICsgaV0gPSAtMTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgbmV3KGdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSkgRGlzanVuY3Rpb25D
b250ZXh0KCk7CisgICAgICAgICAgICBuZXcgKGdldERpc2p1bmN0aW9uQ29udGV4dCh0ZXJtKSkg
RGlzanVuY3Rpb25Db250ZXh0KCk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkKiBvcGVyYXRv
ciBuZXcoc2l6ZV90LCB2b2lkKiB3aGVyZSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIGFsbG9jYXRvclBvb2wgPSBhbGxvY2F0b3JQb29sLT5lbnN1cmVDYXBhY2l0eShzaXpl
KTsKICAgICAgICAgaWYgKCFhbGxvY2F0b3JQb29sKQogICAgICAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyhhbGxvY2F0b3JQb29sLT5hbGxvYyhzaXplKSkgUGFyZW50aGVzZXNE
aXNqdW5jdGlvbkNvbnRleHQob3V0cHV0LCB0ZXJtKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoYWxs
b2NhdG9yUG9vbC0+YWxsb2Moc2l6ZSkpIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KG91
dHB1dCwgdGVybSk7CiAgICAgfQogCiAgICAgdm9pZCBmcmVlUGFyZW50aGVzZXNEaXNqdW5jdGlv
bkNvbnRleHQoUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMDMwMTQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAxMS0xMi0xNSAgR2VvZmZyZXkgR2FyZW4g
IDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFBsYWNlbWVudCBuZXcgZG9lcyBhbiB1bm5l
Y2Vzc2FyeSBOVUxMIGNoZWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDY3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24pOgorICAgICAgICAqIGJyaWRn
ZS9jL0NSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpDUnVudGltZU9i
amVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2UvYy9jX2luc3RhbmNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAqIGJy
aWRnZS9qbmkvanNjL0phdmFJbnN0YW5jZUpTQy5jcHA6CisgICAgICAgIChKYXZhUnVudGltZU1l
dGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVj
dC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6SmF2YVJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6
CisgICAgICAgICogYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iakNSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpDUnVudGltZU1ldGhvZDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaDoKKyAgICAgICAgKEpT
Qzo6QmluZGluZ3M6Ok9iamNGYWxsYmFja09iamVjdEltcDo6Y3JlYXRlKToKKyAgICAgICAgKiBi
cmlkZ2UvcnVudGltZV9hcnJheS5oOgorICAgICAgICAoSlNDOjpSdW50aW1lQXJyYXk6OmNyZWF0
ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmg6CisgICAgICAgIChKU0M6OlJ1
bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfb2JqZWN0Lmg6
CisgICAgICAgIChKU0M6OkJpbmRpbmdzOjpSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUVsZW1lbnRLZXlIYXNo
VHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOiBVc2UgTm90TnVsbAorICAgICAgICBwbGFj
ZW1lbnQgbmV3LCBhcyBpbiBKYXZhU2NyaXB0Q29yZS4KKworICAgICAgICAqIHBsYXRmb3JtL1BP
REFyZW5hLmg6CisgICAgICAgIChXZWJDb3JlOjpQT0RBcmVuYTo6YWxsb2NhdGVPYmplY3QpOiBO
byBuZWVkIHRvIGNoZWNrIGZvciBOVUxMIGV4cGxpY2l0bHksCisgICAgICAgIHNpbmNlIHRoYXQn
cyB0aGUgYnVpbHQtaW4gYmVoYXZpb3Igb2YgcGxhY2VtZW50IG5ldy4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RGF0
YUNhY2hlS2V5VHJhaXRzOjpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ludFJlY3RIYXNoLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
SW50U2l6ZUhhc2guaDogTW9yZSBOb3ROdWxsLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5oOiBEZWNsYXJpbmcgdGhhdCB3ZSB0aHJvdyBpcyB0aGUgQysrIHdheSB0byBzYXkK
KyAgICAgICAgdGhhdCBvcGVyYXRvciBuZXcgd2lsbCBub3QgcmV0dXJuIE5VTEwuCisKIDIwMTEt
MTItMTUgIEtlbm5ldGggUnVzc2VsbCAgPGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDMwMDAuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHN0YXRp
YyBKU0ltYWdlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICAgICAgewotICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5l
dyAoSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkg
SlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAg
IEpTSW1hZ2VDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTSW1hZ2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTSW1hZ2VDb25z
dHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBjb25zdHJ1Y3Rv
ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVy
biBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDEwMjgwOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NDUsMTQgKzc0NSwxNCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBs
VHlwZT4gaW1wbCwgSlNET01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwpXG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwk
Y2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlLCBpbXBsLCB3aW5kb3dTaGVsbCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFs
RGF0YSwgc3RydWN0dXJlLCBpbXBsLCB3aW5kb3dTaGVsbCk7XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCB3
aW5kb3dTaGVsbCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAg
cmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxu
Iik7CiAgICAgfSBlbHNpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSXNXb3Jr
ZXJDb250ZXh0In0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMg
JGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKEpTQzo6YWxsb2NhdGVD
ZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUsIGltcGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
JGNsYXNzTmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSwgaW1wbCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTtcbiIpOwogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTc2MCw3ICs3NjAsNyBAQCBzdWIgR2VuZXJh
dGVIZWFkZXIKICAgICAgICAgQWRkSW5jbHVkZXNGb3JUeXBlSW5IZWFkZXIoJGltcGxUeXBlKSB1
bmxlc3MgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwk
aW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7
XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSog
cHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgaW1w
bCk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFt
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCwgaW1wbCk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7XG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CkBAIC0xMDU3LDcgKzEw
NTcsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljICR7Y2xhc3NOYW1lfVByb3RvdHlwZSogY3JlYXRlKEpTQzo6SlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpXG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtc
biIpOwotICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNzTmFtZX1Qcm90b3R5cGU+
KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShnbG9iYWxEYXRhLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSk7XG4iKTsKKyAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8JHtjbGFzc05hbWV9UHJvdG90eXBlPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNz
TmFtZX1Qcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpO1xuIik7
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihn
bG9iYWxEYXRhKTtcbiIpOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVy
biBwdHI7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIH1cblxuIik7CkBAIC0z
MzE1LDcgKzMzMTUsNyBAQCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFz
ZTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgJGNvbnN0cnVjdG9y
Q2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAge1xuIik7Ci0gICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICAkY29uc3RydWN0b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lPigqZXhlYy0+aGVhcCgpKSkgJGNvbnN0cnVjdG9yQ2xhc3NO
YW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpT
Qzo6YWxsb2NhdGVDZWxsPCRjb25zdHJ1Y3RvckNsYXNzTmFtZT4oKmV4ZWMtPmhlYXAoKSkpICRj
b25zdHJ1Y3RvckNsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xv
YmFsT2JqZWN0KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJu
IHB0cjtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB9XG5cbiIpOwpAQCAtMzM1
MCw3ICszMzUwLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTJHtpbnRlcmZhY2VOYW1lfU5h
bWVkQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7Ci0g
ICAgICAgIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9y
PigqZXhlYy0+aGVhcCgpKSkgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
UyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlMke2lu
dGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpOwog
ICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUv
YnJpZGdlL3J1bnRpbWVfYXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9hcnJheS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvcnVudGltZV9hcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0
aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBX
ZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJhcnJheSIuCiAg
ICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERP
TVN0cnVjdHVyZTxSdW50aW1lQXJyYXk+KGV4ZWMpOwotICAgICAgICBSdW50aW1lQXJyYXkqIHJ1
bnRpbWVBcnJheSA9IG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJheT4oKmV4ZWMtPmhlYXAo
KSkpIFJ1bnRpbWVBcnJheShleGVjLCBkb21TdHJ1Y3R1cmUpOworICAgICAgICBSdW50aW1lQXJy
YXkqIHJ1bnRpbWVBcnJheSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVBcnJh
eT4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVBcnJheShleGVjLCBkb21TdHJ1Y3R1cmUpOwogICAg
ICAgICBydW50aW1lQXJyYXktPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXJy
YXkpOwogICAgICAgICByZXR1cm4gcnVudGltZUFycmF5OwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyAr
NDEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUnVudGltZU1ldGhvZCogY3JlYXRlKEV4ZWNT
dGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEJpbmRpbmdzOjpNZXRob2RMaXN0JiBtZXRo
b2RMaXN0KQogICAgIHsKLSAgICAgICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChhbGxv
Y2F0ZUNlbGw8UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVNZXRob2QoZ2xv
YmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZExpc3QpOworICAgICAgICBSdW50aW1lTWV0aG9k
KiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9kPigqZXhl
Yy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWV0aG9k
TGlzdCk7CiAgICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBuYW1lKTsKICAgICAgICAgcmV0dXJuIG1ldGhvZDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9icmlkZ2UvcnVudGltZV9vYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dl
YkNvcmUvYnJpZGdlL3J1bnRpbWVfb2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJ1bnRpbWVPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPEluc3RhbmNlPiBpbnN0YW5jZSkKICAgICB7Ci0gICAgICAgIFJ1bnRp
bWVPYmplY3QqIG9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPFJ1bnRpbWVPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBp
bnN0YW5jZSk7CisgICAgICAgIFJ1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPFJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lT2JqZWN0
KGV4ZWMsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBpbnN0YW5jZSk7CiAgICAgICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgJKHJl
dmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICAvLyBG
SVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9m
IHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0
aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0
cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8Q1J1bnRpbWVPYmpl
Y3Q+KGV4ZWMpOwotICAgICAgICBDUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChhbGxvY2F0
ZUNlbGw8Q1J1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU9iamVjdChleGVj
LCBnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgaW5zdGFuY2UpOworICAgICAgICBDUnVudGlt
ZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGRv
bVN0cnVjdHVyZSwgaW5zdGFuY2UpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKGds
b2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9jL2NfaW5zdGFuY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgs
NyArMTE4LDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBm
b3IgImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJl
Y2F0ZWRHZXRET01TdHJ1Y3R1cmU8Q1J1bnRpbWVNZXRob2Q+KGV4ZWMpOwotICAgICAgICBDUnVu
dGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChhbGxvY2F0ZUNlbGw8Q1J1bnRpbWVNZXRob2Q+KCpl
eGVjLT5oZWFwKCkpKSBDUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwg
bGlzdCk7CisgICAgICAgIENSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIENSdW50aW1lTWV0aG9k
KGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBsaXN0KTsKICAgICAgICAgbWV0aG9kLT5maW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgICAgICByZXR1cm4gbWV0
aG9kOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0
YW5jZUpTQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YUluc3RhbmNlSlNDLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIz
LDcgKzEyMyw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVj
dAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3Qg
Zm9yICJpIi4KICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXBy
ZWNhdGVkR2V0RE9NU3RydWN0dXJlPEphdmFSdW50aW1lTWV0aG9kPihleGVjKTsKLSAgICAgICAg
SmF2YVJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoYWxsb2NhdGVDZWxsPEphdmFSdW50aW1l
TWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBk
b21TdHJ1Y3R1cmUsIGxpc3QpOworICAgICAgICBKYXZhUnVudGltZU1ldGhvZCogbWV0aG9kID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFw
KCkpKSBKYXZhUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7
CiAgICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1l
KTsKICAgICAgICAgcmV0dXJuIG1ldGhvZDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgw
OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhN
RTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRo
ZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUg
cmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVj
dHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8SmF2YVJ1bnRpbWVPYmpl
Y3Q+KGV4ZWMpOwotICAgICAgICBKYXZhUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChhbGxv
Y2F0ZUNlbGw8SmF2YVJ1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKYXZhUnVudGltZU9i
amVjdChleGVjLCBnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgamF2YUluc3RhbmNlKTsKKyAg
ICAgICAgSmF2YVJ1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEphdmFSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVPYmplY3Qo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGphdmFJbnN0YW5jZSk7CiAgICAgICAg
IG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGlt
ZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNS
dW50aW1lT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcg
QEAgcHVibGljOgogICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1
c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAg
IC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01T
dHJ1Y3R1cmU8T2JqQ1J1bnRpbWVPYmplY3Q+KGV4ZWMpOwotICAgICAgICBPYmpDUnVudGltZU9i
amVjdCogb2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpleGVj
LT5oZWFwKCkpKSBPYmpDUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGluc3QsIHN0
cnVjdHVyZSk7CisgICAgICAgIE9iakNSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNS
dW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdCwgc3RydWN0dXJlKTsKICAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4g
b2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19p
bnN0YW5jZS5tbQkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19pbnN0YW5jZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHB1
YmxpYzoKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0
aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBX
ZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KICAgICAg
ICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlPE9iakNSdW50aW1lTWV0aG9kPihleGVjKTsKLSAgICAgICAgT2JqQ1J1bnRpbWVNZXRo
b2QqIG1ldGhvZCA9IG5ldyAoYWxsb2NhdGVDZWxsPE9iakNSdW50aW1lTWV0aG9kPigqZXhlYy0+
aGVhcCgpKSkgT2JqQ1J1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGxp
c3QpOworICAgICAgICBPYmpDUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGlt
ZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7CiAgICAgICAgIG1ldGhv
ZC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICAgICAgcmV0
dXJuIG1ldGhvZDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpj
X3J1bnRpbWUuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29i
amMvb2JqY19ydW50aW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNl
cyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICBT
dHJ1Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1
cmU8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPihleGVjKTsKLSAgICAgICAgT2JqY0ZhbGxiYWNrT2Jq
ZWN0SW1wKiBmYWxsYmFja09iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09i
amVjdEltcD4oKmV4ZWMtPmhlYXAoKSkpIE9iamNGYWxsYmFja09iamVjdEltcChnbG9iYWxPYmpl
Y3QsIGRvbVN0cnVjdHVyZSwgaW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7CisgICAgICAgIE9iamNG
YWxsYmFja09iamVjdEltcCogZmFsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxPYmpjRmFsbGJhY2tPYmplY3RJbXA+KCpleGVjLT5oZWFwKCkpKSBPYmpjRmFsbGJhY2tP
YmplY3RJbXAoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlLCBwcm9wZXJ0eU5h
bWUpOwogICAgICAgICBmYWxsYmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgcmV0dXJuIGZhbGxiYWNrT2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDcgKzIwMSw3IEBAIHN0cnVjdCBGb3JtRWxlbWVu
dEtleUhhc2ggewogfTsKIAogc3RydWN0IEZvcm1FbGVtZW50S2V5SGFzaFRyYWl0cyA6IFdURjo6
R2VuZXJpY0hhc2hUcmFpdHM8Rm9ybUVsZW1lbnRLZXk+IHsKLSAgICBzdGF0aWMgdm9pZCBjb25z
dHJ1Y3REZWxldGVkVmFsdWUoRm9ybUVsZW1lbnRLZXkmIHNsb3QpIHsgbmV3ICgmc2xvdCkgRm9y
bUVsZW1lbnRLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgc3RhdGljIHZv
aWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKEZvcm1FbGVtZW50S2V5JiBzbG90KSB7IG5ldyAoTm90
TnVsbCwgJnNsb3QpIEZvcm1FbGVtZW50S2V5KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsg
fQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IEZvcm1FbGVtZW50S2V5JiB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogfTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUE9EQXJlbmEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RBcmVuYS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QT0RBcmVuYS5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niwy
MyArODYsMTMgQEAgcHVibGljOgogICAgIC8vIEFsbG9jYXRlcyBhbiBvYmplY3QgZnJvbSB0aGUg
YXJlbmEuCiAgICAgdGVtcGxhdGU8Y2xhc3MgVD4gVCogYWxsb2NhdGVPYmplY3QoKQogICAgIHsK
LSAgICAgICAgdm9pZCogcHRyID0gYWxsb2NhdGVCYXNlPFQ+KCk7Ci0gICAgICAgIGlmIChwdHIp
IHsKLSAgICAgICAgICAgIC8vIFVzZSBwbGFjZW1lbnQgb3BlcmF0b3IgbmV3IHRvIGFsbG9jYXRl
IGEgVCBhdCB0aGlzIGxvY2F0aW9uLgotICAgICAgICAgICAgbmV3KHB0cikgVCgpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4ocHRyKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAoYWxsb2NhdGVCYXNlPFQ+KCkpIFQoKTsKICAgICB9CiAKICAgICAvLyBBbGxvY2F0ZXMg
YW4gb2JqZWN0IGZyb20gdGhlIGFyZW5hLCBjYWxsaW5nIGEgc2luZ2xlLWFyZ3VtZW50IGNvbnN0
cnVjdG9yLgogICAgIHRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEFyZ3VtZW50MVR5cGU+IFQqIGFs
bG9jYXRlT2JqZWN0KGNvbnN0IEFyZ3VtZW50MVR5cGUmIGFyZ3VtZW50MSkKICAgICB7Ci0gICAg
ICAgIHZvaWQqIHB0ciA9IGFsbG9jYXRlQmFzZTxUPigpOwotICAgICAgICBpZiAocHRyKSB7Ci0g
ICAgICAgICAgICAvLyBVc2UgcGxhY2VtZW50IG9wZXJhdG9yIG5ldyB0byBhbGxvY2F0ZSBhIFQg
YXQgdGhpcyBsb2NhdGlvbi4KLSAgICAgICAgICAgIG5ldyhwdHIpIFQoYXJndW1lbnQxKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHB0cik7CisgICAgICAgIHJl
dHVybiBuZXcgKGFsbG9jYXRlQmFzZTxUPigpKSBUKGFyZ3VtZW50MSk7CiAgICAgfQogCiAgICAg
Ly8gVGhlIGluaXRpYWwgc2l6ZSBvZiBhbGxvY2F0ZWQgY2h1bmtzOyBpbmNyZWFzZXMgYXMgbmVj
ZXNzYXJ5IHRvCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2Fj
aGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYWNoZS5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBA
QCBzdHJ1Y3QgRm9udERhdGFDYWNoZUtleVRyYWl0cyA6IFdURjo6R2VuCiAgICAgfQogICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShGb250UGxhdGZvcm1EYXRhJiBzbG90KQog
ICAgIHsKLSAgICAgICAgbmV3ICgmc2xvdCkgRm9udFBsYXRmb3JtRGF0YShIYXNoVGFibGVEZWxl
dGVkVmFsdWUpOworICAgICAgICBuZXcgKE5vdE51bGwsICZzbG90KSBGb250UGxhdGZvcm1EYXRh
KEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CiAgICAgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRl
ZFZhbHVlKGNvbnN0IEZvbnRQbGF0Zm9ybURhdGEmIHZhbHVlKQogICAgIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RIYXNoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEhhc2guaAkocmV2aXNpb24g
MTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEhhc2gu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBEZWZh
dWx0SGFzaDxXZWJDb3JlOjpJCiB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6
OkludFJlY3Q+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6SW50UmVjdD4gewogICAgIHN0
YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSB0cnVlOwogICAgIHN0YXRpYyBjb25z
dCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKLSAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6SW50UmVjdCYgc2xvdCkgeyBuZXcgKCZzbG90KSBXZWJD
b3JlOjpJbnRSZWN0KC0xLCAtMSwgLTEsIC0xKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpJbnRSZWN0JiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNs
b3QpIFdlYkNvcmU6OkludFJlY3QoLTEsIC0xLCAtMSwgLTEpOyB9CiAgICAgc3RhdGljIGJvb2wg
aXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgdmFsdWUpIHsgcmV0dXJuIHZh
bHVlLngoKSA9PSAtMSAmJiB2YWx1ZS55KCkgPT0gLTEgJiYgdmFsdWUud2lkdGgoKSA9PSAtMSAm
JiB2YWx1ZS5oZWlnaHQoKSA9PSAtMTsgfQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplSGFzaC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplSGFzaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRlbXBsYXRlPD4gc3Ry
dWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6SW50U2l6ZT4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJD
b3JlOjpJbnRTaXplPiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1pl
cm8gPSB0cnVlOwogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVkc0Rlc3RydWN0aW9uID0g
ZmFsc2U7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3Jl
OjpJbnRTaXplJiBzbG90KSB7IG5ldyAoJnNsb3QpIFdlYkNvcmU6OkludFNpemUoLTEsIC0xKTsg
fQorICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6SW50
U2l6ZSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90KSBXZWJDb3JlOjpJbnRTaXplKC0xLCAt
MSk7IH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLndpZHRoKCkgPT0gLTEgJiYgdmFsdWUuaGVp
Z2h0KCkgPT0gLTE7IH0KICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV1RGCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIHZvaWQqIGJhc2VPZlJlbmRlck9iamVjdEJlaW5nRGVs
ZQogCiBib29sIFJlbmRlck9iamVjdDo6c19hZmZlY3RzUGFyZW50QmxvY2sgPSBmYWxzZTsKIAot
dm9pZCogUmVuZGVyT2JqZWN0OjpvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVuYSog
cmVuZGVyQXJlbmEpIHRocm93KCkKK3ZvaWQqIFJlbmRlck9iamVjdDo6b3BlcmF0b3IgbmV3KHNp
emVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKSB0aHJvdyguLi4pCiB7CiAgICAgcmV0
dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4gIERlcml2ZWQg
Y2xhc3NlcyBtdXN0IG92ZXJyaWRlIG9wZXJhdG9yIG5ldwogICAgIC8vIGluIG9yZGVyIHRvIGFs
bG9jYXRlIG91dCBvZiB0aGUgUmVuZGVyQXJlbmEuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOworICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIFJlbmRlckFyZW5hKikgdGhyb3coLi4uKTsKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8gcHJl
dmVudCB0aGUgbm9ybWFsIGRlbGV0ZSBmcm9tIGJlaW5nIGNhbGxlZC4KICAgICB2b2lkIG9wZXJh
dG9yIGRlbGV0ZSh2b2lkKiwgc2l6ZV90KTsK
</data>
<flag name="commit-queue"
          id="119629"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119563</attachid>
            <date>2011-12-15 21:53:40 -0800</date>
            <delta_ts>2011-12-15 23:14:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74676-20111215215338.patch</filename>
            <type>text/plain</type>
            <size>116033</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMiBA
QAorMjAxMS0xMi0xNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFBsYWNlbWVudCBuZXcgZG9lcyBhbiB1bm5lY2Vzc2FyeSBOVUxMIGNoZWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY3NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkZWZpbmUgb3Vy
IG93biB2ZXJzaW9uLCB3aGljaCBza2lwcyB0aGUgTlVMTCBjaGVjay4KKyAgICAgICAgCisgICAg
ICAgIE5vdCBhIG1lYXN1cmFibGUgc3BlZWR1cCwgYnV0IGNvZGUgaW5zcGVjdGlvbiBzaG93cyBi
ZXR0ZXIgY29kZSBnZW5lcmF0ZWQsCisgICAgICAgIGFuZCBJIGJlbGlldmUgdGhpcyBpcyBhIHN0
ZXAgdG93YXJkIHR1cm5pbmcgb2ZmIC1mb21pdC1mcmFtZS1wb2ludGVyLgorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVs
bCB2ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBuZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVj
ay4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6IFJlbW92ZWQgYSBjb25mbGlj
dGluZywgdW5uZWNlc3NhcmF5IHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgKEpTQzo6SlNDYWxs
YmFja09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uaDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAqIGhlYXAvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Omdyb3cp
OgorICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFw
OjphbGxvY2F0ZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6cmVj
eWNsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6
Y2xlYXIpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgICogcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgor
ICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkJvb2xlYW5PYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmg6CisgICAgICAgIChKU0M6OkJvb2xlYW5Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAg
ICAgIChKU0M6OkRhdGVJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQ
cm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RGF0ZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JG
dW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkVy
cm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6
SlNBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6
OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVsbCB2ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBu
ZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVjay4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
IFJlbW92ZWQgYSBjb25mbGljdGluZywgdW5uZWNlc3NhcmF5IHBsYWNlbWVudCBuZXcuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbFRoaXMuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxUaGlzOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU05v
dEFuT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y3JlYXRl
TnVsbCk6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpSb3BlQnVpbGRlcjo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAgICogcnVudGltZS9N
YXRoT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJv
clByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6
Ok51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNy
ZWF0ZVdpdGhvdXRDYWNoaW5nKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNo
ZXNBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWlu
Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmg6
CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNo
YWluOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAo
V1RGOjpCaXRWZWN0b3I6Ok91dE9mTGluZUJpdHM6OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVsbCB2
ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBuZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVjay4K
KworICAgICAgICAqIHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oOgorICAgICAgICAoV1RGOjpC
dW1wUG9pbnRlclBvb2w6OmNyZWF0ZSk6IFN0YW5kYXJkaXplZCBzcGFjaW5nIHRvIG1ha2UgZ3Jl
cCBlYXNpZXIuCisKKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKFdURjo6
Qnl0ZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHd0Zi9EZXF1ZS5oOgorICAgICAgICAoV1RG
Ojo6OmFwcGVuZCk6CisgICAgICAgIChXVEY6Ojo6cHJlcGVuZCk6IFVzZSBOb3ROdWxsLCBhcyBh
Ym92ZS4KKworICAgICAgICAqIHd0Zi9GYXN0QWxsb2NCYXNlLmg6IEFkZGVkIGEgcGxhY2VtZW50
IG5ldywgc2luY2UgdGhpcyBjbGFzcyB3b3VsZCBvdGhlcndpc2UKKyAgICAgICAgaGlkZSB0aGUg
bmFtZSBvZiB0aGUgZ2xvYmFsIHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgKFdURjo6ZmFzdE5l
dyk6IFN0YW5kYXJkaXplZCBzcGFjaW5nLiBNb3N0IG9mIHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBu
ZWVkCisgICAgICAgIE5vdE51bGwsIHNpbmNlIHRoZXkgY2hlY2sgZm9yIE5VTEwsIGFuZCB0aGUg
b3B0aW1pemVyIGNhbiBzZWUgdGhhdC4KKworICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAg
ICAgICAgKiB3dGYvSGFzaFRyYWl0cy5oOgorICAgICAgICAoV1RGOjpTaW1wbGVDbGFzc0hhc2hU
cmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0
b3IuY3BwOgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9yOjphbGxvY0ZyZWVTcGFjZU5vZGUp
OiBOb3ROdWxsLCBhcyBhYm92ZS4KKworICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAg
ICAgICAgKHRocm93KTogVGhpcyBpcyBvdXIgTm90TnVsbCBwbGFjZW1lbnQgbmV3LiBEZWNsYXJp
bmcgdGhhdCB3ZSB0aHJvdyBpcworICAgICAgICB0aGUgQysrIHdheSB0byBzYXkgdGhhdCBvcGVy
YXRvciBuZXcgd2lsbCBub3QgcmV0dXJuIE5VTEwuCisKKyAgICAgICAgKiB3dGYvVGhyZWFkU3Bl
Y2lmaWMuaDoKKyAgICAgICAgKFdURjo6VCk6CisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAg
ICAgICAoV1RGOjo6OmFwcGVuZCk6CisgICAgICAgIChXVEY6Ojo6dHJ5QXBwZW5kKToKKyAgICAg
ICAgKFdURjo6Ojp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAoV1RGOjo6Omluc2VydCk6Cisg
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6cmVhbGxvY2F0ZSk6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNw
cDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppbml0KTogVXNlIE5vdE51bGwsIGFzIGFi
b3ZlLgorCisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpZYXJyOjpJbnRlcnByZXRlcjo6YWxsb2NEaXNqdW5jdGlvbkNvbnRleHQpOgorICAgICAgICAo
SlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6UGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OlBh
cmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJw
cmV0ZXI6OmFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQpOiBTdGFuZGFyZGl6ZWQK
KyAgICAgICAgc3BhY2luZyBmb3IgZWFzeSBncmVwLgorCiAyMDExLTEyLTE1ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAocjEwMjg2
Nik6IE5hdmlnYXRpbmcgYXdheSBmcm9tIG9yIGNsb3NpbmcgYSBwYWdlIHdpdGggYSBwbHVnaW4g
Y3Jhc2hlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUy
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3Ry
aW5nPiYgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9i
amVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICBHbG9iYWxPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5o
ZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
R2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhl
YXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVudHMpOworICAg
ICAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9i
YWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVu
dHMpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0NsYXNzUmVmIGNsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2Fs
bGJhY2spIAogICAgIHsKLSAgICAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NS
ZWYsIGNhbGxiYWNrKTsKKyAgICAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgY2xhc3NSZWYsIGNhbGxiYWNrKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdCwgY2xhc3NSZWYpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tG
dW5jdGlvbi5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgICB7Ci0gICAg
ICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Nh
bGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjayk7CisgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5o
ZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAg
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwog
ICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksMTAgKzExOSw2IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFyZW50
IHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIEpTQ2xhc3NSZWYsIHZvaWQqIGRhdGEpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QoSlNHbG9i
YWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7Ci0gICAgLy8gV2UnZCBsaWtlIHRvIHVz
ZSB0aGUgcGxhY2VtZW50IHZlcnNpb24gb2Ygb3BlcmF0b3IgbmV3IGRlZmluZWQgaW4gSlNDZWxs
LCBidXQgCi0gICAgLy8gd2UgY2FuJ3QgYmVjYXVzZSBQYXJlbnQgaXMgYSB0ZW1wbGF0ZSBhcmd1
bWVudCwgc28gd2UganVzdCBkdXBsaWNhdGUgdGhlIHNhbWUgCi0gICAgLy8gZnVuY3Rpb25hbGl0
eSBoZXJlLgotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHB0cikgeyByZXR1
cm4gcHRyOyB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSopOwogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJik7CkBAIC0xMzMsMTMgKzEyOSwxMyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0NsYXNzUmVmIGNsYXNzUmVmLCB2b2lkKiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChnbG9iYWxPYmplY3QsICFzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpIHx8IHN0cnVjdHVy
ZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgSlNDYWxsYmFja09i
amVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0
PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGNsYXNz
UmVmLCBkYXRhKTsKKyAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PigqZXhlYy0+aGVhcCgp
KSkgSlNDYWxsYmFja09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGNsYXNzUmVmLCBkYXRhKTsKICAg
ICAgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMpOwogICAgICAgICByZXR1
cm4gY2FsbGJhY2tPYmplY3Q7CiAgICAgfQogICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0KiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NsYXNzUmVmIGNsYXNzUmVmLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTQ2FsbGJhY2tPYmplY3QqIGNhbGxi
YWNrT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3RydWN0dXJl
KTsKKyAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0Nh
bGxiYWNrT2JqZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOwogICAgICAgICBj
YWxsYmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgIHJldHVy
biBjYWxsYmFja09iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDI4MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIERlYnVnZ2VyQWN0aXZhdGlvbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgRGVidWdnZXJBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3RpdmF0aW9u
PihnbG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSk7CisgICAg
ICAgICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxEZWJ1Z2dlckFjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIERlYnVnZ2Vy
QWN0aXZhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGFjdGl2YXRpb24tPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEsIG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gYWN0aXZhdGlv
bjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVh
cC5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hh
bmRsZUhlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSGFuZGxl
SGVhcDo6Z3JvdygpCiAgICAgTm9kZSogYmxvY2sgPSBtX2Jsb2NrU3RhY2suZ3JvdygpOwogICAg
IGZvciAoaW50IGkgPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGggLSAxOyBpID49IDA7IC0taSkg
ewogICAgICAgICBOb2RlKiBub2RlID0gJmJsb2NrW2ldOwotICAgICAgICBuZXcgKG5vZGUpIE5v
ZGUodGhpcyk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgbm9kZSkgTm9kZSh0aGlzKTsKICAgICAg
ICAgbV9mcmVlTGlzdC5wdXNoKG5vZGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IYW5kbGVIZWFwLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1
OCw3IEBAIGlubGluZSBIYW5kbGVTbG90IEhhbmRsZUhlYXA6OmFsbG9jYXRlKCkKICAgICAgICAg
Z3JvdygpOwogCiAgICAgTm9kZSogbm9kZSA9IG1fZnJlZUxpc3QucG9wKCk7Ci0gICAgbmV3IChu
b2RlKSBOb2RlKHRoaXMpOworICAgIG5ldyAoTm90TnVsbCwgbm9kZSkgTm9kZSh0aGlzKTsKICAg
ICBtX2ltbWVkaWF0ZUxpc3QucHVzaChub2RlKTsKICAgICByZXR1cm4gdG9IYW5kbGUobm9kZSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxMiBAQCBNYXJrZWRCbG9jayogTWFy
a2VkQmxvY2s6OmNyZWF0ZShIZWFwKiBoCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9j
YXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgYmxvY2tT
aXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgaWYgKCFzdGF0aWNfY2FzdDxi
b29sPihhbGxvY2F0aW9uKSkKICAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gbmV3IChhbGxv
Y2F0aW9uLmJhc2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgaGVhcCwgY2VsbFNpemUpOwor
ICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGFsbG9jYXRpb24uYmFzZSgpKSBNYXJrZWRCbG9jayhh
bGxvY2F0aW9uLCBoZWFwLCBjZWxsU2l6ZSk7CiB9CiAKIE1hcmtlZEJsb2NrKiBNYXJrZWRCbG9j
azo6cmVjeWNsZShNYXJrZWRCbG9jayogYmxvY2ssIHNpemVfdCBjZWxsU2l6ZSkKIHsKLSAgICBy
ZXR1cm4gbmV3IChibG9jaykgTWFya2VkQmxvY2soYmxvY2stPm1fYWxsb2NhdGlvbiwgYmxvY2st
Pm1faGVhcCwgY2VsbFNpemUpOworICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGJsb2NrKSBNYXJr
ZWRCbG9jayhibG9jay0+bV9hbGxvY2F0aW9uLCBibG9jay0+bV9oZWFwLCBjZWxsU2l6ZSk7CiB9
CiAKIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koTWFya2VkQmxvY2sqIGJsb2NrKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY2xlYXIoKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3JlZi5+Q29kZVJlZigpOwotICAgICAgICAgICAgbmV3ICgmbV9yZWYp
IENvZGVSZWYoKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fcmVmKSBDb2RlUmVmKCk7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSGFzaFRyYWl0czxKU0M6OkNhbGxJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEpT
Qzo6Q2FsbElkZW50aWZpZXI+IHsKICAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKEpTQzo6Q2FsbElkZW50aWZpZXImIHNsb3QpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG5ldyAoJnNsb3QpIEpTQzo6Q2FsbElkZW50aWZpZXIoSlNDOjpVU3RyaW5nKCksIEpTQzo6VVN0
cmluZygpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgICAgICAg
ICAgbmV3IChOb3ROdWxsLCAmc2xvdCkgSlNDOjpDYWxsSWRlbnRpZmllcihKU0M6OlVTdHJpbmco
KSwgSlNDOjpVU3RyaW5nKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSlND
OjpDYWxsSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQXJndW1lbnRzKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwor
ICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwog
ICAgICAgICAgICAgYXJndW1lbnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUpOwogICAgICAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcnJheUNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEFycmF5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5Q29u
c3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGFycmF5UHJvdG90eXBlKTsKICAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBBcnJh
eVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFy
cmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxBcnJheVByb3RvdHlw
ZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgIEFycmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBcnJheVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90
eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQm9vbGVhbkNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblBy
b3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8Qm9vbGVhbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhbkNv
bnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBib29sZWFuUHJvdG90eXBlKTsKICAgICAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBCb29s
ZWFuT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgQm9vbGVhbk9iamVjdCogYm9vbGVhbiA9
IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5PYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEJvb2xl
YW5PYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEJvb2xlYW5PYmpl
Y3QqIGJvb2xlYW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCb29sZWFuT2JqZWN0Pihn
bG9iYWxEYXRhLmhlYXApKSBCb29sZWFuT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBib29sZWFuLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIHJldHVybiBib29sZWFuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCShyZXZpc2lvbiAxMDI4MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxC
b29sZWFuUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhblByb3RvdHlwZShleGVjLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgQm9vbGVhblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgRGF0ZUNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlw
ZSkKICAgICAgICAgewotICAgICAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIERhdGVD
b25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBEYXRlQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUNv
bnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVj
LCBkYXRlUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUlu
c3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBkYXRlKTsKICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBEYXRlSW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBEYXRlSW5zdGFu
Y2UqIGluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVh
cCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBEYXRlSW5z
dGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNl
PigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBE
YXRlUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAg
RGF0ZVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZVByb3RvdHlw
ZT4oKmV4ZWMtPmhlYXAoKSkpIERhdGVQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIERhdGVQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPERhdGVQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBEYXRlUHJvdG90eXBlKGV4ZWMsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOworICAgICAgICAgICAgU3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CiAgICAgICAgICAg
ICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9i
YWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBF
cnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVycm9y
UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBFcnJvckNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIEVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0b3Io
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKGV4ZWMsIGVycm9yUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCAr
MzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2Uq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBFcnJvckluc3Rh
bmNlKiBpbnN0YW5jZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KGdsb2JhbERh
dGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIG1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICAgICAgRXJyb3JJ
bnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhl
Yy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICAgICAgRXJyb3JJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5j
ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgVVN0cmluZygiIiwgMCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0
ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3RvdHlwZShleGVj
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkg
RXJyb3JQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW50ZXJydXB0ZWRFeGVjdXRp
b25FcnJvciogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7Ci0gICAgICAg
IEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9yID0gbmV3IChhbGxvY2F0ZUNlbGw8SW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgSW50ZXJydXB0ZWRFeGVj
dXRpb25FcnJvcihnbG9iYWxEYXRhKTsKKyAgICAgICAgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
ciogZXJyb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yPihnbG9iYWxEYXRhLmhlYXApKSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKGdsb2Jh
bERhdGEpOwogICAgICAgICBlcnJvci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAg
ICAgIHJldHVybiBlcnJvcjsKICAgICB9CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgewotICAgICAgICBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9y
ID0gbmV3IChhbGxvY2F0ZUNlbGw8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPihnbG9iYWxEYXRh
LmhlYXApKSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7CisgICAgICAgIFRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvciogZXJyb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+KGdsb2JhbERhdGEuaGVhcCkpIFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsKICAgICAgICAgZXJyb3ItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTAyODA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODQsMTAgKzE4NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFT
U0VSVChnbG9iYWxEYXRhLmNhblVzZUpJVCgpKTsKICAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGU7CiAgICAgICAgICAgICBpZiAoIWNhbGxUaHVuaykgewotICAgICAgICAg
ICAgICAgIGV4ZWN1dGFibGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihn
bG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBj
b25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKICAgICAgICAgICAg
ICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBKSVRDb2RlKCksIEpJ
VENvZGUoKSwgaW50cmluc2ljKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZXhlY3V0YWJsZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2Jh
bERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0
cnVjdG9yKTsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0
YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5j
dGlvbihjYWxsVGh1bmspLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3RydWN0VGh1bmspLCBp
bnRyaW5zaWMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFk
ZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpOwotICAgICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVh
cCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsK
KyAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVF
eGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAg
ICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGds
b2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIoZXhlY3V0YWJsZSwgJmZpbmFsaXplKTsKICAgICAg
ICAgICAgIHJldHVybiBleGVjdXRhYmxlOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KSAK
ICAgICAgICAgewotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRh
YmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgRXZhbEV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhl
Y3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJ
blN0cmljdENvbnRleHQpOwogICAgICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LmFkZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwogICAgICAgICAgICAgcmV0dXJu
IGV4ZWN1dGFibGU7CkBAIC0zODUsNyArMzg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIFByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1dGFibGU+
KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgICAg
ICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxQcm9ncmFtRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIFByb2dyYW1FeGVjdXRh
YmxlKGV4ZWMsIHNvdXJjZSk7CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhl
YXAuYWRkRmluYWxpemVyKGV4ZWN1dGFibGUsICZmaW5hbGl6ZSk7CiAgICAgICAgICAgICByZXR1
cm4gZXhlY3V0YWJsZTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9y
Y2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewot
ICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25FeGVjdXRh
YmxlKGV4ZWMsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBp
c0luU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KCpl
eGVjLT5oZWFwKCkpKSBGdW5jdGlvbkV4ZWN1dGFibGUoZXhlYywgbmFtZSwgc291cmNlLCBmb3Jj
ZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAg
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CiAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVh
cC5hZGRGaW5hbGl6ZXIoZXhlY3V0YWJsZSwgJmZpbmFsaXplKTsKICAgICAgICAgICAgIHJldHVy
biBleGVjdXRhYmxlOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIEZ1bmN0
aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rp
b25FeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5T
dHJpY3RDb250ZXh0KTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEsIG5hbWUsIGZpcnN0TGluZSwgbGFzdExpbmUpOwogICAgICAgICAgICAgZ2xvYmFs
RGF0YS5oZWFwLmFkZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwogICAgICAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvblByb3Rv
dHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEZ1bmN0aW9u
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0cnVjdG9yPigqZXhl
Yy0+aGVhcCgpKSkgRnVuY3Rpb25Db25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHBy
b3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVh
cCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5
cGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbihleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gbmV3IChhbGxvY2F0ZUNlbGw8R2V0
dGVyU2V0dGVyPigqZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpOworICAgICAgICAg
ICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxHZXR0ZXJTZXR0ZXI+KCpleGVjLT5oZWFwKCkpKSBHZXR0ZXJTZXR0ZXIoZXhlYyk7CiAgICAg
ICAgICAgICBnZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CiAgICAgICAgICAgICByZXR1cm4gZ2V0dGVyU2V0dGVyOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHJl
dmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFs
dWVXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSlNBUElWYWx1ZVdyYXBwZXIqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpIAogICAgICAgICB7Ci0gICAgICAgICAgICBK
U0FQSVZhbHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQVBJVmFsdWVX
cmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIoZXhlYyk7CisgICAgICAg
ICAgICBKU0FQSVZhbHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQVBJVmFsdWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIo
ZXhlYyk7CiAgICAgICAgICAgICB3cmFwcGVyLT5maW5pc2hDcmVhdGlvbihleGVjLCB2YWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBKU0FjdGl2YXRpb24qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxK
U0FjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIEpTQWN0aXZhdGlvbihjYWxsRnJhbWUsIGZ1
bmNFeGVjKTsKKyAgICAgICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBY3Rp
dmF0aW9uKGNhbGxGcmFtZSwgZnVuY0V4ZWMpOwogICAgICAgICAgICAgYWN0aXZhdGlvbi0+Zmlu
aXNoQ3JlYXRpb24oY2FsbEZyYW1lKTsKICAgICAgICAgICAgIHJldHVybiBhY3RpdmF0aW9uOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI4ICs3NiwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJh
eShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0K
IAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsIEFycmF5Q3Jl
YXRpb25Nb2RlIGNyZWF0ZU1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJh
eShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSwgaW5pdGlhbExlbmd0aCwgY3JlYXRlTW9kZSk7CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3Jl
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkq
IGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNB
cnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBK
U0FycmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSwgaW5pdGlhbFZhbHVlcyk7CiAgICAgICAgICAgICByZXR1cm4g
YXJyYXk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEpTVmFsdWUq
IHZhbHVlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KGdsb2JhbERhdGEuaGVhcCkpIEpT
QXJyYXkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGFycmF5LT5maW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhLCB2YWx1ZXMsIGxlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm4g
YXJyYXk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
CiAgICAgYm9vbCBjYW5Db25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVO
b25lOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERh
dGEoKS5nZXRIb3N0RnVuY3Rpb24oYm91bmRGdW5jdGlvbkNhbGwsIGNhbkNvbnN0cnVjdCA/IGJv
dW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7Ci0g
ICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQm91bmRG
dW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQm91bmRGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+Ym91bmRGdW5jdGlvblN0cnVjdHVyZSgpLCB0YXJnZXRGdW5jdGlv
biwgYm91bmRUaGlzLCBib3VuZEFyZ3MpOworICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0JvdW5kRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmJv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhpcywgYm91bmRB
cmdzKTsKIAogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBs
ZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBKU0J5dGVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKICAgICAgICAgewotICAgICAgICAgICAgSlNCeXRl
QXJyYXkqIGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNCeXRlQXJyYXk+KCpleGVjLT5oZWFw
KCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UpOworICAgICAgICAgICAg
SlNCeXRlQXJyYXkqIGFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCeXRlQXJy
YXk+KCpleGVjLT5oZWFwKCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUsIHN0b3JhZ2Up
OwogICAgICAgICAgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKGV4ZWMpOwogICAgICAgICAgICAg
cmV0dXJuIGFycmF5OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdI
YWNrIH07CiAgICAgICAgIGV4cGxpY2l0IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrVHlwZSkgeyB9
CiAKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHBsYWNlbWVudE5ld0Rlc3RpbmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlv
bjsgfSAvLyBVc2VkIGZvciBpbml0aWFsaXphdGlvbiBhZnRlciBHQyBhbGxvY2F0aW9uLgotCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOyAvLyBJbnZva2VkIGJ5IEdDIGZpbmFsaXphdGlv
bi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBib29sIEpTRnVuY3Rp
b246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24obmF0
aXZlRnVuY3Rpb24sIG5hdGl2ZUNvbnN0cnVjdG9yKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0
aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
KTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBkbyB0
aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBk
byBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4
ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwpAQCAtNjgsNyAr
NjgsNyBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlCiAKIEpTRnVu
Y3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUpCiB7Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUo
KSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgZnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKGV4ZWMsIG5hdGl2ZUV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAg
cmV0dXJuIGZ1bmN0aW9uOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0
aW9uKGV4ZWMsIGV4ZWN1dGFibGUsIHNjb3BlQ2hhaW4pOworICAgICAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhl
Yy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBleGVjdXRhYmxlLCBzY29wZUNoYWluKTsKICAg
ICAgICAgICAgIEFTU0VSVChmdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsK
ICAgICAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBz
Y29wZUNoYWluKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTAy
ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbFRoaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbFRoaXMuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEpTR2xvYmFsVGhpcyogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU0dsb2Jh
bFRoaXMqIGdsb2JhbFRoaXMgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbFRoaXM+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTR2xvYmFsVGhpcyhnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAg
ICBKU0dsb2JhbFRoaXMqIGdsb2JhbFRoaXMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0dsb2JhbFRoaXM+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsVGhpcyhnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUpOwogICAgICAgICBnbG9iYWxUaGlzLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRh
KTsKICAgICAgICAgcmV0dXJuIGdsb2JhbFRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBKU05vdEFuT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBKU05vdEFuT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU05vdEFu
T2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNOb3RBbk9iamVjdChleGVjKTsKKyAgICAgICAgICAg
IEpTTm90QW5PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTm90
QW5PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU05vdEFuT2JqZWN0KGV4ZWMpOwogICAgICAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU09OT2JqZWN0KiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgSlNPTk9iamVjdCogb2JqZWN0
ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTT05PYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNPTk9iamVjdCogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAo
KSkpIEpTT05PYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAKICAgICAgICAgc3RhdGlj
IEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9
IG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0ZpbmFs
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpTRmlu
YWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5h
bE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgZmluYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmluYWxPYmplY3Q7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3Bl
cnR5TmFtZUl0CiAgICAgICAgICYmICFvLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSAmJiAhby0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcygpKQogICAgICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgCi0gICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHBy
b3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7CisgICAgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90
cyk7CiAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJv
cGVydHlOYW1lcy5kYXRhKCkpOwogCiAgICAgaWYgKG8tPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAgICAg
ICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1D
YWNoZWFibGVTbG90KQogICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKiBpdGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFt
ZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CisgICAgICAgICAgICBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CiAgICAgICAgICAg
ICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsK
ICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkocmV2
aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBK
U0N7CiAKICAgICAgICAgc3RhdGljIEpTU3RhdGljU2NvcGVPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIHNjb3BlT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdGF0aWNTY29wZU9iamVj
dD4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2NvcGVPYmplY3QoZXhlYyk7CisgICAgICAgICAg
ICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBzY29wZU9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTU3RhdGljU2NvcGVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU1N0YXRpY1Njb3Bl
T2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgc2NvcGVPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIHJldHVybiBz
Y29wZU9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcg
QEAgVVN0cmluZyBKU1N0cmluZzo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleAogCiBpbmxpbmUgU3Ry
aW5nT2JqZWN0KiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAgU3RyaW5nT2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnN0cmlu
Z09iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09i
amVjdChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0
dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJpbmcpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZU51
bGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU1N0
cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEu
aGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0
cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAg
ICAgICB9CkBAIC0xNzIsMTkgKzE3MiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmFsdWUtPmxlbmd0
aCgpOwogICAgICAgICAgICAgc2l6ZV90IGNvc3QgPSB2YWx1ZS0+Y29zdCgpOwotICAgICAgICAg
ICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9i
YWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICBK
U1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+
KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKTsKICAgICAgICAg
ICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbGVuZ3RoLCBjb3N0KTsK
ICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogczEs
IEpTU3RyaW5nKiBzMikKICAgICAgICAgewotICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmlu
ZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmlu
ZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmco
Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIHMxLCBzMik7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKICAgICAgICAgewot
ICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3Ry
aW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHMxLCBzMiwgczMpOwogICAgICAg
ICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQpAQCAtMTkyLDcgKzE5Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAgICAgICAgIEpT
U3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUpOworICAgICAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9i
YWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CiAgICAgICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGxlbmd0aCk7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBNYXRoT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgTWF0aE9i
amVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBNYXRoT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVh
cCgpKSkgTWF0aE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBy
ZXR1cm4gb2JqZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZVN0cnVjdHVyZSwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAgICAgICAg
ICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5h
dGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
bmFtZSwgY29uc3RydWN0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3Rvciog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNv
bnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE51bWJlckNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJl
ckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyQ29uc3RydWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KGV4ZWMsIG51bWJlclByb3RvdHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ck9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAg
ICAgICAgICAgTnVtYmVyT2JqZWN0KiBudW1iZXIgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJP
YmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgTnVtYmVyT2JqZWN0KiBudW1iZXIgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbnVtYmVyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIHJldHVybiBudW1iZXI7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBzdGF0aWMgTnVtYmVyUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICAgICAgewotICAgICAgICAgICAgTnVtYmVyUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJQ
cm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE51bWJlclByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyUHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDEw
MjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0
UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9iamVj
dENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPE9iamVjdENvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBPYmplY3RDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgb2JqZWN0UHJvdG90eXBlKTsK
ICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9u
IDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBPYmplY3RQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShl
eGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFw
KCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTcsNyArMjU3LDcgQEAgUmVnRXhwOjp+UmVnRXhwKCkKIAogUmVnRXhwKiBSZWdFeHA6OmNyZWF0
ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgUmVnRXhwKiByZWdFeHAg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHA+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cChnbG9i
YWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CisgICAgUmVnRXhwKiByZWdFeHAgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHA+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cChn
bG9iYWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CiAgICAgcmVnRXhwLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICByZXR1cm4gcmVnRXhwOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lv
biAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
Z0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBS
ZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cENvbnN0cnVjdG9yKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgUmVnRXhwQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHJlZ0V4cFByb3RvdHlw
ZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgUmVnRXhwTWF0Y2hlc0FycmF5KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGN0b3JQcml2YXRlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHJlZ0V4cCA9IG5ldyAoYWxs
b2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE1hdGNo
ZXNBcnJheShleGVjKTsKKyAgICAgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogcmVnRXhwID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwTWF0Y2hlc0FycmF5PigqZXhlYy0+aGVh
cCgpKSkgUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMpOwogICAgICAgICAgICAgcmVnRXhwLT5maW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGN0b3JQcml2YXRlKTsKICAgICAgICAgICAg
IHJldHVybiByZWdFeHA7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTQgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmpl
Y3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAg
ICAgICAgUmVnRXhwT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IHJlZ0V4cCk7CisgICAgICAgICAgICBSZWdFeHBPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFJlZ0V4cE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVj
dChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwKTsKICAgICAgICAgICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAg
ICAgICAgUmVnRXhwT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIFJlZ0V4cE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBSZWdFeHBP
YmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CiAgICAgICAgICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlw
ZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSZWdFeHBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4
cFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cFByb3RvdHlwZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPigqZXhlYy0+
aGVhcCgpKSkgUmVnRXhwUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHAp
OwogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSwxMyArNTksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFNj
b3BlQ2hhaW5Ob2RlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogbmV4
dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKICAgICAgICAgewotICAg
ICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5vZGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTY29wZUNo
YWluTm9kZT4oKmV4ZWMtPmhlYXAoKSkpIFNjb3BlQ2hhaW5Ob2RlKG5leHQsIG9iamVjdCwgZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICAgIFNjb3BlQ2hh
aW5Ob2RlKiBub2RlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+
KCpleGVjLT5oZWFwKCkpKSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CiAgICAgICAgICAgICBub2RlLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFNjb3BlQ2hhaW5Ob2RlKiBjcmVhdGUoU2NvcGVD
aGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gbmV3IChhbGxvY2F0
ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhlYXApKSBTY29wZUNoYWluTm9kZShu
ZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CisgICAg
ICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFNjb3BlQ2hhaW5Ob2RlPihnbG9iYWxEYXRhLT5oZWFwKSkgU2NvcGVDaGFpbk5vZGUobmV4dCwg
b2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOwogICAgICAgICAg
ICAgbm9kZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEw
MjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFN0cmljdEV2YWxBY3RpdmF0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHsK
LSAgICAgICAgU3RyaWN0RXZhbEFjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3Rp
dmF0aW9uKGV4ZWMpOworICAgICAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmljdEV2YWxBY3RpdmF0aW9uPigqZXhlYy0+
aGVhcCgpKSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oZXhlYyk7CiAgICAgICAgIGFjdGl2YXRpb24t
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIHJldHVybiBhY3Rp
dmF0aW9uOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nQ29u
c3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90
b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgU3RyaW5nQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgU3RyaW5nQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3Rv
cihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24oZXhlYywgc3RyaW5nUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyAr
MzUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKLSAgICAg
ICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKTsgIAorICAgICAgICAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOyAgCiAgICAgICAgICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RyaW5nKTsKICAgICAgICAgICAg
IHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBz
dHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3
IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFN0cmluZ09iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhl
Yy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsK
ICAgICAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlz
aW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSlNTdHJpbmcqIGVtcHR5ID0ganNFbXB0eVN0cmluZyhleGVjKTsK
LSAgICAgICAgICAgIFN0cmluZ1Byb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNl
bGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMs
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IFN0cmluZ1Byb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcHJvdG90eXBl
LT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGVtcHR5KTsKICAgICAgICAgICAg
IHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8p
OwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxT
dHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgdHlwZUluZm8sIGNsYXNzSW5mbyk7CisgICAgICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4o
Z2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCB0eXBlSW5mbywgY2xhc3NJbmZvKTsKICAgICAgICAgICAgIHN0cnVjdHVyZS0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlOwog
ICAgICAgICB9CkBAIC0xODgsNyArMTg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1
Y3R1cmUpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhKTsK
KyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSk7
CiAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIENyZWF0
aW5nRWFybHlDZWxsKTsKICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CiAgICAgICAgIH0K
QEAgLTIwMyw3ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLnN0cnVj
dHVyZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5l
dyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFw
KSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBuZXdTdHJ1
Y3R1cmUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIG5l
d1N0cnVjdHVyZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVD
aGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKQog
ICAgICAgICB7IAotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWlu
KGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCkpOwor
ICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGds
b2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCkpOwogICAg
ICAgICAgICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGhlYWQpOwogICAgICAg
ICAgICAgcmV0dXJuIGNoYWluOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0JpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9CaXRWZWN0b3IuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0JpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
Qml0VmVjdG9yOjpPdXRPZkxpbmVCaXRzKiBCaXRWZWN0b3I6Ok91dAogewogICAgIG51bUJpdHMg
PSAobnVtQml0cyArIGJpdHNJblBvaW50ZXIoKSAtIDEpICYgfihiaXRzSW5Qb2ludGVyKCkgLSAx
KTsKICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihPdXRPZkxpbmVCaXRzKSArIHNpemVvZih1aW50
cHRyX3QpICogKG51bUJpdHMgLyBiaXRzSW5Qb2ludGVyKCkpOwotICAgIE91dE9mTGluZUJpdHMq
IHJlc3VsdCA9IG5ldyAoZmFzdE1hbGxvYyhzaXplKSkgT3V0T2ZMaW5lQml0cyhudW1CaXRzKTsK
KyAgICBPdXRPZkxpbmVCaXRzKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Moc2l6
ZSkpIE91dE9mTGluZUJpdHMobnVtQml0cyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3Iu
aAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9p
bnRlckFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb246
OmFsbG9jYXRlKHBvb2xTaXplKTsKICAgICAgICAgaWYgKCEhYWxsb2NhdGlvbikKLSAgICAgICAg
ICAgIHJldHVybiBuZXcoYWxsb2NhdGlvbikgQnVtcFBvaW50ZXJQb29sKGFsbG9jYXRpb24pOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGlvbikgQnVtcFBvaW50ZXJQb29sKGFsbG9j
YXRpb24pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0J5dGVBcnJheS5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gQnl0ZUFycmF5OjpjcmVhdGUoCiB7CiAgICAgdW5z
aWduZWQgY2hhciogYnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXJbc2l6ZSArIE9CSkVDVF9PRkZT
RVRPRihCeXRlQXJyYXksIG1fZGF0YSldOwogICAgIEFTU0VSVCgocmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KGJ1ZmZlcikgJiAzKSA9PSAwKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IChidWZm
ZXIpIEJ5dGVBcnJheShzaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoTm90TnVsbCwg
YnVmZmVyKSBCeXRlQXJyYXkoc2l6ZSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0RlcXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9EZXF1ZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0RlcXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICB7CiAgICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAgICAgZXhwYW5kQ2FwYWNp
dHlJZk5lZWRlZCgpOwotICAgICAgICBuZXcgKCZtX2J1ZmZlci5idWZmZXIoKVttX2VuZF0pIFQo
dmFsdWUpOworICAgICAgICBuZXcgKE5vdE51bGwsICZtX2J1ZmZlci5idWZmZXIoKVttX2VuZF0p
IFQodmFsdWUpOwogICAgICAgICBpZiAobV9lbmQgPT0gbV9idWZmZXIuY2FwYWNpdHkoKSAtIDEp
CiAgICAgICAgICAgICBtX2VuZCA9IDA7CiAgICAgICAgIGVsc2UKQEAgLTQ3MSw3ICs0NzEsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIG1fc3RhcnQgPSBtX2J1ZmZlci5jYXBhY2l0
eSgpIC0gMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgLS1tX3N0YXJ0OwotICAgICAgICBu
ZXcgKCZtX2J1ZmZlci5idWZmZXIoKVttX3N0YXJ0XSkgVCh2YWx1ZSk7CisgICAgICAgIG5ldyAo
Tm90TnVsbCwgJm1fYnVmZmVyLmJ1ZmZlcigpW21fc3RhcnRdKSBUKHZhbHVlKTsKICAgICAgICAg
Y2hlY2tWYWxpZGl0eSgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0QWxsb2NCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0QWxsb2NCYXNlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBA
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUg
IkZhc3RNYWxsb2MuaCIKKyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKICNpbmNsdWRlICJUeXBl
VHJhaXRzLmgiCiAKICNkZWZpbmUgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgXApAQCAtMTIyLDYg
KzEyMywxMSBAQCBwdWJsaWM6IFwKICAgICAgICAgIDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgXAog
ICAgICAgICAgOjpXVEY6OmZhc3RGcmVlKHApOyBcCiAgICAgfSBcCisgICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIHRocm93KHN0ZDo6YmFk
X2FsbG9jKSBcCisgICAgeyBcCisgICAgICAgIEFTU0VSVChsb2NhdGlvbik7IFwKKyAgICAgICAg
cmV0dXJuIGxvY2F0aW9uOyBcCisgICAgfSBcCiBwcml2YXRlOiBcCiB0eXBlZGVmIGludCBUaGlz
SXNIZXJlVG9Gb3JjZUFTZW1pY29sb25BZnRlclRoaXNNYWNybwogCkBAIC0xMzgsNyArMTQ0LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBmYXN0
TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7
Ci0gICAgICAgIHJldHVybiA6Om5ldyhwKSBUOworICAgICAgICByZXR1cm4gOjpuZXcgKHApIFQ7
CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzE+CkBAIC0x
NTAsNyArMTU2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAog
ICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NU
eXBlRmFzdE5ldyk7Ci0gICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEpOworICAgICAgICBy
ZXR1cm4gOjpuZXcgKHApIFQoYXJnMSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzI+CkBAIC0xNjIsNyArMTY4LDcgQEAgbmFt
ZXNwYWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBmYXN0TWFsbG9j
TWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7Ci0gICAg
ICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEsIGFyZzIpOworICAgICAgICByZXR1cm4gOjpuZXcg
KHApIFQoYXJnMSwgYXJnMik7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lIEFyZzM+CkBAIC0xNzQsNyArMTgw
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBm
YXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5l
dyk7Ci0gICAgICAgIHJldHVybiA6Om5ldyhwKSBUKGFyZzEsIGFyZzIsIGFyZzMpOworICAgICAg
ICByZXR1cm4gOjpuZXcgKHApIFQoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1l
IEFyZzMsIHR5cGVuYW1lIEFyZzQ+CkBAIC0xODYsNyArMTkyLDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0
ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7Ci0gICAgICAgIHJldHVybiA6
Om5ldyhwKSBUKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpOworICAgICAgICByZXR1cm4gOjpuZXcg
KHApIFQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCk7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lIEFyZzMsIHR5
cGVuYW1lIEFyZzQsIHR5cGVuYW1lIEFyZzU+CkBAIC0xOTgsNyArMjA0LDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBmYXN0TWFsbG9jTWF0Y2hW
YWxpZGF0ZU1hbGxvYyhwLCBJbnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ldyk7Ci0gICAgICAgIHJl
dHVybiA6Om5ldyhwKSBUKGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzUpOworICAgICAgICBy
ZXR1cm4gOjpuZXcgKHApIFQoYXJnMSwgYXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CiAgICAgfQog
CiAgICAgbmFtZXNwYWNlIEludGVybmFsIHsKQEAgLTI0NCw3ICsyNTAsNyBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgICAgICAgICBmYXN0TWFsbG9jTWF0Y2hWYWxpZGF0ZU1hbGxvYyhwLCBJ
bnRlcm5hbDo6QWxsb2NUeXBlRmFzdE5ld0FycmF5KTsKIAogICAgICAgICAgICAgICAgIGZvciAo
VCogcE9iamVjdCA9IHAsICpwT2JqZWN0RW5kID0gcE9iamVjdCArIGNvdW50OyBwT2JqZWN0ICE9
IHBPYmplY3RFbmQ7ICsrcE9iamVjdCkKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocE9iamVj
dCkgVDsKKyAgICAgICAgICAgICAgICAgICAgOjpuZXcgKHBPYmplY3QpIFQ7CiAKICAgICAgICAg
ICAgICAgICByZXR1cm4gcDsKICAgICAgICAgICAgIH0KQEAgLTI4Niw3ICsyOTIsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICAqYS5zaXplKysgPSBjb3VudDsKIAogICAgICAg
ICAgICAgICAgIGZvciAoVCogcFQgPSBhLnQsICpwVEVuZCA9IHBUICsgY291bnQ7IHBUICE9IHBU
RW5kOyArK3BUKQotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwVCkgVDsKKyAgICAgICAgICAg
ICAgICAgICAgOjpuZXcgKHBUKSBUOwogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGEudDsKICAg
ICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaAkocmV2
aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNjQxLDcgKzY0MSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIHRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPGZhbHNlPiB7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgVmFsdWU+IHN0YXRpYyB2b2lk
IGluaXRpYWxpemUoVmFsdWUmIGJ1Y2tldCkKICAgICAgICAgewotICAgICAgICAgICAgbmV3ICgm
YnVja2V0KSBWYWx1ZShUcmFpdHM6OmVtcHR5VmFsdWUoKSk7CisgICAgICAgICAgICBuZXcgKE5v
dE51bGwsICZidWNrZXQpIFZhbHVlKFRyYWl0czo6ZW1wdHlWYWx1ZSgpKTsKICAgICAgICAgfQog
ICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0cy5oCShyZXZp
c2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUcmFpdHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBXVEZfSGFzaFRyYWl0c19o
CiAKICNpbmNsdWRlICJIYXNoRnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiU3RkTGliRXh0cmFzLmgi
CiAjaW5jbHVkZSAiVHlwZVRyYWl0cy5oIgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8
bGltaXRzPgpAQCAtMTA1LDcgKzEwNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IFNpbXBsZUNsYXNzSGFzaFRyYWl0cyA6IEdlbmVyaWNIYXNo
VHJhaXRzPFQ+IHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9
IHRydWU7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShUJiBzbG90
KSB7IG5ldyAoJnNsb3QpIFQoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgICAgICBzdGF0
aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoVCYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZz
bG90KSBUKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNE
ZWxldGVkVmFsdWUoY29uc3QgVCYgdmFsdWUpIHsgcmV0dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7IH0KICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L01ldGFBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvTWV0YUFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5Nyw3ICsz
OTcsNyBAQCBNZXRhQWxsb2NhdG9yOjpGcmVlU3BhY2VOb2RlKiBNZXRhQWxsb2NhCiAjaWZuZGVm
IE5ERUJVRwogICAgIG1fbWFsbG9jQmFsYW5jZSsrOwogI2VuZGlmCi0gICAgcmV0dXJuIG5ldyAo
ZmFzdE1hbGxvYyhzaXplb2YoRnJlZVNwYWNlTm9kZSkpKSBGcmVlU3BhY2VOb2RlKDAsIDApOwor
ICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Moc2l6ZW9mKEZyZWVTcGFjZU5vZGUp
KSkgRnJlZVNwYWNlTm9kZSgwLCAwKTsKIH0KIAogdm9pZCBNZXRhQWxsb2NhdG9yOjpmcmVlRnJl
ZVNwYWNlTm9kZShGcmVlU3BhY2VOb2RlKiBub2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9TdGRMaWJFeHRyYXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1N0ZExpYkV4dHJhcy5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiAKICNpbmNsdWRlICJDaGVja2VkQXJpdGhtZXRpYy5oIgogI2luY2x1ZGUgIkFzc2VydGlv
bnMuaCIKKyNpbmNsdWRlIDxuZXc+CiAKIC8vIFVzZSB0aGVzZSB0byBkZWNsYXJlIGFuZCBkZWZp
bmUgYSBzdGF0aWMgbG9jYWwgdmFyaWFibGUgKHN0YXRpYyBUOykgc28gdGhhdAogLy8gIGl0IGlz
IGxlYWtlZCBzbyB0aGF0IGl0cyBkZXN0cnVjdG9ycyBhcmUgbm90IGNhbGxlZCBhdCBleGl0LiBV
c2luZyB0aGlzCkBAIC0yNzUsNiArMjc2LDE0IEBAIGlubGluZSBBcnJheUVsZW1lbnRUeXBlKiBn
ZW5lcmljQmluYXJ5U2UKIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKKy8vIFRoaXMgdmVyc2lvbiBv
ZiBwbGFjZW1lbnQgbmV3IG9taXRzIGEgMCBjaGVjay4KK2VudW0gTm90TnVsbFRhZyB7IE5vdE51
bGwgfTsKK2lubGluZSB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBOb3ROdWxsVGFnLCB2b2lk
KiBsb2NhdGlvbikgdGhyb3coc3RkOjpiYWRfYWxsb2MpCit7CisgICAgQVNTRVJUKGxvY2F0aW9u
KTsKKyAgICByZXR1cm4gbG9jYXRpb247Cit9CisKIHVzaW5nIFdURjo6YmluYXJ5U2VhcmNoOwog
dXNpbmcgV1RGOjpiaXR3aXNlX2Nhc3Q7CiB1c2luZyBXVEY6OnNhZmVDYXN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkocmV2aXNpb24gMTAyODA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9UaHJlYWRTcGVjaWZpYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNTMsNyArMjUzLDcgQEAgaW5saW5lIFRocmVhZFNwZWNpZmljPFQ+OjpvcGVy
YXRvciBUKigpCiAgICAgICAgIC8vIG5lZWRzIHRvIGFjY2VzcyB0aGUgdmFsdWUsIHRvIGF2b2lk
IHJlY3Vyc2lvbi4KICAgICAgICAgcHRyID0gc3RhdGljX2Nhc3Q8VCo+KGZhc3RaZXJvZWRNYWxs
b2Moc2l6ZW9mKFQpKSk7CiAgICAgICAgIHNldChwdHIpOwotICAgICAgICBuZXcgKHB0cikgVDsK
KyAgICAgICAgbmV3IChOb3ROdWxsLCBwdHIpIFQ7CiAgICAgfQogICAgIHJldHVybiBwdHI7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgJKHJldmlzaW9uIDEwMjgwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvVmVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDcgKzc0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyB2b2lkIGluaXRpYWxp
emUoVCogYmVnaW4sIFQqIGVuZCkgCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAoVCogY3Vy
ID0gYmVnaW47IGN1ciAhPSBlbmQ7ICsrY3VyKQotICAgICAgICAgICAgICAgIG5ldyAoY3VyKSBU
OworICAgICAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgY3VyKSBUOwogICAgICAgICB9CiAgICAg
fTsKIApAQCAtOTYsNyArOTYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIHZv
aWQgbW92ZShjb25zdCBUKiBzcmMsIGNvbnN0IFQqIHNyY0VuZCwgVCogZHN0KQogICAgICAgICB7
CiAgICAgICAgICAgICB3aGlsZSAoc3JjICE9IHNyY0VuZCkgewotICAgICAgICAgICAgICAgIG5l
dyAoZHN0KSBUKCpzcmMpOworICAgICAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgZHN0KSBUKCpz
cmMpOwogI2lmIENPTVBJTEVSKFNVTkNDKSAmJiBfX1NVTlBST19DQyA8PSAweDU5MAogICAgICAg
ICAgICAgICAgIGNvbnN0X2Nhc3Q8VCo+KHNyYyktPn5UKCk7IC8vIFdvcmsgYXJvdW5kIG9ic2N1
cmUgU3VuQ0MgMTIgY29tcGlsZXIgYnVnLgogI2Vsc2UKQEAgLTExNSw3ICsxMTUsNyBAQCBuYW1l
c3BhY2UgV1RGIHsKICAgICAgICAgICAgICAgICB3aGlsZSAoc3JjICE9IHNyY0VuZCkgewogICAg
ICAgICAgICAgICAgICAgICAtLXNyY0VuZDsKICAgICAgICAgICAgICAgICAgICAgLS1kc3RFbmQ7
Ci0gICAgICAgICAgICAgICAgICAgIG5ldyAoZHN0RW5kKSBUKCpzcmNFbmQpOworICAgICAgICAg
ICAgICAgICAgICBuZXcgKE5vdE51bGwsIGRzdEVuZCkgVCgqc3JjRW5kKTsKICAgICAgICAgICAg
ICAgICAgICAgc3JjRW5kLT5+VCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
QEAgLTE0NCw3ICsxNDQsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIHZvaWQg
dW5pbml0aWFsaXplZENvcHkoY29uc3QgVCogc3JjLCBjb25zdCBUKiBzcmNFbmQsIFQqIGRzdCkg
CiAgICAgICAgIHsKICAgICAgICAgICAgIHdoaWxlIChzcmMgIT0gc3JjRW5kKSB7Ci0gICAgICAg
ICAgICAgICAgbmV3IChkc3QpIFQoKnNyYyk7CisgICAgICAgICAgICAgICAgbmV3IChOb3ROdWxs
LCBkc3QpIFQoKnNyYyk7CiAgICAgICAgICAgICAgICAgKytkc3Q7CiAgICAgICAgICAgICAgICAg
KytzcmM7CiAgICAgICAgICAgICB9CkBAIC0xNjksNyArMTY5LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6ZWRGaWxsKFQqIGRzdCwgVCogZHN0RW5k
LCBjb25zdCBUJiB2YWwpIAogICAgICAgICB7CiAgICAgICAgICAgICB3aGlsZSAoZHN0ICE9IGRz
dEVuZCkgewotICAgICAgICAgICAgICAgIG5ldyAoZHN0KSBUKHZhbCk7CisgICAgICAgICAgICAg
ICAgbmV3IChOb3ROdWxsLCBkc3QpIFQodmFsKTsKICAgICAgICAgICAgICAgICArK2RzdDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTI3LDcgKzkyNyw3IEBAIG5hbWVzcGFjZSBXVEYg
ewogICAgICAgICAgICAgQ1JBU0goKTsKICAgICAgICAgVCogZGVzdCA9IGVuZCgpOwogICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGFTaXplOyArK2kpCi0gICAgICAgICAgICBuZXcg
KCZkZXN0W2ldKSBUKGRhdGFbaV0pOworICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmZGVzdFtp
XSkgVChkYXRhW2ldKTsKICAgICAgICAgbV9zaXplID0gbmV3U2l6ZTsKICAgICB9CiAKQEAgLTk0
NSw3ICs5NDUsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgVCogZGVzdCA9IGVuZCgpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGRhdGFTaXplOyArK2kpCi0gICAgICAgICAgICBuZXcgKCZkZXN0W2ldKSBUKGRhdGFbaV0pOwor
ICAgICAgICAgICAgbmV3IChOb3ROdWxsLCAmZGVzdFtpXSkgVChkYXRhW2ldKTsKICAgICAgICAg
bV9zaXplID0gbmV3U2l6ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtOTY3LDkg
Kzk2Nyw5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAvLyBvbmx5IGFzc3VtZSBpdCBpcyBh
IGJ1ZyB3aXRoIHRoZSBjb21waWxlci4gQ2FzdGluZyBpcyBhIGJhZCBzb2x1dGlvbiwKICAgICAg
ICAgLy8gaG93ZXZlciwgYmVjYXVzZSBpdCBzdWJ2ZXJ0cyBpbXBsaWNpdCBjb252ZXJzaW9ucywg
c28gYSBiZXR0ZXIgCiAgICAgICAgIC8vIG9uZSBpcyBuZWVkZWQuIAotICAgICAgICBuZXcgKGVu
ZCgpKSBUKHN0YXRpY19jYXN0PFQ+KCpwdHIpKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCBlbmQo
KSkgVChzdGF0aWNfY2FzdDxUPigqcHRyKSk7CiAjZWxzZQotICAgICAgICBuZXcgKGVuZCgpKSBU
KCpwdHIpOworICAgICAgICBuZXcgKE5vdE51bGwsIGVuZCgpKSBUKCpwdHIpOwogI2VuZGlmCiAg
ICAgICAgICsrbV9zaXplOwogICAgIH0KQEAgLTk4Miw3ICs5ODIsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICB7CiAgICAgICAgIEFTU0VSVChzaXplKCkgPCBjYXBhY2l0eSgpKTsKICAgICAgICAg
Y29uc3QgVSogcHRyID0gJnZhbDsKLSAgICAgICAgbmV3IChlbmQoKSkgVCgqcHRyKTsKKyAgICAg
ICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVCgqcHRyKTsKICAgICAgICAgKyttX3NpemU7CiAgICAg
fQogCkBAIC0xMDEwLDcgKzEwMTAsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgVCogc3Bv
dCA9IGJlZ2luKCkgKyBwb3NpdGlvbjsKICAgICAgICAgVHlwZU9wZXJhdGlvbnM6Om1vdmVPdmVy
bGFwcGluZyhzcG90LCBlbmQoKSwgc3BvdCArIGRhdGFTaXplKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3ICgmc3BvdFtpXSkg
VChkYXRhW2ldKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJnNwb3RbaV0pIFQoZGF0YVtp
XSk7CiAgICAgICAgIG1fc2l6ZSA9IG5ld1NpemU7CiAgICAgfQogICAgICAKQEAgLTEwMjYsNyAr
MTAyNiw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAgICAgIFQqIHNwb3QgPSBi
ZWdpbigpICsgcG9zaXRpb247CiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBp
bmcoc3BvdCwgZW5kKCksIHNwb3QgKyAxKTsKLSAgICAgICAgbmV3IChzcG90KSBUKCpkYXRhKTsK
KyAgICAgICAgbmV3IChOb3ROdWxsLCBzcG90KSBUKCpkYXRhKTsKICAgICAgICAgKyttX3NpemU7
CiAgICAgfQogICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWlj
U3RyaW5nSGFzaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9BdG9taWNTdHJpbmdIYXNoLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmdIYXNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgLy8gQXRvbWljU3RyaW5nSGFzaCBpcyB0
aGUgZGVmYXVsdCBoYXNoIGZvciBBdG9taWNTdHJpbmcKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBI
YXNoVHJhaXRzPFdURjo6QXRvbWljU3RyaW5nPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdURjo6QXRv
bWljU3RyaW5nPiB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8g
PSB0cnVlOwotICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV1RGOjpB
dG9taWNTdHJpbmcmIHNsb3QpIHsgbmV3ICgmc2xvdCkgV1RGOjpBdG9taWNTdHJpbmcoSGFzaFRh
YmxlRGVsZXRlZFZhbHVlKTsgfQorICAgICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVk
VmFsdWUoV1RGOjpBdG9taWNTdHJpbmcmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgV1RG
OjpBdG9taWNTdHJpbmcoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQogICAgICAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYgc2xvdCkgeyByZXR1
cm4gc2xvdC5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiAgICAgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkocmV2aXNpb24g
MTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
U3RyaW5nSW1wbDo6Y3JlYXQKICAgICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxT
dHJpbmdJbXBsKj4oZmFzdE1hbGxvYyhzaXplKSk7CiAKICAgICBkYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxMQ2hhcio+KHN0cmluZyArIDEpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgKHN0cmlu
ZykgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4
Qml0Q29uc3RydWN0b3IpKTsKIH0KIAogUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBs
OjpjcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKQpAQCAt
MTA4LDcgKzEwOCw3IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXQK
ICAgICBTdHJpbmdJbXBsKiBzdHJpbmcgPSBzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oZmFzdE1h
bGxvYyhzaXplKSk7CiAKICAgICBkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KHN0cmlu
ZyArIDEpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgKHN0cmluZykgU3RyaW5nSW1wbChsZW5n
dGgpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IChOb3ROdWxsLCBzdHJpbmcpIFN0cmluZ0lt
cGwobGVuZ3RoKSk7CiB9CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVh
bGxvY2F0ZShQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBs
ZW5ndGgsIExDaGFyKiYgZGF0YSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsCiAgICAgU3RyaW5nSW1wbCogc3RyaW5nID0gc3RhdGlj
X2Nhc3Q8U3RyaW5nSW1wbCo+KGZhc3RSZWFsbG9jKG9yaWdpbmFsU3RyaW5nLmxlYWtSZWYoKSwg
c2l6ZSkpOwogCiAgICAgZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8TENoYXIqPihzdHJpbmcgKyAx
KTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IChzdHJpbmcpIFN0cmluZ0ltcGwobGVuZ3RoLCBG
b3JjZThCaXRDb25zdHJ1Y3RvcikpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgKE5vdE51bGws
IHN0cmluZykgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVjdG9yKSk7CiB9CiAK
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6cmVhbGxvY2F0ZShQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IG9yaWdpbmFsU3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0
YSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OnJlYWxsCiAgICAgU3RyaW5nSW1wbCogc3RyaW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+
KGZhc3RSZWFsbG9jKG9yaWdpbmFsU3RyaW5nLmxlYWtSZWYoKSwgc2l6ZSkpOwogCiAgICAgZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihzdHJpbmcgKyAxKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IChzdHJpbmcpIFN0cmluZ0ltcGwobGVuZ3RoKSk7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCkpOwogfQogCiBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZShjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDcsOSArMjQ3
LDkgQEAgcHVibGljOgogICAgICAgICBvdXRwdXQgPSByZWludGVycHJldF9jYXN0PFQqPihyZXN1
bHRJbXBsICsgMSk7CiAKICAgICAgICAgaWYgKHNpemVvZihUKSA9PSBzaXplb2YoY2hhcikpCi0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3KHJlc3VsdEltcGwpIFN0cmluZ0ltcGwobGVu
Z3RoLCBGb3JjZThCaXRDb25zdHJ1Y3RvcikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyAoTm90TnVsbCwgcmVzdWx0SW1wbCkgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENv
bnN0cnVjdG9yKSk7CiAKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyhyZXN1bHRJbXBsKSBT
dHJpbmdJbXBsKGxlbmd0aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IChOb3ROdWxs
LCByZXN1bHRJbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCkpOwogICAgIH0KIAogICAgIC8vIFJlYWxs
b2NhdGUgdGhlIFN0cmluZ0ltcGwuIFRoZSBvcmlnaW5hbFN0cmluZyBtdXN0IGJlIG9ubHkgb3du
ZWQgYnkgdGhlIFBhc3NSZWZQdHIsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nU3RhdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDEzICs2OCwxMyBAQCB2b2lkIEF0b21pY1N0cmluZzo6aW5pdCgpCiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAgICAgLy8gVXNlIHBsYWNlbWVudCBuZXcgdG8g
aW5pdGlhbGl6ZSB0aGUgZ2xvYmFscy4KLSAgICAgICAgbmV3ICgodm9pZCopJm51bGxBdG9tKSBB
dG9taWNTdHJpbmc7Ci0gICAgICAgIG5ldyAoKHZvaWQqKSZlbXB0eUF0b20pIEF0b21pY1N0cmlu
ZygiIik7Ci0gICAgICAgIG5ldyAoKHZvaWQqKSZ0ZXh0QXRvbSkgQXRvbWljU3RyaW5nKCIjdGV4
dCIpOwotICAgICAgICBuZXcgKCh2b2lkKikmY29tbWVudEF0b20pIEF0b21pY1N0cmluZygiI2Nv
bW1lbnQiKTsKLSAgICAgICAgbmV3ICgodm9pZCopJnN0YXJBdG9tKSBBdG9taWNTdHJpbmcoIioi
KTsKLSAgICAgICAgbmV3ICgodm9pZCopJnhtbEF0b20pIEF0b21pY1N0cmluZygieG1sIik7Ci0g
ICAgICAgIG5ldyAoKHZvaWQqKSZ4bWxuc0F0b20pIEF0b21pY1N0cmluZygieG1sbnMiKTsKKyAg
ICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJm51bGxBdG9tKSBBdG9taWNTdHJpbmc7CisgICAg
ICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZlbXB0eUF0b20pIEF0b21pY1N0cmluZygiIik7Cisg
ICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ0ZXh0QXRvbSkgQXRvbWljU3RyaW5nKCIjdGV4
dCIpOworICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmY29tbWVudEF0b20pIEF0b21pY1N0
cmluZygiI2NvbW1lbnQiKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnN0YXJBdG9t
KSBBdG9taWNTdHJpbmcoIioiKTsKKyAgICAgICAgbmV3IChOb3ROdWxsLCAodm9pZCopJnhtbEF0
b20pIEF0b21pY1N0cmluZygieG1sIik7CisgICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ4
bWxuc0F0b20pIEF0b21pY1N0cmluZygieG1sbnMiKTsKIAogICAgICAgICBpbml0aWFsaXplZCA9
IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNyArMTEw
LDcgQEAgcHVibGljOgogICAgICAgICBhbGxvY2F0b3JQb29sID0gYWxsb2NhdG9yUG9vbC0+ZW5z
dXJlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgICAgIGlmICghYWxsb2NhdG9yUG9vbCkKICAgICAgICAg
ICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVybiBuZXcoYWxsb2NhdG9yUG9vbC0+YWxsb2Moc2l6
ZSkpIERpc2p1bmN0aW9uQ29udGV4dCgpOworICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0b3JQ
b29sLT5hbGxvYyhzaXplKSkgRGlzanVuY3Rpb25Db250ZXh0KCk7CiAgICAgfQogCiAgICAgdm9p
ZCBmcmVlRGlzanVuY3Rpb25Db250ZXh0KERpc2p1bmN0aW9uQ29udGV4dCogY29udGV4dCkKQEAg
LTEzMSw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgb3V0cHV0WyhmaXJzdFN1
YnBhdHRlcm5JZCA8PCAxKSArIGldID0gLTE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IG5ldyhnZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpIERpc2p1bmN0aW9uQ29udGV4dCgpOwor
ICAgICAgICAgICAgbmV3IChnZXREaXNqdW5jdGlvbkNvbnRleHQodGVybSkpIERpc2p1bmN0aW9u
Q29udGV4dCgpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgdm9pZCogd2hlcmUpCkBAIC0xNjAsNyArMTYwLDcgQEAgcHVibGljOgogICAgICAgICBhbGxv
Y2F0b3JQb29sID0gYWxsb2NhdG9yUG9vbC0+ZW5zdXJlQ2FwYWNpdHkoc2l6ZSk7CiAgICAgICAg
IGlmICghYWxsb2NhdG9yUG9vbCkKICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVy
biBuZXcoYWxsb2NhdG9yUG9vbC0+YWxsb2Moc2l6ZSkpIFBhcmVudGhlc2VzRGlzanVuY3Rpb25D
b250ZXh0KG91dHB1dCwgdGVybSk7CisgICAgICAgIHJldHVybiBuZXcgKGFsbG9jYXRvclBvb2wt
PmFsbG9jKHNpemUpKSBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChvdXRwdXQsIHRlcm0p
OwogICAgIH0KIAogICAgIHZvaWQgZnJlZVBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KFBh
cmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0KQpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTAzMDE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTEgQEAKKzIwMTEtMTItMTUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KKworICAgICAgICBQbGFjZW1lbnQgbmV3IGRvZXMgYW4gdW5uZWNlc3NhcnkgTlVM
TCBjaGVjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ2NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNJ
bWFnZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2Vu
ZXJhdGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAgICAgKiBicmlkZ2UvYy9DUnVudGlt
ZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1bnRpbWVPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgICogYnJpZGdlL2MvY19pbnN0YW5jZS5jcHA6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpDUnVudGltZU1ldGhvZDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvam5pL2pz
Yy9KYXZhSW5zdGFuY2VKU0MuY3BwOgorICAgICAgICAoSmF2YVJ1bnRpbWVNZXRob2Q6OmNyZWF0
ZSk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6QmluZGluZ3M6OkphdmFSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAq
IGJyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpj
X2luc3RhbmNlLm1tOgorICAgICAgICAoT2JqQ1J1bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAg
ICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmg6CisgICAgICAgIChKU0M6OkJpbmRpbmdz
OjpPYmpjRmFsbGJhY2tPYmplY3RJbXA6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZUFycmF5OjpjcmVhdGUpOgorICAgICAg
ICAqIGJyaWRnZS9ydW50aW1lX21ldGhvZC5oOgorICAgICAgICAoSlNDOjpSdW50aW1lTWV0aG9k
OjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX29iamVjdC5oOgorICAgICAgICAo
SlNDOjpCaW5kaW5nczo6UnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vRG9j
dW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1FbGVtZW50S2V5SGFzaFRyYWl0czo6Y29u
c3RydWN0RGVsZXRlZFZhbHVlKTogVXNlIE5vdE51bGwKKyAgICAgICAgcGxhY2VtZW50IG5ldywg
YXMgaW4gSmF2YVNjcmlwdENvcmUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9QT0RBcmVuYS5oOgor
ICAgICAgICAoV2ViQ29yZTo6UE9EQXJlbmE6OmFsbG9jYXRlT2JqZWN0KTogTm8gbmVlZCB0byBj
aGVjayBmb3IgTlVMTCBleHBsaWNpdGx5LAorICAgICAgICBzaW5jZSB0aGF0J3MgdGhlIGJ1aWx0
LWluIGJlaGF2aW9yIG9mIHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udERhdGFDYWNoZUtleVRy
YWl0czo6Y29uc3RydWN0RGVsZXRlZFZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRSZWN0SGFzaC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemVIYXNo
Lmg6IE1vcmUgTm90TnVsbC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDog
RGVjbGFyaW5nIHRoYXQgd2UgdGhyb3cgaXMgdGhlIEMrKyB3YXkgdG8gc2F5CisgICAgICAgIHRo
YXQgb3BlcmF0b3IgbmV3IHdpbGwgbm90IHJldHVybiBOVUxMLgorCiAyMDExLTEyLTE1ICBLZW5u
ZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTAzMDAwLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFn
ZUNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbWFnZUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBzdGF0aWMgSlNJbWFnZUNv
bnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEpTSW1hZ2VDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKEpTQzo6YWxs
b2NhdGVDZWxsPEpTSW1hZ2VDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTSW1hZ2VDb25z
dHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBKU0ltYWdlQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U0ltYWdlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0ltYWdlQ29uc3RydWN0b3Ioc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtNzQ1LDE0ICs3NDUsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgaWYgKCRpbnRlcmZh
Y2VOYW1lIGVxICJET01XaW5kb3ciKSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIg
ICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGws
IEpTRE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4o
Z2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1w
bCwgd2luZG93U2hlbGwpO1xuIik7CisgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
ICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNs
YXNzTmFtZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVj
dHVyZSwgaW1wbCwgd2luZG93U2hlbGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgd2luZG93U2hlbGwp
O1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwogICAgIH0g
ZWxzaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IklzV29ya2VyQ29udGV4dCJ9
KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUq
IGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgUGFzc1JlZlB0cjwkaW1wbFR5cGU+IGltcGwpXG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NO
YW1lPihnbG9iYWxEYXRhLmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBpbXBsKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xh
c3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+
KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGlt
cGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIH1cblxuIik7CkBAIC03NjAsNyArNzYwLDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAg
ICAgICAgIEFkZEluY2x1ZGVzRm9yVHlwZUluSGVhZGVyKCRpbXBsVHlwZSkgdW5sZXNzICRzdmdQ
cm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgJGNsYXNzTmFtZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBp
bXBsKVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAo
SlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCku
aGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpO1xuIik7Cisg
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIGlt
cGwpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwpAQCAtMTA1Nyw3ICsxMDU3LDcgQEAgc3Vi
IEdlbmVyYXRlSGVhZGVyCiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAk
e2NsYXNzTmFtZX1Qcm90b3R5cGUqIGNyZWF0ZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKVxuIik7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAke2NsYXNzTmFtZX1Qcm90b3R5cGUqIHB0ciA9
IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JHtjbGFzc05hbWV9UHJvdG90eXBlPihnbG9iYWxEYXRh
LmhlYXApKSAke2NsYXNzTmFtZX1Qcm90b3R5cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpO1xuIik7CisgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJHtjbGFz
c05hbWV9UHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCR7
Y2xhc3NOYW1lfVByb3RvdHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9UHJvdG90
eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtcbiIpOwogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7
XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7
CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5cbiIpOwpAQCAtMzMxNSw3ICszMzE1
LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7XG4iKTsKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljICRjb25zdHJ1Y3RvckNsYXNzTmFtZSog
Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIHtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgJGNvbnN0
cnVjdG9yQ2xhc3NOYW1lKiBwdHIgPSBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjb25zdHJ1Y3Rv
ckNsYXNzTmFtZT4oKmV4ZWMtPmhlYXAoKSkpICRjb25zdHJ1Y3RvckNsYXNzTmFtZShzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDwkY29uc3RydWN0b3JDbGFzc05hbWU+KCpleGVjLT5oZWFwKCkpKSAkY29uc3RydWN0b3JD
bGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBwdHI7XG4iKTsK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuXG4iKTsKQEAgLTMzNTAsNyArMzM1MCw3
IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgewotICAgICAgICBKUyR7
aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoSlNDOjph
bGxvY2F0ZUNlbGw8SlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpOworICAgICAgICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlMke2ludGVyZmFj
ZU5hbWV9TmFtZWRDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEpTJHtpbnRlcmZhY2VOYW1l
fU5hbWVkQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50
aW1lX2FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
YXJyYXkuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfYXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlw
ZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBw
YXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiYXJyYXkiLgogICAgICAgICBTdHJ1
Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8
UnVudGltZUFycmF5PihleGVjKTsKLSAgICAgICAgUnVudGltZUFycmF5KiBydW50aW1lQXJyYXkg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1l
QXJyYXkoZXhlYywgZG9tU3RydWN0dXJlKTsKKyAgICAgICAgUnVudGltZUFycmF5KiBydW50aW1l
QXJyYXkgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSdW50aW1lQXJyYXk+KCpleGVjLT5o
ZWFwKCkpKSBSdW50aW1lQXJyYXkoZXhlYywgZG9tU3RydWN0dXJlKTsKICAgICAgICAgcnVudGlt
ZUFycmF5LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KTsKICAgICAg
ICAgcmV0dXJuIHJ1bnRpbWVBcnJheTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9tZXRob2QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cnVudGltZV9tZXRob2QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvYnJp
ZGdlL3J1bnRpbWVfbWV0aG9kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVi
bGljOgogCiAgICAgc3RhdGljIFJ1bnRpbWVNZXRob2QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBJZGVudGlmaWVyJiBuYW1lLCBCaW5kaW5nczo6TWV0aG9kTGlzdCYgbWV0aG9kTGlzdCkKICAg
ICB7Ci0gICAgICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoYWxsb2NhdGVDZWxsPFJ1
bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlLCBtZXRob2RMaXN0KTsKKyAgICAgICAgUnVudGltZU1ldGhvZCogbWV0aG9kID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkp
IFJ1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIG1ldGhvZExpc3QpOwogICAg
ICAgICBtZXRob2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CiAg
ICAgICAgIHJldHVybiBtZXRob2Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdl
L3J1bnRpbWVfb2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1
bnRpbWVfb2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX29iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBSdW50aW1lT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgUGFzc1Jl
ZlB0cjxJbnN0YW5jZT4gaW5zdGFuY2UpCiAgICAgewotICAgICAgICBSdW50aW1lT2JqZWN0KiBv
YmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkg
UnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2UpOwor
ICAgICAgICBSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU9iamVjdChleGVjLCBnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSwgaW5zdGFuY2UpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAxMDI4
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9DUnVudGltZU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRklYTUU6IGRlcHJl
Y2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3Jvbmcg
Z2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGds
b2JhbCBvYmplY3QgZm9yICJpIi4KICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBX
ZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPENSdW50aW1lT2JqZWN0PihleGVjKTsK
LSAgICAgICAgQ1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPENSdW50
aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBkb21TdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAgICAgICAgQ1J1bnRpbWVPYmplY3QqIG9i
amVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPENSdW50aW1lT2JqZWN0PigqZXhlYy0+
aGVhcCgpKSkgQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUs
IGluc3RhbmNlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3Qp
OwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jy
aWRnZS9jL2NfaW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9jL2NfaW5zdGFuY2UuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9i
cmlkZ2UvYy9jX2luc3RhbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBA
IHB1YmxpYzoKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNl
cyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAv
LyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KICAg
ICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9N
U3RydWN0dXJlPENSdW50aW1lTWV0aG9kPihleGVjKTsKLSAgICAgICAgQ1J1bnRpbWVNZXRob2Qq
IG1ldGhvZCA9IG5ldyAoYWxsb2NhdGVDZWxsPENSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgp
KSkgQ1J1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGxpc3QpOworICAg
ICAgICBDUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
Q1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBDUnVudGltZU1ldGhvZChnbG9iYWxPYmpl
Y3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7CiAgICAgICAgIG1ldGhvZC0+ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBuYW1lKTsKICAgICAgICAgcmV0dXJuIG1ldGhvZDsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFJbnN0YW5j
ZUpTQy5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkv
anNjL0phdmFJbnN0YW5jZUpTQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVz
ZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAg
Ly8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAg
ICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERP
TVN0cnVjdHVyZTxKYXZhUnVudGltZU1ldGhvZD4oZXhlYyk7Ci0gICAgICAgIEphdmFSdW50aW1l
TWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKYXZhUnVudGltZU1ldGhvZD4oKmV4
ZWMtPmhlYXAoKSkpIEphdmFSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJl
LCBsaXN0KTsKKyAgICAgICAgSmF2YVJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPEphdmFSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1
bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGxpc3QpOwogICAgICAgICBt
ZXRob2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CiAgICAgICAg
IHJldHVybiBtZXRob2Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9q
c2MvSmF2YVJ1bnRpbWVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlk
Z2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhUnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0
ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJvdG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xv
YmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVkIHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2Jh
bCBvYmplY3QgZm9yICJpIi4KICAgICAgICAgU3RydWN0dXJlKiBkb21TdHJ1Y3R1cmUgPSBXZWJD
b3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPEphdmFSdW50aW1lT2JqZWN0PihleGVjKTsK
LSAgICAgICAgSmF2YVJ1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoYWxsb2NhdGVDZWxsPEph
dmFSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSmF2YVJ1bnRpbWVPYmplY3QoZXhlYywg
Z2xvYmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGphdmFJbnN0YW5jZSk7CisgICAgICAgIEphdmFS
dW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKYXZhUnVu
dGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEphdmFSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2Jh
bE9iamVjdCwgZG9tU3RydWN0dXJlLCBqYXZhSW5zdGFuY2UpOwogICAgICAgICBvYmplY3QtPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpDUnVudGltZU9iamVj
dC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9PYmpD
UnVudGltZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gRklYTUU6IGRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmUgdXNlcyB0aGUgcHJv
dG90eXBlIG9mZiBvZiB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdAogICAgICAgICAvLyBXZSBuZWVk
IHRvIHBhc3MgaW4gdGhlIHJpZ2h0IGdsb2JhbCBvYmplY3QgZm9yICJpIi4KICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9i
akNSdW50aW1lT2JqZWN0PihleGVjKTsKLSAgICAgICAgT2JqQ1J1bnRpbWVPYmplY3QqIG9iamVj
dCA9IG5ldyAoYWxsb2NhdGVDZWxsPE9iakNSdW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkg
T2JqQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBpbnN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBPYmpDUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8T2JqQ1J1bnRpbWVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU9iamVj
dChleGVjLCBnbG9iYWxPYmplY3QsIGluc3QsIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0J
KHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5z
dGFuY2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTE4Niw3ICsxODYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlw
ZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBw
YXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAgICAgICAgIFN0cnVjdHVy
ZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpD
UnVudGltZU1ldGhvZD4oZXhlYyk7Ci0gICAgICAgIE9iakNSdW50aW1lTWV0aG9kKiBtZXRob2Qg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9i
akNSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBsaXN0KTsKKyAgICAg
ICAgT2JqQ1J1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PE9iakNSdW50aW1lTWV0aG9kPigqZXhlYy0+aGVhcCgpKSkgT2JqQ1J1bnRpbWVNZXRob2QoZ2xv
YmFsT2JqZWN0LCBkb21TdHJ1Y3R1cmUsIGxpc3QpOwogICAgICAgICBtZXRob2QtPmZpbmlzaENy
ZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSk7CiAgICAgICAgIHJldHVybiBtZXRob2Q7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLmgJ
KHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVu
dGltZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAg
ICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3Rv
dHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgU3RydWN0dXJlKiBk
b21TdHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPE9iamNGYWxs
YmFja09iamVjdEltcD4oZXhlYyk7Ci0gICAgICAgIE9iamNGYWxsYmFja09iamVjdEltcCogZmFs
bGJhY2tPYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxPYmpjRmFsbGJhY2tPYmplY3RJbXA+KCpl
eGVjLT5oZWFwKCkpKSBPYmpjRmFsbGJhY2tPYmplY3RJbXAoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1
Y3R1cmUsIGluc3RhbmNlLCBwcm9wZXJ0eU5hbWUpOworICAgICAgICBPYmpjRmFsbGJhY2tPYmpl
Y3RJbXAqIGZhbGxiYWNrT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqY0Zh
bGxiYWNrT2JqZWN0SW1wPigqZXhlYy0+aGVhcCgpKSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGds
b2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBpbnN0YW5jZSwgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgZmFsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IHJldHVybiBmYWxsYmFja09iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdHJ1Y3QgRm9ybUVsZW1lbnRLZXlIYXNoIHsK
IH07CiAKIHN0cnVjdCBGb3JtRWxlbWVudEtleUhhc2hUcmFpdHMgOiBXVEY6OkdlbmVyaWNIYXNo
VHJhaXRzPEZvcm1FbGVtZW50S2V5PiB7Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKEZvcm1FbGVtZW50S2V5JiBzbG90KSB7IG5ldyAoJnNsb3QpIEZvcm1FbGVtZW50S2V5
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVj
dERlbGV0ZWRWYWx1ZShGb3JtRWxlbWVudEtleSYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90
KSBGb3JtRWxlbWVudEtleShXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAgICBzdGF0
aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBGb3JtRWxlbWVudEtleSYgdmFsdWUpIHsgcmV0
dXJuIHZhbHVlLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1BPREFyZW5hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUE9EQXJlbmEuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUE9EQXJlbmEuaAkod29ya2luZyBjb3B5KQpAQCAtODYsMjMgKzg2LDEzIEBA
IHB1YmxpYzoKICAgICAvLyBBbGxvY2F0ZXMgYW4gb2JqZWN0IGZyb20gdGhlIGFyZW5hLgogICAg
IHRlbXBsYXRlPGNsYXNzIFQ+IFQqIGFsbG9jYXRlT2JqZWN0KCkKICAgICB7Ci0gICAgICAgIHZv
aWQqIHB0ciA9IGFsbG9jYXRlQmFzZTxUPigpOwotICAgICAgICBpZiAocHRyKSB7Ci0gICAgICAg
ICAgICAvLyBVc2UgcGxhY2VtZW50IG9wZXJhdG9yIG5ldyB0byBhbGxvY2F0ZSBhIFQgYXQgdGhp
cyBsb2NhdGlvbi4KLSAgICAgICAgICAgIG5ldyhwdHIpIFQoKTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KHB0cik7CisgICAgICAgIHJldHVybiBuZXcgKGFsbG9j
YXRlQmFzZTxUPigpKSBUKCk7CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdGVzIGFuIG9iamVjdCBm
cm9tIHRoZSBhcmVuYSwgY2FsbGluZyBhIHNpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3Rvci4KICAg
ICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBBcmd1bWVudDFUeXBlPiBUKiBhbGxvY2F0ZU9iamVj
dChjb25zdCBBcmd1bWVudDFUeXBlJiBhcmd1bWVudDEpCiAgICAgewotICAgICAgICB2b2lkKiBw
dHIgPSBhbGxvY2F0ZUJhc2U8VD4oKTsKLSAgICAgICAgaWYgKHB0cikgewotICAgICAgICAgICAg
Ly8gVXNlIHBsYWNlbWVudCBvcGVyYXRvciBuZXcgdG8gYWxsb2NhdGUgYSBUIGF0IHRoaXMgbG9j
YXRpb24uCi0gICAgICAgICAgICBuZXcocHRyKSBUKGFyZ3VtZW50MSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihwdHIpOworICAgICAgICByZXR1cm4gbmV3IChh
bGxvY2F0ZUJhc2U8VD4oKSkgVChhcmd1bWVudDEpOwogICAgIH0KIAogICAgIC8vIFRoZSBpbml0
aWFsIHNpemUgb2YgYWxsb2NhdGVkIGNodW5rczsgaW5jcmVhc2VzIGFzIG5lY2Vzc2FyeSB0bwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDcgQEAgc3RydWN0IEZv
bnREYXRhQ2FjaGVLZXlUcmFpdHMgOiBXVEY6OkdlbgogICAgIH0KICAgICBzdGF0aWMgdm9pZCBj
b25zdHJ1Y3REZWxldGVkVmFsdWUoRm9udFBsYXRmb3JtRGF0YSYgc2xvdCkKICAgICB7Ci0gICAg
ICAgIG5ldyAoJnNsb3QpIEZvbnRQbGF0Zm9ybURhdGEoSGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsK
KyAgICAgICAgbmV3IChOb3ROdWxsLCAmc2xvdCkgRm9udFBsYXRmb3JtRGF0YShIYXNoVGFibGVE
ZWxldGVkVmFsdWUpOwogICAgIH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25z
dCBGb250UGxhdGZvcm1EYXRhJiB2YWx1ZSkKICAgICB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0SGFzaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RIYXNoLmgJKHJldmlzaW9uIDEwMjgwOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3RIYXNoLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDcgKzUwLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2Vi
Q29yZTo6SQogdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpJbnRSZWN0PiA6
IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OkludFJlY3Q+IHsKICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKICAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gZmFsc2U7Ci0gICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZh
bHVlKFdlYkNvcmU6OkludFJlY3QmIHNsb3QpIHsgbmV3ICgmc2xvdCkgV2ViQ29yZTo6SW50UmVj
dCgtMSwgLTEsIC0xLCAtMSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoV2ViQ29yZTo6SW50UmVjdCYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90KSBXZWJDb3Jl
OjpJbnRSZWN0KC0xLCAtMSwgLTEsIC0xKTsgfQogICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZh
bHVlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS54KCkgPT0g
LTEgJiYgdmFsdWUueSgpID09IC0xICYmIHZhbHVlLndpZHRoKCkgPT0gLTEgJiYgdmFsdWUuaGVp
Z2h0KCkgPT0gLTE7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemVIYXNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50U2l6ZUhhc2guaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJh
aXRzPFdlYkNvcmU6OkludFNpemU+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6SW50U2l6
ZT4gewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsK
ICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOwotICAg
ICAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6SW50U2l6ZSYg
c2xvdCkgeyBuZXcgKCZzbG90KSBXZWJDb3JlOjpJbnRTaXplKC0xLCAtMSk7IH0KKyAgICAgICAg
c3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkludFNpemUmIHNsb3Qp
IHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgV2ViQ29yZTo6SW50U2l6ZSgtMSwgLTEpOyB9CiAgICAg
ICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZh
bHVlKSB7IHJldHVybiB2YWx1ZS53aWR0aCgpID09IC0xICYmIHZhbHVlLmhlaWdodCgpID09IC0x
OyB9CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdURgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw3ICs4
Nyw3IEBAIHN0YXRpYyB2b2lkKiBiYXNlT2ZSZW5kZXJPYmplY3RCZWluZ0RlbGUKIAogYm9vbCBS
ZW5kZXJPYmplY3Q6OnNfYWZmZWN0c1BhcmVudEJsb2NrID0gZmFsc2U7CiAKLXZvaWQqIFJlbmRl
ck9iamVjdDo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5h
KSB0aHJvdygpCit2b2lkKiBSZW5kZXJPYmplY3Q6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJl
bmRlckFyZW5hKiByZW5kZXJBcmVuYSkgdGhyb3coc3RkOjpiYWRfYWxsb2MpCiB7CiAgICAgcmV0
dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4gIERlcml2ZWQg
Y2xhc3NlcyBtdXN0IG92ZXJyaWRlIG9wZXJhdG9yIG5ldwogICAgIC8vIGluIG9yZGVyIHRvIGFs
bG9jYXRlIG91dCBvZiB0aGUgUmVuZGVyQXJlbmEuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNp
emVfdCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOworICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIFJlbmRlckFyZW5hKikgdGhyb3coc3RkOjpiYWRfYWxsb2MpOwogCiAgICAgLy8gT3ZlcnJp
ZGRlbiB0byBwcmV2ZW50IHRoZSBub3JtYWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgogICAg
IHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqLCBzaXplX3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119572</attachid>
            <date>2011-12-15 23:14:07 -0800</date>
            <delta_ts>2011-12-16 21:03:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74676-20111215231406.patch</filename>
            <type>text/plain</type>
            <size>120682</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzMDE0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxMiBA
QAorMjAxMS0xMi0xNSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIFBsYWNlbWVudCBuZXcgZG9lcyBhbiB1bm5lY2Vzc2FyeSBOVUxMIGNoZWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDY3NgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbiBkZWZpbmUgb3Vy
IG93biB2ZXJzaW9uLCB3aGljaCBza2lwcyB0aGUgTlVMTCBjaGVjay4KKyAgICAgICAgCisgICAg
ICAgIE5vdCBhIG1lYXN1cmFibGUgc3BlZWR1cCwgYnV0IGNvZGUgaW5zcGVjdGlvbiBzaG93cyBi
ZXR0ZXIgY29kZSBnZW5lcmF0ZWQsCisgICAgICAgIGFuZCBJIGJlbGlldmUgdGhpcyBpcyBhIHN0
ZXAgdG93YXJkIHR1cm5pbmcgb2ZmIC1mb21pdC1mcmFtZS1wb2ludGVyLgorCisgICAgICAgICog
QVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrQ29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5oOgor
ICAgICAgICAoSlNDOjpKU0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVs
bCB2ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBuZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVj
ay4KKworICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0Lmg6IFJlbW92ZWQgYSBjb25mbGlj
dGluZywgdW5uZWNlc3NhcmF5IHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgKEpTQzo6SlNDYWxs
YmFja09iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRp
b24uaDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXJBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAqIGhlYXAvSGFuZGxlSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhhbmRsZUhlYXA6Omdyb3cp
OgorICAgICAgICAqIGhlYXAvSGFuZGxlSGVhcC5oOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFw
OjphbGxvY2F0ZSk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChK
U0M6Ok1hcmtlZEJsb2NrOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6cmVj
eWNsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6
Y2xlYXIpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmNyZWF0
ZSk6CisgICAgICAgICogcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaDoKKyAgICAgICAgKiBydW50
aW1lL0FyZ3VtZW50cy5oOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6OkFycmF5Q29u
c3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5oOgor
ICAgICAgICAoSlNDOjpBcnJheVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1l
L0Jvb2xlYW5Db25zdHJ1Y3Rvci5oOgorICAgICAgICAoSlNDOjpCb29sZWFuQ29uc3RydWN0b3I6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OkJvb2xlYW5PYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9Cb29sZWFuUHJv
dG90eXBlLmg6CisgICAgICAgIChKU0M6OkJvb2xlYW5Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAg
ICAgICogcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6RGF0ZUNvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUluc3RhbmNlLmg6CisgICAg
ICAgIChKU0M6OkRhdGVJbnN0YW5jZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0RhdGVQ
cm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RGF0ZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAgIChKU0M6OlN0cmljdE1vZGVUeXBlRXJyb3JG
dW5jdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKEpTQzo6RXJyb3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50
aW1lL0Vycm9ySW5zdGFuY2UuaDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OkVy
cm9yUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oOgorICAgICAgICAoSlNDOjpJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6Ok5hdGl2ZUV4ZWN1dGFibGU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1
Y3Rvci5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Qcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9HZXR0ZXJTZXR0ZXIuaDoK
KyAgICAgICAgKEpTQzo6R2V0dGVyU2V0dGVyOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBUElWYWx1ZVdyYXBwZXIuaDoKKyAgICAgICAgKEpTQzo6SlNBUElWYWx1ZVdyYXBwZXI6OmNy
ZWF0ZSk6CisgICAgICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6
SlNBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCb3VuZEZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6SlNCeXRlQXJyYXk6
OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVsbCB2ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBu
ZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVjay4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
IFJlbW92ZWQgYSBjb25mbGljdGluZywgdW5uZWNlc3NhcmF5IHBsYWNlbWVudCBuZXcuCisKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlND
OjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbFRoaXMuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxUaGlzOjpjcmVhdGUp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNOb3RBbk9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU05v
dEFuT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpKU09OT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmpl
Y3QuaDoKKyAgICAgICAgKEpTQzo6SlNGaW5hbE9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDOjpKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oOgorICAgICAgICAo
SlNDOjpKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpSb3BlQnVpbGRlcjo6Y3JlYXRl
TnVsbCk6CisgICAgICAgIChKU0M6OlJvcGVCdWlsZGVyOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpSb3BlQnVpbGRlcjo6Y3JlYXRlSGFzT3RoZXJPd25lcik6CisgICAgICAgICogcnVudGltZS9N
YXRoT2JqZWN0Lmg6CisgICAgICAgIChKU0M6Ok1hdGhPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAg
ICogcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6Ok5hdGl2
ZUVycm9yQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9OYXRpdmVFcnJv
clByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRl
KToKKyAgICAgICAgKiBydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmg6CisgICAgICAgIChKU0M6
Ok51bWJlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyT2Jq
ZWN0Lmg6CisgICAgICAgIChKU0M6Ok51bWJlck9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL051bWJlclByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpOdW1iZXJQcm90b3R5cGU6
OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oOgorICAgICAg
ICAoSlNDOjpPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL09i
amVjdFByb3RvdHlwZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RQcm90b3R5cGU6OmNyZWF0ZSk6
CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3BwOgorICAgICAgICAoSlNDOjpSZWdFeHA6OmNy
ZWF0ZVdpdGhvdXRDYWNoaW5nKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5Lmg6CisgICAgICAgIChKU0M6OlJlZ0V4cE1hdGNo
ZXNBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4cE9iamVjdC5oOgorICAg
ICAgICAoSlNDOjpSZWdFeHBPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDOjpTY29wZUNoYWlu
Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmg6
CisgICAgICAgIChKU0M6OlN0cmljdEV2YWxBY3RpdmF0aW9uOjpjcmVhdGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKEpTQzo6U3RyaW5nQ29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdPYmplY3QuaDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nT2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmg6CisgICAgICAgIChKU0M6OlN0cmluZ1Byb3RvdHlwZTo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNo
YWluOjpjcmVhdGUpOgorICAgICAgICAqIHRlc3RSZWdFeHAuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpjcmVhdGUpOgorICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAo
V1RGOjpCaXRWZWN0b3I6Ok91dE9mTGluZUJpdHM6OmNyZWF0ZSk6IFVzZSB0aGUgTm90TnVsbCB2
ZXJzaW9uIG9mIHBsYWNlbWVudAorICAgICAgICBuZXcgdG8gc2tpcCB0aGUgTlVMTCBjaGVjay4K
KworICAgICAgICAqIHd0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oOgorICAgICAgICAoV1RGOjpC
dW1wUG9pbnRlclBvb2w6OmNyZWF0ZSk6IFN0YW5kYXJkaXplZCBzcGFjaW5nIHRvIG1ha2UgZ3Jl
cCBlYXNpZXIuCisKKyAgICAgICAgKiB3dGYvQnl0ZUFycmF5LmNwcDoKKyAgICAgICAgKFdURjo6
Qnl0ZUFycmF5OjpjcmVhdGUpOgorICAgICAgICAqIHd0Zi9EZXF1ZS5oOgorICAgICAgICAoV1RG
Ojo6OmFwcGVuZCk6CisgICAgICAgIChXVEY6Ojo6cHJlcGVuZCk6IFVzZSBOb3ROdWxsLCBhcyBh
Ym92ZS4KKworICAgICAgICAqIHd0Zi9GYXN0QWxsb2NCYXNlLmg6IEFkZGVkIGEgcGxhY2VtZW50
IG5ldywgc2luY2UgdGhpcyBjbGFzcyB3b3VsZCBvdGhlcndpc2UKKyAgICAgICAgaGlkZSB0aGUg
bmFtZSBvZiB0aGUgZ2xvYmFsIHBsYWNlbWVudCBuZXcuCisKKyAgICAgICAgKFdURjo6ZmFzdE5l
dyk6IFN0YW5kYXJkaXplZCBzcGFjaW5nLiBNb3N0IG9mIHRoZXNlIGZ1bmN0aW9ucyBkb24ndCBu
ZWVkCisgICAgICAgIE5vdE51bGwsIHNpbmNlIHRoZXkgY2hlY2sgZm9yIE5VTEwsIGFuZCB0aGUg
b3B0aW1pemVyIGNhbiBzZWUgdGhhdC4KKworICAgICAgICAqIHd0Zi9IYXNoVGFibGUuaDoKKyAg
ICAgICAgKiB3dGYvSGFzaFRyYWl0cy5oOgorICAgICAgICAoV1RGOjpTaW1wbGVDbGFzc0hhc2hU
cmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogd3RmL01ldGFBbGxvY2F0
b3IuY3BwOgorICAgICAgICAoV1RGOjpNZXRhQWxsb2NhdG9yOjphbGxvY0ZyZWVTcGFjZU5vZGUp
OiBOb3ROdWxsLCBhcyBhYm92ZS4KKworICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMuaDoKKyAg
ICAgICAgKHRocm93KTogVGhpcyBpcyBvdXIgTm90TnVsbCBwbGFjZW1lbnQgbmV3LiBEZWNsYXJp
bmcgdGhhdCB3ZSB0aHJvdyBpcworICAgICAgICB0aGUgQysrIHdheSB0byBzYXkgdGhhdCBvcGVy
YXRvciBuZXcgd2lsbCBub3QgcmV0dXJuIE5VTEwuCisKKyAgICAgICAgKiB3dGYvVGhyZWFkU3Bl
Y2lmaWMuaDoKKyAgICAgICAgKFdURjo6VCk6CisgICAgICAgICogd3RmL1ZlY3Rvci5oOgorICAg
ICAgICAoV1RGOjo6OmFwcGVuZCk6CisgICAgICAgIChXVEY6Ojo6dHJ5QXBwZW5kKToKKyAgICAg
ICAgKFdURjo6Ojp1bmNoZWNrZWRBcHBlbmQpOgorICAgICAgICAoV1RGOjo6Omluc2VydCk6Cisg
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRp
YWxpemVkKToKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6cmVhbGxvY2F0ZSk6CisgICAgICAg
ICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjp0cnlD
cmVhdGVVbmluaXRpYWxpemVkKToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdTdGF0aWNzLmNw
cDoKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppbml0KTogVXNlIE5vdE51bGwsIGFzIGFi
b3ZlLgorCisgICAgICAgICogeWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpZYXJyOjpJbnRlcnByZXRlcjo6YWxsb2NEaXNqdW5jdGlvbkNvbnRleHQpOgorICAgICAgICAo
SlNDOjpZYXJyOjpJbnRlcnByZXRlcjo6UGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQ6OlBh
cmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6WWFycjo6SW50ZXJw
cmV0ZXI6OmFsbG9jUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQpOiBTdGFuZGFyZGl6ZWQK
KyAgICAgICAgc3BhY2luZyBmb3IgZWFzeSBncmVwLgorCiAyMDExLTEyLTE1ICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVncmVzc2lvbiAocjEwMjg2
Nik6IE5hdmlnYXRpbmcgYXdheSBmcm9tIG9yIGNsb3NpbmcgYSBwYWdlIHdpdGggYSBwbHVnaW4g
Y3Jhc2hlcwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUy
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEdsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFZlY3RvcjxVU3Ry
aW5nPiYgYXJndW1lbnRzKQogICAgIHsKLSAgICAgICAgR2xvYmFsT2JqZWN0KiBvYmplY3QgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxHbG9iYWxPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEdsb2JhbE9i
amVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICBHbG9iYWxPYmplY3QqIG9iamVj
dCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEdsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5o
ZWFwKSkgR2xvYmFsT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIG9iamVj
dC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgYXJndW1lbnRzKTsKICAgICAgICAgcmV0dXJu
IG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
R2xvYmFsT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgY29uc3QgVmVjdG9yPFVTdHJpbmc+JiBhcmd1bWVudHMpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9iYWxEYXRhLmhl
YXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVudHMpOworICAg
ICAgICByZXR1cm4gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8R2xvYmFsT2JqZWN0PihnbG9i
YWxEYXRhLmhlYXApKSBHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBhcmd1bWVu
dHMpOwogICAgIH0KIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gc19pbmZvOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJh
Y2tDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBKU0NhbGxiYWNrQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0NsYXNzUmVmIGNsYXNzUmVmLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2Fs
bGJhY2spIAogICAgIHsKLSAgICAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAo
KSkpIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgY2xhc3NS
ZWYsIGNhbGxiYWNrKTsKKyAgICAgICAgSlNDYWxsYmFja0NvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcj4oKmV4
ZWMtPmhlYXAoKSkpIEpTQ2FsbGJhY2tDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgY2xhc3NSZWYsIGNhbGxiYWNrKTsKICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdCwgY2xhc3NSZWYpOwogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tG
dW5jdGlvbi5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBKU0NhbGxiYWNrRnVuY3Rpb24qIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0Q2FsbEFzRnVuY3Rp
b25DYWxsYmFjayBjYWxsYmFjaywgY29uc3QgSWRlbnRpZmllciYgbmFtZSkKICAgICB7Ci0gICAg
ICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Nh
bGxiYWNrRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBjYWxsYmFjayk7CisgICAgICAgIEpTQ2FsbGJhY2tGdW5jdGlvbiogZnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrRnVuY3Rpb24+KCpleGVjLT5o
ZWFwKCkpKSBKU0NhbGxiYWNrRnVuY3Rpb24oZ2xvYmFsT2JqZWN0LCBjYWxsYmFjayk7CiAgICAg
ICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwog
ICAgICAgICByZXR1cm4gZnVuY3Rpb247CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksMTAgKzExOSw2IEBAIGNsYXNzIEpTQ2FsbGJhY2tPYmplY3QgOiBwdWJsaWMgUGFyZW50
IHsKIHByb3RlY3RlZDoKICAgICBKU0NhbGxiYWNrT2JqZWN0KEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZSosIEpTQ2xhc3NSZWYsIHZvaWQqIGRhdGEpOwogICAgIEpTQ2FsbGJhY2tPYmplY3QoSlNHbG9i
YWxEYXRhJiwgSlNDbGFzc1JlZiwgU3RydWN0dXJlKik7Ci0gICAgLy8gV2UnZCBsaWtlIHRvIHVz
ZSB0aGUgcGxhY2VtZW50IHZlcnNpb24gb2Ygb3BlcmF0b3IgbmV3IGRlZmluZWQgaW4gSlNDZWxs
LCBidXQgCi0gICAgLy8gd2UgY2FuJ3QgYmVjYXVzZSBQYXJlbnQgaXMgYSB0ZW1wbGF0ZSBhcmd1
bWVudCwgc28gd2UganVzdCBkdXBsaWNhdGUgdGhlIHNhbWUgCi0gICAgLy8gZnVuY3Rpb25hbGl0
eSBoZXJlLgotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHB0cikgeyByZXR1
cm4gcHRyOyB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSopOwogICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJik7CkBAIC0xMzMsMTMgKzEyOSwxMyBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIEpTQ2FsbGJhY2tPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4
ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0NsYXNzUmVmIGNsYXNzUmVmLCB2b2lkKiBkYXRhKQogICAgIHsKICAgICAgICAgQVNTRVJUX1VO
VVNFRChnbG9iYWxPYmplY3QsICFzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpIHx8IHN0cnVjdHVy
ZS0+Z2xvYmFsT2JqZWN0KCkgPT0gZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgSlNDYWxsYmFja09i
amVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0
PigqZXhlYy0+aGVhcCgpKSkgSlNDYWxsYmFja09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGNsYXNz
UmVmLCBkYXRhKTsKKyAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PigqZXhlYy0+aGVhcCgp
KSkgSlNDYWxsYmFja09iamVjdChleGVjLCBzdHJ1Y3R1cmUsIGNsYXNzUmVmLCBkYXRhKTsKICAg
ICAgICAgY2FsbGJhY2tPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMpOwogICAgICAgICByZXR1
cm4gY2FsbGJhY2tPYmplY3Q7CiAgICAgfQogICAgIHN0YXRpYyBKU0NhbGxiYWNrT2JqZWN0KiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NsYXNzUmVmIGNsYXNzUmVmLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIEpTQ2FsbGJhY2tPYmplY3QqIGNhbGxi
YWNrT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNDYWxsYmFja09iamVjdD4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNDYWxsYmFja09iamVjdChnbG9iYWxEYXRhLCBjbGFzc1JlZiwgc3RydWN0dXJl
KTsKKyAgICAgICAgSlNDYWxsYmFja09iamVjdCogY2FsbGJhY2tPYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxKU0NhbGxiYWNrT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBKU0Nh
bGxiYWNrT2JqZWN0KGdsb2JhbERhdGEsIGNsYXNzUmVmLCBzdHJ1Y3R1cmUpOwogICAgICAgICBj
YWxsYmFja09iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgIHJldHVy
biBjYWxsYmFja09iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDI4MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
c3RhdGljIERlYnVnZ2VyQWN0aXZhdGlvbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNPYmplY3QqIG9iamVjdCkKICAgICAgICAgewotICAgICAgICAgICAgRGVidWdnZXJBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0gbmV3IChhbGxvY2F0ZUNlbGw8RGVidWdnZXJBY3RpdmF0aW9u
PihnbG9iYWxEYXRhLmhlYXApKSBEZWJ1Z2dlckFjdGl2YXRpb24oZ2xvYmFsRGF0YSk7CisgICAg
ICAgICAgICBEZWJ1Z2dlckFjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxEZWJ1Z2dlckFjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIERlYnVnZ2Vy
QWN0aXZhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGFjdGl2YXRpb24tPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEsIG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gYWN0aXZhdGlv
bjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVh
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlSGVh
cC5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hh
bmRsZUhlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSGFuZGxl
SGVhcDo6Z3JvdygpCiAgICAgTm9kZSogYmxvY2sgPSBtX2Jsb2NrU3RhY2suZ3JvdygpOwogICAg
IGZvciAoaW50IGkgPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGggLSAxOyBpID49IDA7IC0taSkg
ewogICAgICAgICBOb2RlKiBub2RlID0gJmJsb2NrW2ldOwotICAgICAgICBuZXcgKG5vZGUpIE5v
ZGUodGhpcyk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgbm9kZSkgTm9kZSh0aGlzKTsKICAgICAg
ICAgbV9mcmVlTGlzdC5wdXNoKG5vZGUpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IYW5kbGVIZWFwLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hhbmRsZUhlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1
OCw3IEBAIGlubGluZSBIYW5kbGVTbG90IEhhbmRsZUhlYXA6OmFsbG9jYXRlKCkKICAgICAgICAg
Z3JvdygpOwogCiAgICAgTm9kZSogbm9kZSA9IG1fZnJlZUxpc3QucG9wKCk7Ci0gICAgbmV3IChu
b2RlKSBOb2RlKHRoaXMpOworICAgIG5ldyAoTm90TnVsbCwgbm9kZSkgTm9kZSh0aGlzKTsKICAg
ICBtX2ltbWVkaWF0ZUxpc3QucHVzaChub2RlKTsKICAgICByZXR1cm4gdG9IYW5kbGUobm9kZSk7
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEyICszNywxMiBAQCBNYXJrZWRCbG9jayogTWFy
a2VkQmxvY2s6OmNyZWF0ZShIZWFwKiBoCiAgICAgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGFsbG9j
YXRpb24gPSBQYWdlQWxsb2NhdGlvbkFsaWduZWQ6OmFsbG9jYXRlKGJsb2NrU2l6ZSwgYmxvY2tT
aXplLCBPU0FsbG9jYXRvcjo6SlNHQ0hlYXBQYWdlcyk7CiAgICAgaWYgKCFzdGF0aWNfY2FzdDxi
b29sPihhbGxvY2F0aW9uKSkKICAgICAgICAgQ1JBU0goKTsKLSAgICByZXR1cm4gbmV3IChhbGxv
Y2F0aW9uLmJhc2UoKSkgTWFya2VkQmxvY2soYWxsb2NhdGlvbiwgaGVhcCwgY2VsbFNpemUpOwor
ICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGFsbG9jYXRpb24uYmFzZSgpKSBNYXJrZWRCbG9jayhh
bGxvY2F0aW9uLCBoZWFwLCBjZWxsU2l6ZSk7CiB9CiAKIE1hcmtlZEJsb2NrKiBNYXJrZWRCbG9j
azo6cmVjeWNsZShNYXJrZWRCbG9jayogYmxvY2ssIHNpemVfdCBjZWxsU2l6ZSkKIHsKLSAgICBy
ZXR1cm4gbmV3IChibG9jaykgTWFya2VkQmxvY2soYmxvY2stPm1fYWxsb2NhdGlvbiwgYmxvY2st
Pm1faGVhcCwgY2VsbFNpemUpOworICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGJsb2NrKSBNYXJr
ZWRCbG9jayhibG9jay0+bV9hbGxvY2F0aW9uLCBibG9jay0+bV9oZWFwLCBjZWxsU2l6ZSk7CiB9
CiAKIHZvaWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koTWFya2VkQmxvY2sqIGJsb2NrKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNyAr
MTQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY2xlYXIoKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX3JlZi5+Q29kZVJlZigpOwotICAgICAgICAgICAgbmV3ICgmbV9yZWYp
IENvZGVSZWYoKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJm1fcmVmKSBDb2RlUmVmKCk7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvQ2FsbElkZW50aWZpZXIuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1
Y3QgSGFzaFRyYWl0czxKU0M6OkNhbGxJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPEpT
Qzo6Q2FsbElkZW50aWZpZXI+IHsKICAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRl
ZFZhbHVlKEpTQzo6Q2FsbElkZW50aWZpZXImIHNsb3QpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IG5ldyAoJnNsb3QpIEpTQzo6Q2FsbElkZW50aWZpZXIoSlNDOjpVU3RyaW5nKCksIEpTQzo6VVN0
cmluZygpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgICAgICAg
ICAgbmV3IChOb3ROdWxsLCAmc2xvdCkgSlNDOjpDYWxsSWRlbnRpZmllcihKU0M6OlVTdHJpbmco
KSwgSlNDOjpVU3RyaW5nKCksIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7
CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgSlND
OjpDYWxsSWRlbnRpZmllciYgdmFsdWUpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQXJndW1lbnRzKiBj
cmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwor
ICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJhbWUpOwog
ICAgICAgICAgICAgYXJndW1lbnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUpOwogICAgICAg
ICAgICAgcmV0dXJuIGFyZ3VtZW50czsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHN0YXRpYyBBcnJheUNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQXJyYXlQcm90b3R5
cGUqIGFycmF5UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBcnJheUNvbnN0cnVj
dG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEFycmF5Q29uc3RydWN0b3I+KCpl
eGVjLT5oZWFwKCkpKSBBcnJheUNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEFycmF5Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8QXJyYXlDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5Q29u
c3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0
b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGFycmF5UHJvdG90eXBlKTsKICAgICAgICAgICAgIHJl
dHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBBcnJh
eVByb3RvdHlwZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFy
cmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxBcnJheVByb3RvdHlw
ZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgIEFycmF5UHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxBcnJheVByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIEFycmF5UHJvdG90
eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBwcm90b3R5cGU7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5D
b25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Jvb2xlYW5Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Cb29sZWFuQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgQm9vbGVhbkNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQm9vbGVhblByb3RvdHlwZSogYm9vbGVhblBy
b3RvdHlwZSkKICAgICAgICAgewotICAgICAgICAgICAgQm9vbGVhbkNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5Db25zdHJ1Y3Rvcj4oKmV4ZWMtPmhl
YXAoKSkpIEJvb2xlYW5Db25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBCb29sZWFuQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8Qm9vbGVhbkNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhbkNv
bnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGNvbnN0cnVj
dG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBib29sZWFuUHJvdG90eXBlKTsKICAgICAgICAgICAg
IHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Jvb2xlYW5PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhbk9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBCb29s
ZWFuT2JqZWN0KiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgQm9vbGVhbk9iamVjdCogYm9vbGVhbiA9
IG5ldyAoYWxsb2NhdGVDZWxsPEJvb2xlYW5PYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIEJvb2xl
YW5PYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEJvb2xlYW5PYmpl
Y3QqIGJvb2xlYW4gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxCb29sZWFuT2JqZWN0Pihn
bG9iYWxEYXRhLmhlYXApKSBCb29sZWFuT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBib29sZWFuLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAg
ICAgIHJldHVybiBib29sZWFuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblByb3RvdHlwZS5oCShyZXZpc2lvbiAxMDI4MDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIEJvb2xlYW5Qcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBCb29sZWFuUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxC
b29sZWFuUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgQm9vbGVhblByb3RvdHlwZShleGVjLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgQm9vbGVhblByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Qm9vbGVhblByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IEJvb2xlYW5Qcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlw
ZS0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVy
biBwcm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgRGF0ZUNv
bnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGF0ZVByb3RvdHlwZSogZGF0ZVByb3RvdHlw
ZSkKICAgICAgICAgewotICAgICAgICAgICAgRGF0ZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoYWxsb2NhdGVDZWxsPERhdGVDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIERhdGVD
b25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBEYXRlQ29u
c3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUNv
bnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwg
c3RydWN0dXJlKTsKICAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVj
LCBkYXRlUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNl
LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Rh
dGVJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCwxNCArNDAsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIERhdGVJbnN0YW5jZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGRvdWJsZSBkYXRlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUlu
c3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICBEYXRlSW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBkYXRlKTsKICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAg
fQogCiAgICAgICAgIHN0YXRpYyBEYXRlSW5zdGFuY2UqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBEYXRlSW5zdGFu
Y2UqIGluc3RhbmNlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNlPigqZXhlYy0+aGVh
cCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBEYXRlSW5z
dGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RGF0ZUluc3RhbmNl
PigqZXhlYy0+aGVhcCgpKSkgRGF0ZUluc3RhbmNlKGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAg
ICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBE
YXRlUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAg
RGF0ZVByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNlbGw8RGF0ZVByb3RvdHlw
ZT4oKmV4ZWMtPmhlYXAoKSkpIERhdGVQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIERhdGVQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPERhdGVQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBEYXRlUHJvdG90eXBlKGV4ZWMsIHN0
cnVjdHVyZSk7CiAgICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGds
b2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTg3LDcgKzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbiogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IFVTdHJpbmcm
IG1lc3NhZ2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmljdE1vZGVUeXBlRXJyb3JGdW5j
dGlvbiogZnVuY3Rpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpY3RNb2RlVHlwZUVycm9yRnVu
Y3Rpb24+KCpleGVjLT5oZWFwKCkpKSBTdHJpY3RNb2RlVHlwZUVycm9yRnVuY3Rpb24oZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIG1lc3NhZ2UpOworICAgICAgICAgICAgU3RyaWN0TW9kZVR5cGVF
cnJvckZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmlj
dE1vZGVUeXBlRXJyb3JGdW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdE1vZGVUeXBlRXJy
b3JGdW5jdGlvbihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgbWVzc2FnZSk7CiAgICAgICAgICAg
ICBmdW5jdGlvbi0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9i
YWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBF
cnJvckNvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRXJyb3JQcm90b3R5cGUqIGVycm9y
UHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBFcnJvckNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBFcnJvckNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIEVycm9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8RXJyb3JDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEVycm9yQ29uc3RydWN0b3Io
Z2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlz
aENyZWF0aW9uKGV4ZWMsIGVycm9yUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBjb25z
dHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3JJbnN0YW5jZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9ySW5zdGFuY2UuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxNCAr
MzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEVycm9ySW5zdGFuY2Uq
IGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBj
b25zdCBVU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBFcnJvckluc3Rh
bmNlKiBpbnN0YW5jZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEVycm9ySW5zdGFuY2U+KGdsb2JhbERh
dGEuaGVhcCkpIEVycm9ySW5zdGFuY2UoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIEVycm9ySW5zdGFuY2UqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8
RXJyb3JJbnN0YW5jZT4oZ2xvYmFsRGF0YS5oZWFwKSkgRXJyb3JJbnN0YW5jZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgaW5zdGFuY2UtPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIG1lc3NhZ2UpOwogICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBFcnJvckluc3RhbmNlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBtZXNzYWdlKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAobWVzc2FnZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICAgICAgRXJyb3JJ
bnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhl
Yy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5jZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICAgICAgRXJyb3JJbnN0YW5jZSogaW5zdGFuY2UgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxFcnJvckluc3RhbmNlPigqZXhlYy0+aGVhcCgpKSkgRXJyb3JJbnN0YW5j
ZShleGVjLT5nbG9iYWxEYXRhKCksIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgaW5zdGFu
Y2UtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgVVN0cmluZygiIiwgMCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBpbnN0YW5jZTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAkocmV2aXNp
b24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBFcnJvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0
ZUNlbGw8RXJyb3JQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBFcnJvclByb3RvdHlwZShleGVj
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkg
RXJyb3JQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+
ZmluaXNoQ3JlYXRpb24oZXhlYywgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSW50ZXJydXB0ZWRFeGVjdXRp
b25FcnJvciogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICB7Ci0gICAgICAg
IEludGVycnVwdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9yID0gbmV3IChhbGxvY2F0ZUNlbGw8SW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvcj4oZ2xvYmFsRGF0YS5oZWFwKSkgSW50ZXJydXB0ZWRFeGVj
dXRpb25FcnJvcihnbG9iYWxEYXRhKTsKKyAgICAgICAgSW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
ciogZXJyb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yPihnbG9iYWxEYXRhLmhlYXApKSBJbnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yKGdsb2Jh
bERhdGEpOwogICAgICAgICBlcnJvci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAg
ICAgIHJldHVybiBlcnJvcjsKICAgICB9CkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiAgICAgewotICAgICAgICBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IqIGVycm9y
ID0gbmV3IChhbGxvY2F0ZUNlbGw8VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yPihnbG9iYWxEYXRh
LmhlYXApKSBUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3IoZ2xvYmFsRGF0YSk7CisgICAgICAgIFRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvciogZXJyb3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxUZXJtaW5hdGVkRXhlY3V0aW9uRXJyb3I+KGdsb2JhbERhdGEuaGVhcCkpIFRlcm1pbmF0ZWRF
eGVjdXRpb25FcnJvcihnbG9iYWxEYXRhKTsKICAgICAgICAgZXJyb3ItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTAyODA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xODQsMTAgKzE4NCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIEFT
U0VSVChnbG9iYWxEYXRhLmNhblVzZUpJVCgpKTsKICAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGU7CiAgICAgICAgICAgICBpZiAoIWNhbGxUaHVuaykgewotICAgICAgICAg
ICAgICAgIGV4ZWN1dGFibGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihn
bG9iYWxEYXRhLmhlYXApKSBOYXRpdmVFeGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBj
b25zdHJ1Y3Rvcik7CisgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwg
YWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIE5hdGl2ZUV4
ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsKICAgICAgICAgICAg
ICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBKSVRDb2RlKCksIEpJ
VENvZGUoKSwgaW50cmluc2ljKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZXhlY3V0YWJsZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2Jh
bERhdGEuaGVhcCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0
cnVjdG9yKTsKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8TmF0aXZlRXhlY3V0YWJsZT4oZ2xvYmFsRGF0YS5oZWFwKSkgTmF0aXZlRXhlY3V0
YWJsZShnbG9iYWxEYXRhLCBmdW5jdGlvbiwgY29uc3RydWN0b3IpOwogICAgICAgICAgICAgICAg
IGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIEpJVENvZGU6Okhvc3RGdW5j
dGlvbihjYWxsVGh1bmspLCBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oY29uc3RydWN0VGh1bmspLCBp
bnRyaW5zaWMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZ2xvYmFsRGF0YS5oZWFwLmFk
ZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwpAQCAtMTk5LDcgKzE5OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgTmF0aXZlRXhlY3V0YWJsZSogY3JlYXRlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIE5hdGl2ZUZ1
bmN0aW9uIGNvbnN0cnVjdG9yKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpOwotICAgICAgICAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5hdGl2ZUV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVh
cCkpIE5hdGl2ZUV4ZWN1dGFibGUoZ2xvYmFsRGF0YSwgZnVuY3Rpb24sIGNvbnN0cnVjdG9yKTsK
KyAgICAgICAgICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxOYXRpdmVFeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBOYXRpdmVF
eGVjdXRhYmxlKGdsb2JhbERhdGEsIGZ1bmN0aW9uLCBjb25zdHJ1Y3Rvcik7CiAgICAgICAgICAg
ICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIGds
b2JhbERhdGEuaGVhcC5hZGRGaW5hbGl6ZXIoZXhlY3V0YWJsZSwgJmZpbmFsaXplKTsKICAgICAg
ICAgICAgIHJldHVybiBleGVjdXRhYmxlOwpAQCAtMzQ0LDcgKzM0NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHN0YXRpYyBFdmFsRXhlY3V0YWJsZSogY3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBib29sIGlzSW5TdHJpY3RDb250ZXh0KSAK
ICAgICAgICAgewotICAgICAgICAgICAgRXZhbEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxFdmFsRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRh
YmxlKGV4ZWMsIHNvdXJjZSwgaXNJblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgRXZhbEV4
ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxFdmFsRXhl
Y3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIEV2YWxFeGVjdXRhYmxlKGV4ZWMsIHNvdXJjZSwgaXNJ
blN0cmljdENvbnRleHQpOwogICAgICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5oZWFw
LmFkZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwogICAgICAgICAgICAgcmV0dXJu
IGV4ZWN1dGFibGU7CkBAIC0zODUsNyArMzg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgc3RhdGljIFByb2dyYW1FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFByb2dyYW1FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChhbGxvY2F0ZUNlbGw8UHJvZ3JhbUV4ZWN1dGFibGU+
KCpleGVjLT5oZWFwKCkpKSBQcm9ncmFtRXhlY3V0YWJsZShleGVjLCBzb3VyY2UpOworICAgICAg
ICAgICAgUHJvZ3JhbUV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxQcm9ncmFtRXhlY3V0YWJsZT4oKmV4ZWMtPmhlYXAoKSkpIFByb2dyYW1FeGVjdXRh
YmxlKGV4ZWMsIHNvdXJjZSk7CiAgICAgICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmhl
YXAuYWRkRmluYWxpemVyKGV4ZWN1dGFibGUsICZmaW5hbGl6ZSk7CiAgICAgICAgICAgICByZXR1
cm4gZXhlY3V0YWJsZTsKQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgRnVuY3Rpb25FeGVjdXRhYmxlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIGJvb2wgZm9y
Y2VVc2VzQXJndW1lbnRzLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIGJvb2wgaXNJ
blN0cmljdENvbnRleHQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKICAgICAgICAgewot
ICAgICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChhbGxvY2F0
ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25FeGVjdXRh
YmxlKGV4ZWMsIG5hbWUsIHNvdXJjZSwgZm9yY2VVc2VzQXJndW1lbnRzLCBwYXJhbWV0ZXJzLCBp
c0luU3RyaWN0Q29udGV4dCk7CisgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1
dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KCpl
eGVjLT5oZWFwKCkpKSBGdW5jdGlvbkV4ZWN1dGFibGUoZXhlYywgbmFtZSwgc291cmNlLCBmb3Jj
ZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5TdHJpY3RDb250ZXh0KTsKICAgICAgICAg
ICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbmFtZSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CiAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaGVh
cC5hZGRGaW5hbGl6ZXIoZXhlY3V0YWJsZSwgJmZpbmFsaXplKTsKICAgICAgICAgICAgIHJldHVy
biBleGVjdXRhYmxlOwpAQCAtNDYyLDcgKzQ2Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Ym9vbCBmb3JjZVVzZXNBcmd1bWVudHMsIEZ1bmN0aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywg
Ym9vbCBpc0luU3RyaWN0Q29udGV4dCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1dGFibGU+KGdsb2JhbERhdGEuaGVhcCkpIEZ1bmN0
aW9uRXhlY3V0YWJsZShnbG9iYWxEYXRhLCBuYW1lLCBzb3VyY2UsIGZvcmNlVXNlc0FyZ3VtZW50
cywgcGFyYW1ldGVycywgaXNJblN0cmljdENvbnRleHQpOworICAgICAgICAgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rp
b25FeGVjdXRhYmxlPihnbG9iYWxEYXRhLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUoZ2xvYmFs
RGF0YSwgbmFtZSwgc291cmNlLCBmb3JjZVVzZXNBcmd1bWVudHMsIHBhcmFtZXRlcnMsIGlzSW5T
dHJpY3RDb250ZXh0KTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUtPmZpbmlzaENyZWF0aW9uKGds
b2JhbERhdGEsIG5hbWUsIGZpcnN0TGluZSwgbGFzdExpbmUpOwogICAgICAgICAgICAgZ2xvYmFs
RGF0YS5oZWFwLmFkZEZpbmFsaXplcihleGVjdXRhYmxlLCAmZmluYWxpemUpOwogICAgICAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIEZ1bmN0aW9uQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBGdW5jdGlvblByb3Rv
dHlwZSogZnVuY3Rpb25Qcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEZ1bmN0aW9u
Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChhbGxvY2F0ZUNlbGw8RnVuY3Rpb25Db25z
dHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIEZ1bmN0aW9uQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgRnVuY3Rpb25Db25zdHJ1Y3RvciogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkNvbnN0cnVjdG9yPigqZXhl
Yy0+aGVhcCgpKSkgRnVuY3Rpb25Db25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7
CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgZnVuY3Rpb25Q
cm90b3R5cGUpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90
eXBlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uUHJvdG90eXBlKiBjcmVhdGUo
RXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHBy
b3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVh
cCgpKSkgRnVuY3Rpb25Qcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEZ1bmN0aW9uUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgRnVuY3Rpb25Qcm90b3R5
cGUoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5p
c2hDcmVhdGlvbihleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2V0dGVyU2V0dGVyLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dldHRlclNldHRlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBHZXR0ZXJTZXR0ZXIqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gbmV3IChhbGxvY2F0ZUNlbGw8R2V0
dGVyU2V0dGVyPigqZXhlYy0+aGVhcCgpKSkgR2V0dGVyU2V0dGVyKGV4ZWMpOworICAgICAgICAg
ICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxHZXR0ZXJTZXR0ZXI+KCpleGVjLT5oZWFwKCkpKSBHZXR0ZXJTZXR0ZXIoZXhlYyk7CiAgICAg
ICAgICAgICBnZXR0ZXJTZXR0ZXItPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CiAgICAgICAgICAgICByZXR1cm4gZ2V0dGVyU2V0dGVyOwogICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FQSVZhbHVlV3JhcHBlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFsdWVXcmFwcGVyLmgJKHJl
dmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQVBJVmFs
dWVXcmFwcGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSlNBUElWYWx1ZVdyYXBwZXIqIGNyZWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpIAogICAgICAgICB7Ci0gICAgICAgICAgICBK
U0FQSVZhbHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQVBJVmFsdWVX
cmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIoZXhlYyk7CisgICAgICAg
ICAgICBKU0FQSVZhbHVlV3JhcHBlciogd3JhcHBlciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVD
ZWxsPEpTQVBJVmFsdWVXcmFwcGVyPigqZXhlYy0+aGVhcCgpKSkgSlNBUElWYWx1ZVdyYXBwZXIo
ZXhlYyk7CiAgICAgICAgICAgICB3cmFwcGVyLT5maW5pc2hDcmVhdGlvbihleGVjLCB2YWx1ZSk7
CiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwMjgwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBKU0FjdGl2YXRpb24qIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmNFeGVjKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxK
U0FjdGl2YXRpb24+KGdsb2JhbERhdGEuaGVhcCkpIEpTQWN0aXZhdGlvbihjYWxsRnJhbWUsIGZ1
bmNFeGVjKTsKKyAgICAgICAgICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPEpTQWN0aXZhdGlvbj4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBY3Rp
dmF0aW9uKGNhbGxGcmFtZSwgZnVuY0V4ZWMpOwogICAgICAgICAgICAgYWN0aXZhdGlvbi0+Zmlu
aXNoQ3JlYXRpb24oY2FsbEZyYW1lKTsKICAgICAgICAgICAgIHJldHVybiBhY3RpdmF0aW9uOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDI4ICs3NiwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJh
eShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0K
IAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGluaXRpYWxMZW5ndGgsIEFycmF5Q3Jl
YXRpb25Nb2RlIGNyZWF0ZU1vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkqIGFy
cmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNBcnJh
eShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBu
ZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNoQ3Jl
YXRpb24oZ2xvYmFsRGF0YSwgaW5pdGlhbExlbmd0aCwgY3JlYXRlTW9kZSk7CiAgICAgICAgICAg
ICByZXR1cm4gYXJyYXk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3Jl
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0
IEFyZ0xpc3QmIGluaXRpYWxWYWx1ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTQXJyYXkq
IGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNBcnJheT4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNB
cnJheShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBK
U0FycmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBhcnJheS0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSwgaW5pdGlhbFZhbHVlcyk7CiAgICAgICAgICAgICByZXR1cm4g
YXJyYXk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgSlNBcnJheSogY3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEpTVmFsdWUq
IHZhbHVlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgewotICAgICAgICAgICAgSlNBcnJheSog
YXJyYXkgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0FycmF5PihnbG9iYWxEYXRhLmhlYXApKSBKU0Fy
cmF5KGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTQXJyYXk+KGdsb2JhbERhdGEuaGVhcCkpIEpT
QXJyYXkoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGFycmF5LT5maW5pc2hD
cmVhdGlvbihnbG9iYWxEYXRhLCB2YWx1ZXMsIGxlbmd0aCk7CiAgICAgICAgICAgICByZXR1cm4g
YXJyYXk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCBKU0JvdW5kRnVuY3Rpb24qIEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRl
CiAgICAgYm9vbCBjYW5Db25zdHJ1Y3QgPSBjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVO
b25lOwogCiAgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERh
dGEoKS5nZXRIb3N0RnVuY3Rpb24oYm91bmRGdW5jdGlvbkNhbGwsIGNhbkNvbnN0cnVjdCA/IGJv
dW5kRnVuY3Rpb25Db25zdHJ1Y3QgOiBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7Ci0g
ICAgSlNCb3VuZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTQm91bmRG
dW5jdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIEpTQm91bmRGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+Ym91bmRGdW5jdGlvblN0cnVjdHVyZSgpLCB0YXJnZXRGdW5jdGlv
biwgYm91bmRUaGlzLCBib3VuZEFyZ3MpOworICAgIEpTQm91bmRGdW5jdGlvbiogZnVuY3Rpb24g
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0JvdW5kRnVuY3Rpb24+KCpleGVjLT5oZWFw
KCkpKSBKU0JvdW5kRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmJv
dW5kRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgdGFyZ2V0RnVuY3Rpb24sIGJvdW5kVGhpcywgYm91bmRB
cmdzKTsKIAogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBs
ZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtODEsNyArODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBKU0J5dGVBcnJheSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEJ5dGVBcnJheSogc3RvcmFnZSkKICAgICAgICAgewotICAgICAgICAgICAgSlNCeXRl
QXJyYXkqIGFycmF5ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNCeXRlQXJyYXk+KCpleGVjLT5oZWFw
KCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUsIHN0b3JhZ2UpOworICAgICAgICAgICAg
SlNCeXRlQXJyYXkqIGFycmF5ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNCeXRlQXJy
YXk+KCpleGVjLT5oZWFwKCkpKSBKU0J5dGVBcnJheShleGVjLCBzdHJ1Y3R1cmUsIHN0b3JhZ2Up
OwogICAgICAgICAgICAgYXJyYXktPmZpbmlzaENyZWF0aW9uKGV4ZWMpOwogICAgICAgICAgICAg
cmV0dXJuIGFycmF5OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDkgKzY4LDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGVudW0gVlB0clN0ZWFsaW5nSGFja1R5cGUgeyBWUHRyU3RlYWxpbmdI
YWNrIH07CiAgICAgICAgIGV4cGxpY2l0IEpTQ2VsbChWUHRyU3RlYWxpbmdIYWNrVHlwZSkgeyB9
CiAKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQq
IHBsYWNlbWVudE5ld0Rlc3RpbmF0aW9uKSB7IHJldHVybiBwbGFjZW1lbnROZXdEZXN0aW5hdGlv
bjsgfSAvLyBVc2VkIGZvciBpbml0aWFsaXphdGlvbiBhZnRlciBHQyBhbGxvY2F0aW9uLgotCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBKU0NlbGwoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAgICAgICAgIHZpcnR1YWwgfkpTQ2VsbCgpOyAvLyBJbnZva2VkIGJ5IEdDIGZpbmFsaXphdGlv
bi4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3Bw
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBib29sIEpTRnVuY3Rp
b246OmlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lCiBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVu
Z3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlv
biwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCiB7CiAgICAgTmF0aXZlRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24obmF0
aXZlRnVuY3Rpb24sIG5hdGl2ZUNvbnN0cnVjdG9yKTsKLSAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0
aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
KTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBkbyB0
aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBk
byBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGV4
ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uOwpAQCAtNjgsNyAr
NjgsNyBAQCBKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoRXhlY1N0YXRlCiAKIEpTRnVu
Y3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2
ZUV4ZWN1dGFibGUqIG5hdGl2ZUV4ZWN1dGFibGUpCiB7Ci0gICAgSlNGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5j
dGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUo
KSk7CisgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxKU0Z1bmN0aW9uPigqZXhlYy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBnbG9iYWxPYmpl
Y3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgZnVuY3Rpb24tPmZp
bmlzaENyZWF0aW9uKGV4ZWMsIG5hdGl2ZUV4ZWN1dGFibGUsIGxlbmd0aCwgbmFtZSk7CiAgICAg
cmV0dXJuIGZ1bmN0aW9uOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoRXhlY1N0
YXRlKiBleGVjLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlv
biA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KCpleGVjLT5oZWFwKCkpKSBKU0Z1bmN0
aW9uKGV4ZWMsIGV4ZWN1dGFibGUsIHNjb3BlQ2hhaW4pOworICAgICAgICAgICAgSlNGdW5jdGlv
biogZnVuY3Rpb24gPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Z1bmN0aW9uPigqZXhl
Yy0+aGVhcCgpKSkgSlNGdW5jdGlvbihleGVjLCBleGVjdXRhYmxlLCBzY29wZUNoYWluKTsKICAg
ICAgICAgICAgIEFTU0VSVChmdW5jdGlvbi0+c3RydWN0dXJlKCktPmdsb2JhbE9iamVjdCgpKTsK
ICAgICAgICAgICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbihleGVjLCBleGVjdXRhYmxlLCBz
Y29wZUNoYWluKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTAy
ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHN0YXRpYyBKU0dsb2JhbE9iamVjdCogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4o
Z2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxKU0dsb2JhbE9iamVjdD4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNHbG9iYWxP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbFRoaXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbFRoaXMuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxUaGlzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIEpTR2xvYmFsVGhpcyogY3JlYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBKU0dsb2Jh
bFRoaXMqIGdsb2JhbFRoaXMgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU0dsb2JhbFRoaXM+KGdsb2Jh
bERhdGEuaGVhcCkpIEpTR2xvYmFsVGhpcyhnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOworICAgICAg
ICBKU0dsb2JhbFRoaXMqIGdsb2JhbFRoaXMgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxK
U0dsb2JhbFRoaXM+KGdsb2JhbERhdGEuaGVhcCkpIEpTR2xvYmFsVGhpcyhnbG9iYWxEYXRhLCBz
dHJ1Y3R1cmUpOwogICAgICAgICBnbG9iYWxUaGlzLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRh
KTsKICAgICAgICAgcmV0dXJuIGdsb2JhbFRoaXM7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTm90QW5PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNOb3RBbk9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRp
YyBKU05vdEFuT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBKU05vdEFuT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU05vdEFu
T2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgSlNOb3RBbk9iamVjdChleGVjKTsKKyAgICAgICAgICAg
IEpTTm90QW5PYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTTm90
QW5PYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU05vdEFuT2JqZWN0KGV4ZWMpOwogICAgICAgICAg
ICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAg
ICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT05PYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICsz
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBKU09OT2JqZWN0KiBjcmVh
dGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgSlNPTk9iamVjdCogb2JqZWN0
ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTT05PYmpl
Y3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgSlNPTk9iamVjdCogb2Jq
ZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNPTk9iamVjdD4oKmV4ZWMtPmhlYXAo
KSkpIEpTT05PYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG9i
amVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICAKICAgICAgICAgc3RhdGlj
IEpTRmluYWxPYmplY3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU0ZpbmFsT2JqZWN0KiBmaW5hbE9iamVjdCA9
IG5ldyAoYWxsb2NhdGVDZWxsPEpTRmluYWxPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU0ZpbmFs
T2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIEpTRmlu
YWxPYmplY3QqIGZpbmFsT2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGaW5h
bE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIEpTRmluYWxPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgZmluYWxPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmluYWxPYmplY3Q7CiAgICAg
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTgsNyArNTgsNyBAQCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3Bl
cnR5TmFtZUl0CiAgICAgICAgICYmICFvLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSAmJiAhby0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcygpKQogICAgICAgICBudW1DYWNoZWFibGVTbG90cyA9IG8tPnN0cnVjdHVyZSgpLT5w
cm9wZXJ0eVN0b3JhZ2VTaXplKCk7CiAgICAgCi0gICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHBy
b3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90cyk7CisgICAgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFtZXMuZGF0YSgpLCBudW1DYWNoZWFibGVTbG90
cyk7CiAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJv
cGVydHlOYW1lcy5kYXRhKCkpOwogCiAgICAgaWYgKG8tPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU09iamVjdCopOwogICAgICAg
ICBzdGF0aWMgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1D
YWNoZWFibGVTbG90KQogICAgICAgICB7Ci0gICAgICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKiBpdGVyYXRvciA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTUHJvcGVydHlOYW1lSXRlcmF0b3I+
KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4ZWMsIHByb3BlcnR5TmFt
ZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CisgICAgICAgICAgICBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKiBpdGVyYXRvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I+KCpleGVjLT5oZWFwKCkpKSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKGV4
ZWMsIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgbnVtQ2FjaGVhYmxlU2xvdCk7CiAgICAgICAgICAg
ICBpdGVyYXRvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgcHJvcGVydHlOYW1lQXJyYXlEYXRhKTsK
ICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNTY29wZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RhdGljU2NvcGVPYmplY3QuaAkocmV2
aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdGF0aWNT
Y29wZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBK
U0N7CiAKICAgICAgICAgc3RhdGljIEpTU3RhdGljU2NvcGVPYmplY3QqIGNyZWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIHNjb3BlT2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdGF0aWNTY29wZU9iamVj
dD4oKmV4ZWMtPmhlYXAoKSkpIEpTU3RhdGljU2NvcGVPYmplY3QoZXhlYyk7CisgICAgICAgICAg
ICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBzY29wZU9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2Nh
dGVDZWxsPEpTU3RhdGljU2NvcGVPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBKU1N0YXRpY1Njb3Bl
T2JqZWN0KGV4ZWMpOwogICAgICAgICAgICAgc2NvcGVPYmplY3QtPmZpbmlzaENyZWF0aW9uKGV4
ZWMsIGlkZW50aWZpZXIsIHZhbHVlLCBhdHRyaWJ1dGVzKTsKICAgICAgICAgICAgIHJldHVybiBz
Y29wZU9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDcg
QEAgVVN0cmluZyBKU1N0cmluZzo6dG9TdHJpbmcoRXhlY1N0YXRlKiBleAogCiBpbmxpbmUgU3Ry
aW5nT2JqZWN0KiBTdHJpbmdPYmplY3Q6OmNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcpCiB7Ci0gICAgU3RyaW5nT2Jq
ZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFw
KCkpKSBTdHJpbmdPYmplY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnN0cmlu
Z09iamVjdFN0cnVjdHVyZSgpKTsKKyAgICBTdHJpbmdPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ09iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFN0cmluZ09i
amVjdChleGVjLT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+c3RyaW5nT2JqZWN0U3RydWN0
dXJlKCkpOwogICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJpbmcpOwogICAgIHJldHVybiBvYmplY3Q7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw3ICsxNjEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgSlNTdHJpbmcqIGNyZWF0ZU51
bGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7Ci0gICAgICAgICAgICBKU1N0
cmluZyogbmV3U3RyaW5nID0gbmV3IChhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+KGdsb2JhbERhdGEu
aGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEpOworICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0
cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhl
YXApKSBKU1N0cmluZyhnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIG5ld1N0cmluZy0+ZmluaXNo
Q3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAg
ICAgICB9CkBAIC0xNzIsMTkgKzE3MiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IEFTU0VSVCh2YWx1ZSk7CiAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gdmFsdWUtPmxlbmd0
aCgpOwogICAgICAgICAgICAgc2l6ZV90IGNvc3QgPSB2YWx1ZS0+Y29zdCgpOwotICAgICAgICAg
ICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9i
YWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CisgICAgICAgICAgICBK
U1N0cmluZyogbmV3U3RyaW5nID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJpbmc+
KGdsb2JhbERhdGEuaGVhcCkpIEpTU3RyaW5nKGdsb2JhbERhdGEsIHZhbHVlKTsKICAgICAgICAg
ICAgIG5ld1N0cmluZy0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgbGVuZ3RoLCBjb3N0KTsK
ICAgICAgICAgICAgIHJldHVybiBuZXdTdHJpbmc7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGlj
IEpTU3RyaW5nKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1N0cmluZyogczEs
IEpTU3RyaW5nKiBzMikKICAgICAgICAgewotICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmlu
ZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmlu
ZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmco
Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBuZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bERhdGEsIHMxLCBzMik7CiAgICAgICAgICAgICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9
CiAgICAgICAgIHN0YXRpYyBKU1N0cmluZyogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgSlNTdHJpbmcqIHMxLCBKU1N0cmluZyogczIsIEpTU3RyaW5nKiBzMykKICAgICAgICAgewot
ICAgICAgICAgICAgSlNTdHJpbmcqIG5ld1N0cmluZyA9IG5ldyAoYWxsb2NhdGVDZWxsPEpTU3Ry
aW5nPihnbG9iYWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhKTsKKyAgICAgICAgICAg
IEpTU3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmlu
Zz4oZ2xvYmFsRGF0YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHMxLCBzMiwgczMpOwogICAgICAg
ICAgICAgcmV0dXJuIG5ld1N0cmluZzsKICAgICAgICAgfQpAQCAtMTkyLDcgKzE5Miw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUpOwogICAg
ICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHZhbHVlLT5sZW5ndGgoKTsKLSAgICAgICAgICAgIEpT
U3RyaW5nKiBuZXdTdHJpbmcgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKU1N0cmluZz4oZ2xvYmFsRGF0
YS5oZWFwKSkgSlNTdHJpbmcoZ2xvYmFsRGF0YSwgdmFsdWUpOworICAgICAgICAgICAgSlNTdHJp
bmcqIG5ld1N0cmluZyA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nPihnbG9i
YWxEYXRhLmhlYXApKSBKU1N0cmluZyhnbG9iYWxEYXRhLCB2YWx1ZSk7CiAgICAgICAgICAgICBu
ZXdTdHJpbmctPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGxlbmd0aCk7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3U3RyaW5nOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXRoT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWF0aE9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcg
KzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIE1hdGhPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICBNYXRoT2JqZWN0KiBvYmpl
Y3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgTWF0aE9i
amVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBNYXRoT2JqZWN0KiBv
YmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxNYXRoT2JqZWN0PigqZXhlYy0+aGVh
cCgpKSkgTWF0aE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBv
YmplY3QtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBy
ZXR1cm4gb2JqZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgc3RhdGljIE5hdGl2ZUVycm9yQ29uc3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSwgY29uc3QgVVN0cmluZyYgbmFtZSkKICAg
ICAgICAgewotICAgICAgICAgICAgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICBOYXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPE5hdGl2ZUVycm9yQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZVN0cnVjdHVyZSwgbmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9y
UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZlRXJyb3JQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgTmF0aXZl
RXJyb3JQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBVU3RyaW5nJiBuYW1lLCBO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvcikKICAgICAgICAgewotICAgICAgICAg
ICAgTmF0aXZlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPE5h
dGl2ZUVycm9yUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgTmF0aXZlRXJyb3JQcm90b3R5cGUo
ZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90
b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxOYXRpdmVFcnJvclByb3RvdHlwZT4o
KmV4ZWMtPmhlYXAoKSkpIE5hdGl2ZUVycm9yUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CiAg
ICAgICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwg
bmFtZSwgY29uc3RydWN0b3IpOwogICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJD
b25zdHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBOdW1iZXJDb25zdHJ1Y3Rvciog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBOdW1iZXJDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcg
KGFsbG9jYXRlQ2VsbDxOdW1iZXJDb25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIE51bWJlckNv
bnN0cnVjdG9yKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE51bWJlckNv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE51bWJl
ckNvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgTnVtYmVyQ29uc3RydWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9u
KGV4ZWMsIG51bWJlclByb3RvdHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7
CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlck9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
ck9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OdW1iZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgTnVtYmVyT2JqZWN0KiBjcmVhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgewotICAg
ICAgICAgICAgTnVtYmVyT2JqZWN0KiBudW1iZXIgPSBuZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJP
YmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgTnVtYmVyT2JqZWN0KiBudW1iZXIgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxOdW1iZXJPYmplY3Q+KGdsb2JhbERhdGEuaGVhcCkpIE51bWJlck9iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgbnVtYmVyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIHJldHVybiBudW1iZXI7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1i
ZXJQcm90b3R5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBzdGF0aWMgTnVtYmVyUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRl
KiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICAgICAgewotICAgICAgICAgICAgTnVtYmVyUHJvdG90eXBlKiBwcm90b3R5cGUgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxOdW1iZXJQcm90b3R5cGU+KCpleGVjLT5oZWFwKCkpKSBOdW1iZXJQ
cm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIE51bWJlclByb3RvdHlwZSog
cHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8TnVtYmVyUHJvdG90eXBlPigq
ZXhlYy0+aGVhcCgpKSkgTnVtYmVyUHJvdG90eXBlKGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDEw
MjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIE9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgT2JqZWN0
UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIE9iamVj
dENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPE9iamVjdENvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgT2JqZWN0Q29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgT2JqZWN0Q29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8T2JqZWN0Q29uc3RydWN0b3I+KCpleGVjLT5oZWFw
KCkpKSBPYmplY3RDb25zdHJ1Y3RvcihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAg
ICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24oZXhlYywgb2JqZWN0UHJvdG90eXBlKTsK
ICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmgJKHJldmlzaW9u
IDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHN0YXRpYyBPYmplY3RQcm90b3R5cGUqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBPYmplY3RQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2Nh
dGVDZWxsPE9iamVjdFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIE9iamVjdFByb3RvdHlwZShl
eGVjLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBwcm90b3R5cGUg
PSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmplY3RQcm90b3R5cGU+KCpleGVjLT5oZWFw
KCkpKSBPYmplY3RQcm90b3R5cGUoZXhlYywgc3RydWN0dXJlKTsKICAgICAgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTcsNyArMjU3LDcgQEAgUmVnRXhwOjp+UmVnRXhwKCkKIAogUmVnRXhwKiBSZWdFeHA6OmNyZWF0
ZVdpdGhvdXRDYWNoaW5nKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgVVN0cmluZyYg
cGF0dGVyblN0cmluZywgUmVnRXhwRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgUmVnRXhwKiByZWdFeHAg
PSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHA+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cChnbG9i
YWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CisgICAgUmVnRXhwKiByZWdFeHAgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxSZWdFeHA+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cChn
bG9iYWxEYXRhLCBwYXR0ZXJuU3RyaW5nLCBmbGFncyk7CiAgICAgcmVnRXhwLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhKTsKICAgICByZXR1cm4gcmVnRXhwOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5oCShyZXZpc2lv
biAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1
Y3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIHN0YXRpYyBSZWdFeHBDb25zdHJ1Y3RvciogY3JlYXRlKEV4ZWNTdGF0ZSogZXhl
YywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJl
Z0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBS
ZWdFeHBDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBD
b25zdHJ1Y3Rvcj4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cENvbnN0cnVjdG9yKGdsb2JhbE9iamVj
dCwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFJlZ0V4cENvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFJlZ0V4cENvbnN0cnVjdG9yPigqZXhlYy0+
aGVhcCgpKSkgUmVnRXhwQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwogICAg
ICAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIHJlZ0V4cFByb3RvdHlw
ZSk7CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5o
CShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBNYXRjaGVzQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgUmVnRXhwTWF0Y2hlc0FycmF5KiBjcmVhdGUoRXhl
Y1N0YXRlKiBleGVjLCBSZWdFeHBDb25zdHJ1Y3RvclByaXZhdGUqIGN0b3JQcml2YXRlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBSZWdFeHBNYXRjaGVzQXJyYXkqIHJlZ0V4cCA9IG5ldyAoYWxs
b2NhdGVDZWxsPFJlZ0V4cE1hdGNoZXNBcnJheT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE1hdGNo
ZXNBcnJheShleGVjKTsKKyAgICAgICAgICAgIFJlZ0V4cE1hdGNoZXNBcnJheSogcmVnRXhwID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwTWF0Y2hlc0FycmF5PigqZXhlYy0+aGVh
cCgpKSkgUmVnRXhwTWF0Y2hlc0FycmF5KGV4ZWMpOwogICAgICAgICAgICAgcmVnRXhwLT5maW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGN0b3JQcml2YXRlKTsKICAgICAgICAgICAg
IHJldHVybiByZWdFeHA7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1JlZ0V4cE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTQgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmpl
Y3QqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAg
ICAgICAgUmVnRXhwT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmpl
Y3Q+KCpleGVjLT5oZWFwKCkpKSBSZWdFeHBPYmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUs
IHJlZ0V4cCk7CisgICAgICAgICAgICBSZWdFeHBPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFJlZ0V4cE9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cE9iamVj
dChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwgcmVnRXhwKTsKICAgICAgICAgICAgIG9iamVjdC0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIHJldHVybiBvYmplY3Q7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBSZWdFeHBPYmplY3QqIGNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBSZWdFeHAqIHJlZ0V4cCkKICAgICAgICAgewotICAgICAg
ICAgICAgUmVnRXhwT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSZWdFeHBPYmpl
Y3Q+KGdsb2JhbERhdGEuaGVhcCkpIFJlZ0V4cE9iamVjdChnbG9iYWxPYmplY3QsIHN0cnVjdHVy
ZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIFJlZ0V4cE9iamVjdCogb2JqZWN0ID0gbmV3IChOb3RO
dWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwT2JqZWN0PihnbG9iYWxEYXRhLmhlYXApKSBSZWdFeHBP
YmplY3QoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIHJlZ0V4cCk7CiAgICAgICAgICAgICBvYmpl
Y3QtPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gb2Jq
ZWN0OwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFJlZ0V4cFByb3RvdHlw
ZSogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFJlZ0V4cCogcmVnRXhwKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBSZWdFeHBQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoYWxsb2NhdGVDZWxsPFJlZ0V4
cFByb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkpIFJlZ0V4cFByb3RvdHlwZShnbG9iYWxPYmplY3Qs
IHN0cnVjdHVyZSwgcmVnRXhwKTsKKyAgICAgICAgICAgIFJlZ0V4cFByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UmVnRXhwUHJvdG90eXBlPigqZXhlYy0+
aGVhcCgpKSkgUmVnRXhwUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCByZWdFeHAp
OwogICAgICAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwog
ICAgICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OSwxMyArNTksMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFNj
b3BlQ2hhaW5Ob2RlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogbmV4
dCwgSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogZ2xvYmFsVGhpcykKICAgICAgICAgewotICAg
ICAgICAgICAgU2NvcGVDaGFpbk5vZGUqIG5vZGUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxTY29wZUNo
YWluTm9kZT4oKmV4ZWMtPmhlYXAoKSkpIFNjb3BlQ2hhaW5Ob2RlKG5leHQsIG9iamVjdCwgZ2xv
YmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxUaGlzKTsKKyAgICAgICAgICAgIFNjb3BlQ2hh
aW5Ob2RlKiBub2RlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U2NvcGVDaGFpbk5vZGU+
KCpleGVjLT5oZWFwKCkpKSBTY29wZUNoYWluTm9kZShuZXh0LCBvYmplY3QsIGdsb2JhbERhdGEs
IGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CiAgICAgICAgICAgICBub2RlLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFNjb3BlQ2hhaW5Ob2RlKiBjcmVhdGUoU2NvcGVD
aGFpbk5vZGUqIG5leHQsIEpTT2JqZWN0KiBvYmplY3QsIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGdsb2JhbFRoaXMpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFNjb3BlQ2hhaW5Ob2RlKiBub2RlID0gbmV3IChhbGxvY2F0
ZUNlbGw8U2NvcGVDaGFpbk5vZGU+KGdsb2JhbERhdGEtPmhlYXApKSBTY29wZUNoYWluTm9kZShu
ZXh0LCBvYmplY3QsIGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZ2xvYmFsVGhpcyk7CisgICAg
ICAgICAgICBTY29wZUNoYWluTm9kZSogbm9kZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFNjb3BlQ2hhaW5Ob2RlPihnbG9iYWxEYXRhLT5oZWFwKSkgU2NvcGVDaGFpbk5vZGUobmV4dCwg
b2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGdsb2JhbFRoaXMpOwogICAgICAgICAg
ICAgbm9kZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0KTsKICAgICAg
ICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEw
MjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmljdEV2YWxBY3RpdmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIFN0cmljdEV2YWxBY3RpdmF0aW9uKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHsK
LSAgICAgICAgU3RyaWN0RXZhbEFjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJpY3RFdmFsQWN0aXZhdGlvbj4oKmV4ZWMtPmhlYXAoKSkpIFN0cmljdEV2YWxBY3Rp
dmF0aW9uKGV4ZWMpOworICAgICAgICBTdHJpY3RFdmFsQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmljdEV2YWxBY3RpdmF0aW9uPigqZXhlYy0+
aGVhcCgpKSkgU3RyaWN0RXZhbEFjdGl2YXRpb24oZXhlYyk7CiAgICAgICAgIGFjdGl2YXRpb24t
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgIHJldHVybiBhY3Rp
dmF0aW9uOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z0NvbnN0cnVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgU3RyaW5nQ29u
c3RydWN0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgU3RyaW5nUHJvdG90eXBlKiBzdHJpbmdQcm90
b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ0NvbnN0cnVjdG9yKiBjb25zdHJ1
Y3RvciA9IG5ldyAoYWxsb2NhdGVDZWxsPFN0cmluZ0NvbnN0cnVjdG9yPigqZXhlYy0+aGVhcCgp
KSkgU3RyaW5nQ29uc3RydWN0b3IoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgU3RyaW5nQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RyaW5nQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdDb25zdHJ1Y3Rv
cihnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBjb25zdHJ1Y3Rvci0+Zmlu
aXNoQ3JlYXRpb24oZXhlYywgc3RyaW5nUHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybiBj
b25zdHJ1Y3RvcjsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RyaW5nT2JqZWN0LmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMyAr
MzUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBTdHJpbmdPYmplY3QqIGNy
ZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNFbXB0eVN0cmluZyhleGVjKTsKLSAgICAg
ICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2Jq
ZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3Ry
dWN0dXJlKTsgIAorICAgICAgICAgICAgU3RyaW5nT2JqZWN0KiBvYmplY3QgPSBuZXcgKE5vdE51
bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdPYmplY3Q+KCpleGVjLT5oZWFwKCkpKSBTdHJpbmdPYmpl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzdHJ1Y3R1cmUpOyAgCiAgICAgICAgICAgICBvYmplY3Qt
PmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RyaW5nKTsKICAgICAgICAgICAg
IHJldHVybiBvYmplY3Q7CiAgICAgICAgIH0KICAgICAgICAgc3RhdGljIFN0cmluZ09iamVjdCog
Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBz
dHJpbmcpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZ09iamVjdCogb2JqZWN0ID0gbmV3
IChhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIFN0cmluZ09iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nT2JqZWN0PigqZXhl
Yy0+aGVhcCgpKSkgU3RyaW5nT2JqZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgc3RydWN0dXJlKTsK
ICAgICAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
dHJpbmcpOwogICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmgJKHJldmlz
aW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgU3RyaW5nUHJvdG90eXBlKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgewogICAgICAgICAgICAgSlNTdHJpbmcqIGVtcHR5ID0ganNFbXB0eVN0cmluZyhleGVjKTsK
LSAgICAgICAgICAgIFN0cmluZ1Byb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChhbGxvY2F0ZUNl
bGw8U3RyaW5nUHJvdG90eXBlPigqZXhlYy0+aGVhcCgpKSkgU3RyaW5nUHJvdG90eXBlKGV4ZWMs
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBTdHJpbmdQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ1Byb3RvdHlwZT4oKmV4ZWMtPmhlYXAoKSkp
IFN0cmluZ1Byb3RvdHlwZShleGVjLCBzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgcHJvdG90eXBl
LT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QsIGVtcHR5KTsKICAgICAgICAgICAg
IHJldHVybiBwcm90b3R5cGU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKICAgICAgICAgICAgIEFTU0VSVChjbGFzc0luZm8p
OwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKGFsbG9jYXRlQ2VsbDxT
dHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhLCBnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgdHlwZUluZm8sIGNsYXNzSW5mbyk7CisgICAgICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4o
Z2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCB0eXBlSW5mbywgY2xhc3NJbmZvKTsKICAgICAgICAgICAgIHN0cnVjdHVyZS0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlOwog
ICAgICAgICB9CkBAIC0xODgsNyArMTg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCghZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1
Y3R1cmUpOwotICAgICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBuZXcgKGFsbG9jYXRl
Q2VsbDxTdHJ1Y3R1cmU+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZShnbG9iYWxEYXRhKTsK
KyAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSk7
CiAgICAgICAgICAgICBzdHJ1Y3R1cmUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIENyZWF0
aW5nRWFybHlDZWxsKTsKICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7CiAgICAgICAgIH0K
QEAgLTIwMyw3ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnbG9iYWxEYXRhLnN0cnVj
dHVyZVN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5l
dyAoYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVy
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFw
KSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAgICAgICAgICAgICBuZXdTdHJ1
Y3R1cmUtPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOwogICAgICAgICAgICAgcmV0dXJuIG5l
d1N0cnVjdHVyZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVD
aGFpbiogY3JlYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBoZWFkKQog
ICAgICAgICB7IAotICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChhbGxv
Y2F0ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWlu
KGdsb2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCkpOwor
ICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0
ZUNlbGw8U3RydWN0dXJlQ2hhaW4+KGdsb2JhbERhdGEuaGVhcCkpIFN0cnVjdHVyZUNoYWluKGds
b2JhbERhdGEsIGdsb2JhbERhdGEuc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmUuZ2V0KCkpOwogICAg
ICAgICAgICAgY2hhaW4tPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIGhlYWQpOwogICAgICAg
ICAgICAgcmV0dXJuIGNoYWluOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL0JpdFZlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9CaXRWZWN0b3IuY3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0JpdFZlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAg
Qml0VmVjdG9yOjpPdXRPZkxpbmVCaXRzKiBCaXRWZWN0b3I6Ok91dAogewogICAgIG51bUJpdHMg
PSAobnVtQml0cyArIGJpdHNJblBvaW50ZXIoKSAtIDEpICYgfihiaXRzSW5Qb2ludGVyKCkgLSAx
KTsKICAgICBzaXplX3Qgc2l6ZSA9IHNpemVvZihPdXRPZkxpbmVCaXRzKSArIHNpemVvZih1aW50
cHRyX3QpICogKG51bUJpdHMgLyBiaXRzSW5Qb2ludGVyKCkpOwotICAgIE91dE9mTGluZUJpdHMq
IHJlc3VsdCA9IG5ldyAoZmFzdE1hbGxvYyhzaXplKSkgT3V0T2ZMaW5lQml0cyhudW1CaXRzKTsK
KyAgICBPdXRPZkxpbmVCaXRzKiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGZhc3RNYWxsb2Moc2l6
ZSkpIE91dE9mTGluZUJpdHMobnVtQml0cyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9pbnRlckFsbG9jYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQnVtcFBvaW50ZXJBbGxvY2F0b3Iu
aAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9CdW1wUG9p
bnRlckFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0
ZToKIAogICAgICAgICBQYWdlQWxsb2NhdGlvbiBhbGxvY2F0aW9uID0gUGFnZUFsbG9jYXRpb246
OmFsbG9jYXRlKHBvb2xTaXplKTsKICAgICAgICAgaWYgKCEhYWxsb2NhdGlvbikKLSAgICAgICAg
ICAgIHJldHVybiBuZXcoYWxsb2NhdGlvbikgQnVtcFBvaW50ZXJQb29sKGFsbG9jYXRpb24pOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGlvbikgQnVtcFBvaW50ZXJQb29sKGFsbG9j
YXRpb24pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0J5dGVBcnJheS5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQnl0ZUFycmF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gQnl0ZUFycmF5OjpjcmVhdGUoCiB7CiAgICAgdW5z
aWduZWQgY2hhciogYnVmZmVyID0gbmV3IHVuc2lnbmVkIGNoYXJbc2l6ZSArIE9CSkVDVF9PRkZT
RVRPRihCeXRlQXJyYXksIG1fZGF0YSldOwogICAgIEFTU0VSVCgocmVpbnRlcnByZXRfY2FzdDxz
aXplX3Q+KGJ1ZmZlcikgJiAzKSA9PSAwKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IChidWZm
ZXIpIEJ5dGVBcnJheShzaXplKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoTm90TnVsbCwg
YnVmZmVyKSBCeXRlQXJyYXkoc2l6ZSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL0RlcXVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9EZXF1ZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0RlcXVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw3ICs0NTQsNyBAQCBuYW1lc3BhY2UgV1RG
IHsKICAgICB7CiAgICAgICAgIGNoZWNrVmFsaWRpdHkoKTsKICAgICAgICAgZXhwYW5kQ2FwYWNp
dHlJZk5lZWRlZCgpOwotICAgICAgICBuZXcgKCZtX2J1ZmZlci5idWZmZXIoKVttX2VuZF0pIFQo
dmFsdWUpOworICAgICAgICBuZXcgKE5vdE51bGwsICZtX2J1ZmZlci5idWZmZXIoKVttX2VuZF0p
IFQodmFsdWUpOwogICAgICAgICBpZiAobV9lbmQgPT0gbV9idWZmZXIuY2FwYWNpdHkoKSAtIDEp
CiAgICAgICAgICAgICBtX2VuZCA9IDA7CiAgICAgICAgIGVsc2UKQEAgLTQ3MSw3ICs0NzEsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIG1fc3RhcnQgPSBtX2J1ZmZlci5jYXBhY2l0
eSgpIC0gMTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgLS1tX3N0YXJ0OwotICAgICAgICBu
ZXcgKCZtX2J1ZmZlci5idWZmZXIoKVttX3N0YXJ0XSkgVCh2YWx1ZSk7CisgICAgICAgIG5ldyAo
Tm90TnVsbCwgJm1fYnVmZmVyLmJ1ZmZlcigpW21fc3RhcnRdKSBUKHZhbHVlKTsKICAgICAgICAg
Y2hlY2tWYWxpZGl0eSgpOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0QWxsb2NCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9GYXN0QWxsb2NCYXNlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvRmFzdEFsbG9jQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MCw2ICs5MCw3IEBA
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgogI2luY2x1ZGUg
IkZhc3RNYWxsb2MuaCIKKyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKICNpbmNsdWRlICJUeXBl
VHJhaXRzLmgiCiAKICNkZWZpbmUgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQgXApAQCAtMTIyLDYg
KzEyMywxMSBAQCBwdWJsaWM6IFwKICAgICAgICAgIDo6V1RGOjpmYXN0TWFsbG9jTWF0Y2hWYWxp
ZGF0ZUZyZWUocCwgOjpXVEY6OkludGVybmFsOjpBbGxvY1R5cGVDbGFzc05ld0FycmF5KTsgXAog
ICAgICAgICAgOjpXVEY6OmZhc3RGcmVlKHApOyBcCiAgICAgfSBcCisgICAgdm9pZCogb3BlcmF0
b3IgbmV3KHNpemVfdCwgTm90TnVsbFRhZywgdm9pZCogbG9jYXRpb24pIFwKKyAgICB7IFwKKyAg
ICAgICAgQVNTRVJUKGxvY2F0aW9uKTsgXAorICAgICAgICByZXR1cm4gbG9jYXRpb247IFwKKyAg
ICB9IFwKIHByaXZhdGU6IFwKIHR5cGVkZWYgaW50IFRoaXNJc0hlcmVUb0ZvcmNlQVNlbWljb2xv
bkFmdGVyVGhpc01hY3JvCiAKQEAgLTEzOCw3ICsxNDQsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAg
ICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFs
bG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsKLSAgICAgICAgcmV0dXJuIDo6bmV3
KHApIFQ7CisgICAgICAgIHJldHVybiA6Om5ldyAocCkgVDsKICAgICB9CiAKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMT4KQEAgLTE1MCw3ICsxNTYsNyBAQCBuYW1lc3Bh
Y2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGZhc3RNYWxsb2NNYXRj
aFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsKLSAgICAgICAg
cmV0dXJuIDo6bmV3KHApIFQoYXJnMSk7CisgICAgICAgIHJldHVybiA6Om5ldyAocCkgVChhcmcx
KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlw
ZW5hbWUgQXJnMj4KQEAgLTE2Miw3ICsxNjgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAs
IEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsKLSAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQo
YXJnMSwgYXJnMik7CisgICAgICAgIHJldHVybiA6Om5ldyAocCkgVChhcmcxLCBhcmcyKTsKICAg
ICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUg
QXJnMiwgdHlwZW5hbWUgQXJnMz4KQEAgLTE3NCw3ICsxODAsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRl
TWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsKLSAgICAgICAgcmV0dXJuIDo6
bmV3KHApIFQoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgICAgIHJldHVybiA6Om5ldyAocCkgVChh
cmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgQXJnMywgdHlwZW5hbWUgQXJnND4K
QEAgLTE4Niw3ICsxOTIsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybiAw
OwogCiAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpB
bGxvY1R5cGVGYXN0TmV3KTsKLSAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQoYXJnMSwgYXJnMiwg
YXJnMywgYXJnNCk7CisgICAgICAgIHJldHVybiA6Om5ldyAocCkgVChhcmcxLCBhcmcyLCBhcmcz
LCBhcmc0KTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJn
MSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgQXJnMywgdHlwZW5hbWUgQXJnNCwgdHlwZW5hbWUg
QXJnNT4KQEAgLTE5OCw3ICsyMDQsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgICAgIGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVy
bmFsOjpBbGxvY1R5cGVGYXN0TmV3KTsKLSAgICAgICAgcmV0dXJuIDo6bmV3KHApIFQoYXJnMSwg
YXJnMiwgYXJnMywgYXJnNCwgYXJnNSk7CisgICAgICAgIHJldHVybiA6Om5ldyAocCkgVChhcmcx
LCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1KTsKICAgICB9CiAKICAgICBuYW1lc3BhY2UgSW50ZXJu
YWwgewpAQCAtMjQ0LDcgKzI1MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgICAg
IGZhc3RNYWxsb2NNYXRjaFZhbGlkYXRlTWFsbG9jKHAsIEludGVybmFsOjpBbGxvY1R5cGVGYXN0
TmV3QXJyYXkpOwogCiAgICAgICAgICAgICAgICAgZm9yIChUKiBwT2JqZWN0ID0gcCwgKnBPYmpl
Y3RFbmQgPSBwT2JqZWN0ICsgY291bnQ7IHBPYmplY3QgIT0gcE9iamVjdEVuZDsgKytwT2JqZWN0
KQotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwT2JqZWN0KSBUOworICAgICAgICAgICAgICAg
ICAgICA6Om5ldyAocE9iamVjdCkgVDsKIAogICAgICAgICAgICAgICAgIHJldHVybiBwOwogICAg
ICAgICAgICAgfQpAQCAtMjg2LDcgKzI5Miw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAg
ICAgICAgICphLnNpemUrKyA9IGNvdW50OwogCiAgICAgICAgICAgICAgICAgZm9yIChUKiBwVCA9
IGEudCwgKnBURW5kID0gcFQgKyBjb3VudDsgcFQgIT0gcFRFbmQ7ICsrcFQpCi0gICAgICAgICAg
ICAgICAgICAgIDo6bmV3KHBUKSBUOworICAgICAgICAgICAgICAgICAgICA6Om5ldyAocFQpIFQ7
CiAKICAgICAgICAgICAgICAgICByZXR1cm4gYS50OwogICAgICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0hhc2hUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NDEs
NyArNjQxLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRh
YmxlQnVja2V0SW5pdGlhbGl6ZXI8ZmFsc2U+IHsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VHJhaXRzLCB0eXBlbmFtZSBWYWx1ZT4gc3RhdGljIHZvaWQgaW5pdGlhbGl6ZShWYWx1ZSYgYnVj
a2V0KQogICAgICAgICB7Ci0gICAgICAgICAgICBuZXcgKCZidWNrZXQpIFZhbHVlKFRyYWl0czo6
ZW1wdHlWYWx1ZSgpKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJmJ1Y2tldCkgVmFsdWUo
VHJhaXRzOjplbXB0eVZhbHVlKCkpOwogICAgICAgICB9CiAgICAgfTsKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9IYXNoVHJhaXRzLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvSGFzaFRyYWl0cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2
ICsyMiw3IEBACiAjZGVmaW5lIFdURl9IYXNoVHJhaXRzX2gKIAogI2luY2x1ZGUgIkhhc2hGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlICJTdGRMaWJFeHRyYXMuaCIKICNpbmNsdWRlICJUeXBlVHJhaXRz
LmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDxsaW1pdHM+CkBAIC0xMDUsNyArMTA2
LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
U2ltcGxlQ2xhc3NIYXNoVHJhaXRzIDogR2VuZXJpY0hhc2hUcmFpdHM8VD4gewogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLSAgICAgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFQmIHNsb3QpIHsgbmV3ICgmc2xvdCkgVChIYXNo
VGFibGVEZWxldGVkVmFsdWUpOyB9CisgICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShUJiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIFQoSGFzaFRhYmxlRGVsZXRl
ZFZhbHVlKTsgfQogICAgICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBUJiB2
YWx1ZSkgeyByZXR1cm4gdmFsdWUuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogICAgIH07
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvTWV0YUFsbG9jYXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2NhdG9yLmNwcAko
cmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9NZXRhQWxsb2Nh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk3LDcgKzM5Nyw3IEBAIE1ldGFBbGxvY2F0b3I6
OkZyZWVTcGFjZU5vZGUqIE1ldGFBbGxvY2EKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9tYWxsb2NC
YWxhbmNlKys7CiAjZW5kaWYKLSAgICByZXR1cm4gbmV3IChmYXN0TWFsbG9jKHNpemVvZihGcmVl
U3BhY2VOb2RlKSkpIEZyZWVTcGFjZU5vZGUoMCwgMCk7CisgICAgcmV0dXJuIG5ldyAoTm90TnVs
bCwgZmFzdE1hbGxvYyhzaXplb2YoRnJlZVNwYWNlTm9kZSkpKSBGcmVlU3BhY2VOb2RlKDAsIDAp
OwogfQogCiB2b2lkIE1ldGFBbGxvY2F0b3I6OmZyZWVGcmVlU3BhY2VOb2RlKEZyZWVTcGFjZU5v
ZGUqIG5vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1N0ZExpYkV4dHJhcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0cmFzLmgJ
KHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU3RkTGliRXh0
cmFzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsMTQgQEAgaW5saW5lIEFycmF5RWxl
bWVudFR5cGUqIGdlbmVyaWNCaW5hcnlTZQogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIAorLy8gVGhp
cyB2ZXJzaW9uIG9mIHBsYWNlbWVudCBuZXcgb21pdHMgYSAwIGNoZWNrLgorZW51bSBOb3ROdWxs
VGFnIHsgTm90TnVsbCB9OworaW5saW5lIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIE5vdE51
bGxUYWcsIHZvaWQqIGxvY2F0aW9uKQoreworICAgIEFTU0VSVChsb2NhdGlvbik7CisgICAgcmV0
dXJuIGxvY2F0aW9uOworfQorCiB1c2luZyBXVEY6OmJpbmFyeVNlYXJjaDsKIHVzaW5nIFdURjo6
Yml0d2lzZV9jYXN0OwogdXNpbmcgV1RGOjpzYWZlQ2FzdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1RocmVhZFNwZWNpZmljLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvVGhyZWFkU3BlY2lmaWMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjUzLDcgKzI1Myw3IEBAIGlubGluZSBUaHJlYWRTcGVjaWZpYzxUPjo6b3BlcmF0b3IgVCooKQog
ICAgICAgICAvLyBuZWVkcyB0byBhY2Nlc3MgdGhlIHZhbHVlLCB0byBhdm9pZCByZWN1cnNpb24u
CiAgICAgICAgIHB0ciA9IHN0YXRpY19jYXN0PFQqPihmYXN0WmVyb2VkTWFsbG9jKHNpemVvZihU
KSkpOwogICAgICAgICBzZXQocHRyKTsKLSAgICAgICAgbmV3IChwdHIpIFQ7CisgICAgICAgIG5l
dyAoTm90TnVsbCwgcHRyKSBUOwogICAgIH0KICAgICByZXR1cm4gcHRyOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9WZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1ZlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgICAgICBzdGF0aWMgdm9pZCBpbml0aWFsaXplKFQqIGJlZ2lu
LCBUKiBlbmQpIAogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKFQqIGN1ciA9IGJlZ2luOyBj
dXIgIT0gZW5kOyArK2N1cikKLSAgICAgICAgICAgICAgICBuZXcgKGN1cikgVDsKKyAgICAgICAg
ICAgICAgICBuZXcgKE5vdE51bGwsIGN1cikgVDsKICAgICAgICAgfQogICAgIH07CiAKQEAgLTk2
LDcgKzk2LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyB2b2lkIG1vdmUoY29u
c3QgVCogc3JjLCBjb25zdCBUKiBzcmNFbmQsIFQqIGRzdCkKICAgICAgICAgewogICAgICAgICAg
ICAgd2hpbGUgKHNyYyAhPSBzcmNFbmQpIHsKLSAgICAgICAgICAgICAgICBuZXcgKGRzdCkgVCgq
c3JjKTsKKyAgICAgICAgICAgICAgICBuZXcgKE5vdE51bGwsIGRzdCkgVCgqc3JjKTsKICNpZiBD
T01QSUxFUihTVU5DQykgJiYgX19TVU5QUk9fQ0MgPD0gMHg1OTAKICAgICAgICAgICAgICAgICBj
b25zdF9jYXN0PFQqPihzcmMpLT5+VCgpOyAvLyBXb3JrIGFyb3VuZCBvYnNjdXJlIFN1bkNDIDEy
IGNvbXBpbGVyIGJ1Zy4KICNlbHNlCkBAIC0xMTUsNyArMTE1LDcgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgICAgICAgICAgd2hpbGUgKHNyYyAhPSBzcmNFbmQpIHsKICAgICAgICAgICAgICAg
ICAgICAgLS1zcmNFbmQ7CiAgICAgICAgICAgICAgICAgICAgIC0tZHN0RW5kOwotICAgICAgICAg
ICAgICAgICAgICBuZXcgKGRzdEVuZCkgVCgqc3JjRW5kKTsKKyAgICAgICAgICAgICAgICAgICAg
bmV3IChOb3ROdWxsLCBkc3RFbmQpIFQoKnNyY0VuZCk7CiAgICAgICAgICAgICAgICAgICAgIHNy
Y0VuZC0+flQoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNDQsNyAr
MTQ0LDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHVuaW5pdGlhbGl6
ZWRDb3B5KGNvbnN0IFQqIHNyYywgY29uc3QgVCogc3JjRW5kLCBUKiBkc3QpIAogICAgICAgICB7
CiAgICAgICAgICAgICB3aGlsZSAoc3JjICE9IHNyY0VuZCkgewotICAgICAgICAgICAgICAgIG5l
dyAoZHN0KSBUKCpzcmMpOworICAgICAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgZHN0KSBUKCpz
cmMpOwogICAgICAgICAgICAgICAgICsrZHN0OwogICAgICAgICAgICAgICAgICsrc3JjOwogICAg
ICAgICAgICAgfQpAQCAtMTY5LDcgKzE2OSw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBz
dGF0aWMgdm9pZCB1bmluaXRpYWxpemVkRmlsbChUKiBkc3QsIFQqIGRzdEVuZCwgY29uc3QgVCYg
dmFsKSAKICAgICAgICAgewogICAgICAgICAgICAgd2hpbGUgKGRzdCAhPSBkc3RFbmQpIHsKLSAg
ICAgICAgICAgICAgICBuZXcgKGRzdCkgVCh2YWwpOworICAgICAgICAgICAgICAgIG5ldyAoTm90
TnVsbCwgZHN0KSBUKHZhbCk7CiAgICAgICAgICAgICAgICAgKytkc3Q7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KQEAgLTkyNyw3ICs5MjcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAg
ICAgIENSQVNIKCk7CiAgICAgICAgIFQqIGRlc3QgPSBlbmQoKTsKICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsgKytpKQotICAgICAgICAgICAgbmV3ICgmZGVzdFtpXSkg
VChkYXRhW2ldKTsKKyAgICAgICAgICAgIG5ldyAoTm90TnVsbCwgJmRlc3RbaV0pIFQoZGF0YVtp
XSk7CiAgICAgICAgIG1fc2l6ZSA9IG5ld1NpemU7CiAgICAgfQogCkBAIC05NDUsNyArOTQ1LDcg
QEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIFQq
IGRlc3QgPSBlbmQoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkYXRhU2l6ZTsg
KytpKQotICAgICAgICAgICAgbmV3ICgmZGVzdFtpXSkgVChkYXRhW2ldKTsKKyAgICAgICAgICAg
IG5ldyAoTm90TnVsbCwgJmRlc3RbaV0pIFQoZGF0YVtpXSk7CiAgICAgICAgIG1fc2l6ZSA9IG5l
d1NpemU7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTk2Nyw5ICs5NjcsOSBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gb25seSBhc3N1bWUgaXQgaXMgYSBidWcgd2l0aCB0
aGUgY29tcGlsZXIuIENhc3RpbmcgaXMgYSBiYWQgc29sdXRpb24sCiAgICAgICAgIC8vIGhvd2V2
ZXIsIGJlY2F1c2UgaXQgc3VidmVydHMgaW1wbGljaXQgY29udmVyc2lvbnMsIHNvIGEgYmV0dGVy
IAogICAgICAgICAvLyBvbmUgaXMgbmVlZGVkLiAKLSAgICAgICAgbmV3IChlbmQoKSkgVChzdGF0
aWNfY2FzdDxUPigqcHRyKSk7CisgICAgICAgIG5ldyAoTm90TnVsbCwgZW5kKCkpIFQoc3RhdGlj
X2Nhc3Q8VD4oKnB0cikpOwogI2Vsc2UKLSAgICAgICAgbmV3IChlbmQoKSkgVCgqcHRyKTsKKyAg
ICAgICAgbmV3IChOb3ROdWxsLCBlbmQoKSkgVCgqcHRyKTsKICNlbmRpZgogICAgICAgICArK21f
c2l6ZTsKICAgICB9CkBAIC05ODIsNyArOTgyLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgewog
ICAgICAgICBBU1NFUlQoc2l6ZSgpIDwgY2FwYWNpdHkoKSk7CiAgICAgICAgIGNvbnN0IFUqIHB0
ciA9ICZ2YWw7Ci0gICAgICAgIG5ldyAoZW5kKCkpIFQoKnB0cik7CisgICAgICAgIG5ldyAoTm90
TnVsbCwgZW5kKCkpIFQoKnB0cik7CiAgICAgICAgICsrbV9zaXplOwogICAgIH0KIApAQCAtMTAx
MCw3ICsxMDEwLDcgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIFQqIHNwb3QgPSBiZWdpbigp
ICsgcG9zaXRpb247CiAgICAgICAgIFR5cGVPcGVyYXRpb25zOjptb3ZlT3ZlcmxhcHBpbmcoc3Bv
dCwgZW5kKCksIHNwb3QgKyBkYXRhU2l6ZSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZGF0YVNpemU7ICsraSkKLSAgICAgICAgICAgIG5ldyAoJnNwb3RbaV0pIFQoZGF0YVtpXSk7
CisgICAgICAgICAgICBuZXcgKE5vdE51bGwsICZzcG90W2ldKSBUKGRhdGFbaV0pOwogICAgICAg
ICBtX3NpemUgPSBuZXdTaXplOwogICAgIH0KICAgICAgCkBAIC0xMDI2LDcgKzEwMjYsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogICAgICAgICBUKiBzcG90ID0gYmVnaW4oKSArIHBv
c2l0aW9uOwogICAgICAgICBUeXBlT3BlcmF0aW9uczo6bW92ZU92ZXJsYXBwaW5nKHNwb3QsIGVu
ZCgpLCBzcG90ICsgMSk7Ci0gICAgICAgIG5ldyAoc3BvdCkgVCgqZGF0YSk7CisgICAgICAgIG5l
dyAoTm90TnVsbCwgc3BvdCkgVCgqZGF0YSk7CiAgICAgICAgICsrbV9zaXplOwogICAgIH0KICAg
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZ0hhc2gu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3Ry
aW5nSGFzaC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvQXRvbWljU3RyaW5nSGFzaC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBA
IG5hbWVzcGFjZSBXVEYgewogICAgIC8vIEF0b21pY1N0cmluZ0hhc2ggaXMgdGhlIGRlZmF1bHQg
aGFzaCBmb3IgQXRvbWljU3RyaW5nCiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxX
VEY6OkF0b21pY1N0cmluZz4gOiBHZW5lcmljSGFzaFRyYWl0czxXVEY6OkF0b21pY1N0cmluZz4g
ewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNaZXJvID0gdHJ1ZTsKLSAg
ICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdURjo6QXRvbWljU3RyaW5n
JiBzbG90KSB7IG5ldyAoJnNsb3QpIFdURjo6QXRvbWljU3RyaW5nKEhhc2hUYWJsZURlbGV0ZWRW
YWx1ZSk7IH0KKyAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdURjo6
QXRvbWljU3RyaW5nJiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QpIFdURjo6QXRvbWljU3Ry
aW5nKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KICAgICAgICAgc3RhdGljIGJvb2wgaXNEZWxl
dGVkVmFsdWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIHNsb3QpIHsgcmV0dXJuIHNsb3QuaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAJKHJldmlzaW9uIDEwMjgwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODksNyArODksNyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0CiAgICAgU3RyaW5nSW1wbCogc3RyaW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+
KGZhc3RNYWxsb2Moc2l6ZSkpOwogCiAgICAgZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8TENoYXIq
PihzdHJpbmcgKyAxKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IChzdHJpbmcpIFN0cmluZ0lt
cGwobGVuZ3RoLCBGb3JjZThCaXRDb25zdHJ1Y3RvcikpOworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgKE5vdE51bGwsIHN0cmluZykgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0cnVj
dG9yKSk7CiB9CiAKIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZCh1bnNpZ25lZCBsZW5ndGgsIFVDaGFyKiYgZGF0YSkKQEAgLTEwOCw3ICsxMDgs
NyBAQCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0CiAgICAgU3RyaW5n
SW1wbCogc3RyaW5nID0gc3RhdGljX2Nhc3Q8U3RyaW5nSW1wbCo+KGZhc3RNYWxsb2Moc2l6ZSkp
OwogCiAgICAgZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihzdHJpbmcgKyAxKTsKLSAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IChzdHJpbmcpIFN0cmluZ0ltcGwobGVuZ3RoKSk7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyAoTm90TnVsbCwgc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCkp
OwogfQogCiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGUoUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hh
ciomIGRhdGEpCkBAIC0xMzAsNyArMTMwLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJp
bmdJbXBsOjpyZWFsbAogICAgIFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmlu
Z0ltcGwqPihmYXN0UmVhbGxvYyhvcmlnaW5hbFN0cmluZy5sZWFrUmVmKCksIHNpemUpKTsKIAog
ICAgIGRhdGEgPSByZWludGVycHJldF9jYXN0PExDaGFyKj4oc3RyaW5nICsgMSk7Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyAoc3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29u
c3RydWN0b3IpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IChOb3ROdWxsLCBzdHJpbmcpIFN0
cmluZ0ltcGwobGVuZ3RoLCBGb3JjZThCaXRDb25zdHJ1Y3RvcikpOwogfQogCiBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnJlYWxsb2NhdGUoUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBvcmlnaW5hbFN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciomIGRhdGEpCkBAIC0xNTIs
NyArMTUyLDcgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZWFsbAogICAg
IFN0cmluZ0ltcGwqIHN0cmluZyA9IHN0YXRpY19jYXN0PFN0cmluZ0ltcGwqPihmYXN0UmVhbGxv
YyhvcmlnaW5hbFN0cmluZy5sZWFrUmVmKCksIHNpemUpKTsKIAogICAgIGRhdGEgPSByZWludGVy
cHJldF9jYXN0PFVDaGFyKj4oc3RyaW5nICsgMSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAo
c3RyaW5nKSBTdHJpbmdJbXBsKGxlbmd0aCkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgKE5v
dE51bGwsIHN0cmluZykgU3RyaW5nSW1wbChsZW5ndGgpKTsKIH0KIAogUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGUoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDkgKzI0Nyw5IEBAIHB1Ymxp
YzoKICAgICAgICAgb3V0cHV0ID0gcmVpbnRlcnByZXRfY2FzdDxUKj4ocmVzdWx0SW1wbCArIDEp
OwogCiAgICAgICAgIGlmIChzaXplb2YoVCkgPT0gc2l6ZW9mKGNoYXIpKQotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyhyZXN1bHRJbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4
Qml0Q29uc3RydWN0b3IpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgKE5vdE51
bGwsIHJlc3VsdEltcGwpIFN0cmluZ0ltcGwobGVuZ3RoLCBGb3JjZThCaXRDb25zdHJ1Y3Rvcikp
OwogCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcocmVzdWx0SW1wbCkgU3RyaW5nSW1wbChs
ZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyAoTm90TnVsbCwgcmVzdWx0SW1w
bCkgU3RyaW5nSW1wbChsZW5ndGgpKTsKICAgICB9CiAKICAgICAvLyBSZWFsbG9jYXRlIHRoZSBT
dHJpbmdJbXBsLiBUaGUgb3JpZ2luYWxTdHJpbmcgbXVzdCBiZSBvbmx5IG93bmVkIGJ5IHRoZSBQ
YXNzUmVmUHRyLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ1N0
YXRpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdTdGF0aWNzLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ1N0YXRpY3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMyAr
NjgsMTMgQEAgdm9pZCBBdG9taWNTdHJpbmc6OmluaXQoKQogICAgICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgICAgIC8vIFVzZSBwbGFjZW1lbnQgbmV3IHRvIGluaXRpYWxpemUg
dGhlIGdsb2JhbHMuCi0gICAgICAgIG5ldyAoKHZvaWQqKSZudWxsQXRvbSkgQXRvbWljU3RyaW5n
OwotICAgICAgICBuZXcgKCh2b2lkKikmZW1wdHlBdG9tKSBBdG9taWNTdHJpbmcoIiIpOwotICAg
ICAgICBuZXcgKCh2b2lkKikmdGV4dEF0b20pIEF0b21pY1N0cmluZygiI3RleHQiKTsKLSAgICAg
ICAgbmV3ICgodm9pZCopJmNvbW1lbnRBdG9tKSBBdG9taWNTdHJpbmcoIiNjb21tZW50Iik7Ci0g
ICAgICAgIG5ldyAoKHZvaWQqKSZzdGFyQXRvbSkgQXRvbWljU3RyaW5nKCIqIik7Ci0gICAgICAg
IG5ldyAoKHZvaWQqKSZ4bWxBdG9tKSBBdG9taWNTdHJpbmcoInhtbCIpOwotICAgICAgICBuZXcg
KCh2b2lkKikmeG1sbnNBdG9tKSBBdG9taWNTdHJpbmcoInhtbG5zIik7CisgICAgICAgIG5ldyAo
Tm90TnVsbCwgKHZvaWQqKSZudWxsQXRvbSkgQXRvbWljU3RyaW5nOworICAgICAgICBuZXcgKE5v
dE51bGwsICh2b2lkKikmZW1wdHlBdG9tKSBBdG9taWNTdHJpbmcoIiIpOworICAgICAgICBuZXcg
KE5vdE51bGwsICh2b2lkKikmdGV4dEF0b20pIEF0b21pY1N0cmluZygiI3RleHQiKTsKKyAgICAg
ICAgbmV3IChOb3ROdWxsLCAodm9pZCopJmNvbW1lbnRBdG9tKSBBdG9taWNTdHJpbmcoIiNjb21t
ZW50Iik7CisgICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZzdGFyQXRvbSkgQXRvbWljU3Ry
aW5nKCIqIik7CisgICAgICAgIG5ldyAoTm90TnVsbCwgKHZvaWQqKSZ4bWxBdG9tKSBBdG9taWNT
dHJpbmcoInhtbCIpOworICAgICAgICBuZXcgKE5vdE51bGwsICh2b2lkKikmeG1sbnNBdG9tKSBB
dG9taWNTdHJpbmcoInhtbG5zIik7CiAKICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVy
LmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFy
ckludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgYWxsb2NhdG9yUG9vbCA9IGFsbG9jYXRvclBvb2wtPmVuc3VyZUNhcGFjaXR5
KHNpemUpOwogICAgICAgICBpZiAoIWFsbG9jYXRvclBvb2wpCiAgICAgICAgICAgICBDUkFTSCgp
OwotICAgICAgICByZXR1cm4gbmV3KGFsbG9jYXRvclBvb2wtPmFsbG9jKHNpemUpKSBEaXNqdW5j
dGlvbkNvbnRleHQoKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdG9yUG9vbC0+YWxsb2Mo
c2l6ZSkpIERpc2p1bmN0aW9uQ29udGV4dCgpOwogICAgIH0KIAogICAgIHZvaWQgZnJlZURpc2p1
bmN0aW9uQ29udGV4dChEaXNqdW5jdGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0xMzEsNyArMTMx
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIG91dHB1dFsoZmlyc3RTdWJwYXR0ZXJuSWQg
PDwgMSkgKyBpXSA9IC0xOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBuZXcoZ2V0RGlz
anVuY3Rpb25Db250ZXh0KHRlcm0pKSBEaXNqdW5jdGlvbkNvbnRleHQoKTsKKyAgICAgICAgICAg
IG5ldyAoZ2V0RGlzanVuY3Rpb25Db250ZXh0KHRlcm0pKSBEaXNqdW5jdGlvbkNvbnRleHQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QsIHZvaWQqIHdo
ZXJlKQpAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKICAgICAgICAgYWxsb2NhdG9yUG9vbCA9
IGFsbG9jYXRvclBvb2wtPmVuc3VyZUNhcGFjaXR5KHNpemUpOwogICAgICAgICBpZiAoIWFsbG9j
YXRvclBvb2wpCiAgICAgICAgICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gbmV3KGFsbG9j
YXRvclBvb2wtPmFsbG9jKHNpemUpKSBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChvdXRw
dXQsIHRlcm0pOworICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0b3JQb29sLT5hbGxvYyhzaXpl
KSkgUGFyZW50aGVzZXNEaXNqdW5jdGlvbkNvbnRleHQob3V0cHV0LCB0ZXJtKTsKICAgICB9CiAK
ICAgICB2b2lkIGZyZWVQYXJlbnRoZXNlc0Rpc2p1bmN0aW9uQ29udGV4dChQYXJlbnRoZXNlc0Rp
c2p1bmN0aW9uQ29udGV4dCogY29udGV4dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzAx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDUxIEBACisyMDExLTEyLTE1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUGxhY2VtZW50IG5ldyBkb2VzIGFuIHVubmVjZXNzYXJ5IE5VTEwgY2hlY2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0Njc2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3Ry
dWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgICogYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6QmluZGluZ3M6OkNSdW50aW1lT2JqZWN0OjpjcmVhdGUpOgorICAgICAg
ICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q1J1
bnRpbWVNZXRob2Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL2puaS9qc2MvSmF2YUluc3Rh
bmNlSlNDLmNwcDoKKyAgICAgICAgKEphdmFSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAg
ICAqIGJyaWRnZS9qbmkvanNjL0phdmFSdW50aW1lT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkJp
bmRpbmdzOjpKYXZhUnVudGltZU9iamVjdDo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uvb2Jq
Yy9PYmpDUnVudGltZU9iamVjdC5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqQ1J1bnRp
bWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5t
bToKKyAgICAgICAgKE9iakNSdW50aW1lTWV0aG9kOjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRn
ZS9vYmpjL29iamNfcnVudGltZS5oOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0ZhbGxi
YWNrT2JqZWN0SW1wOjpjcmVhdGUpOgorICAgICAgICAqIGJyaWRnZS9ydW50aW1lX2FycmF5Lmg6
CisgICAgICAgIChKU0M6OlJ1bnRpbWVBcnJheTo6Y3JlYXRlKToKKyAgICAgICAgKiBicmlkZ2Uv
cnVudGltZV9tZXRob2QuaDoKKyAgICAgICAgKEpTQzo6UnVudGltZU1ldGhvZDo6Y3JlYXRlKToK
KyAgICAgICAgKiBicmlkZ2UvcnVudGltZV9vYmplY3QuaDoKKyAgICAgICAgKEpTQzo6QmluZGlu
Z3M6OlJ1bnRpbWVPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3JtRWxlbWVudEtleUhhc2hUcmFpdHM6OmNvbnN0cnVjdERlbGV0
ZWRWYWx1ZSk6IFVzZSBOb3ROdWxsCisgICAgICAgIHBsYWNlbWVudCBuZXcsIGFzIGluIEphdmFT
Y3JpcHRDb3JlLgorCisgICAgICAgICogcGxhdGZvcm0vUE9EQXJlbmEuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlBPREFyZW5hOjphbGxvY2F0ZU9iamVjdCk6IE5vIG5lZWQgdG8gY2hlY2sgZm9yIE5V
TEwgZXhwbGljaXRseSwKKyAgICAgICAgc2luY2UgdGhhdCdzIHRoZSBidWlsdC1pbiBiZWhhdmlv
ciBvZiBwbGFjZW1lbnQgbmV3LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnREYXRhQ2FjaGVLZXlUcmFpdHM6OmNvbnN0
cnVjdERlbGV0ZWRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdEhh
c2guaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplSGFzaC5oOiBNb3JlIE5v
dE51bGwuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6IERlY2xhcmluZyB0
aGF0IHdlIHRocm93IGlzIHRoZSBDKysgd2F5IHRvIHNheQorICAgICAgICB0aGF0IG9wZXJhdG9y
IG5ldyB3aWxsIG5vdCByZXR1cm4gTlVMTC4KKwogMjAxMS0xMi0xNSAgS2VubmV0aCBSdXNzZWxs
ICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEw
MzAwMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25z
dHJ1Y3Rvci5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgc3RhdGljIEpTSW1hZ2VDb25zdHJ1Y3Rvciog
Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICB7Ci0gICAgICAgICAgICBK
U0ltYWdlQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDxK
U0ltYWdlQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKU0ltYWdlQ29uc3RydWN0b3Ioc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBj
b25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0
cnVjdG9yPigqZXhlYy0+aGVhcCgpKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKICAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbihleGVj
LCBnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTc0NSwxNCAr
NzQ1LDE0IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAk
Y2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsLCBKU0RPTVdpbmRv
d1NoZWxsKiB3aW5kb3dTaGVsbClcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NO
YW1lKiBwdHIgPSBuZXcgKEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbERhdGEu
aGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGwsIHdpbmRvd1No
ZWxsKTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NO
YW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGds
b2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIGltcGws
IHdpbmRvd1NoZWxsKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEsIHdpbmRvd1NoZWxsKTtcbiIpOwogICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAgICB9IGVsc2lmICgkZGF0
YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJc1dvcmtlckNvbnRleHQifSkgewogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyAkY2xhc3NOYW1lKiBjcmVhdGUoSlND
OjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBh
c3NSZWZQdHI8JGltcGxUeXBlPiBpbXBsKVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRl
bnQsICIgICAge1xuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRj
bGFzc05hbWUqIHB0ciA9IG5ldyAoSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFs
RGF0YS5oZWFwKSkgJHtjbGFzc05hbWV9KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgaW1wbCk7XG4i
KTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRy
ID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxEYXRh
LmhlYXApKSAke2NsYXNzTmFtZX0oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBpbXBsKTtcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbERhdGEpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAg
IHJldHVybiBwdHI7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB9XG5c
biIpOwpAQCAtNzYwLDcgKzc2MCw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBBZGRJ
bmNsdWRlc0ZvclR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJvcGVydHlPckxp
c3RQcm9wZXJ0eVR5cGU7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
ICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRpbXBsVHlwZT4gaW1wbClcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHtcbiIpOwotICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKEpTQzo6YWxsb2Nh
dGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSAkY2xh
c3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIpOworICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTtcbiIpOwog
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNv
bnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTEwNTcsNyArMTA1Nyw3IEBAIHN1YiBHZW5lcmF0ZUhl
YWRlcgogCiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgJHtjbGFzc05hbWV9
UHJvdG90eXBlKiBjcmVhdGUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSlcbiIp
OwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiBwdHIgPSBuZXcgKEpTQzo6
YWxsb2NhdGVDZWxsPCR7Y2xhc3NOYW1lfVByb3RvdHlwZT4oZ2xvYmFsRGF0YS5oZWFwKSkgJHtj
bGFzc05hbWV9UHJvdG90eXBlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKTtc
biIpOworICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwke2NsYXNzTmFtZX1Q
cm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpICR7Y2xhc3NOYW1lfVByb3RvdHlwZShnbG9iYWxE
YXRhLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7XG4iKTsKICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbERhdGEpO1xuIik7CiAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHB0cjtcbiIpOwogICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTMzMTUsNyArMzMxNSw3IEBAIHN1YiBH
ZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlO1xuIik7CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHN0YXRpYyAkY29uc3RydWN0b3JDbGFzc05hbWUqIGNyZWF0ZShKU0M6
OkV4ZWNTdGF0ZSogZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdClcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB7
XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgICRjb25zdHJ1Y3RvckNsYXNz
TmFtZSogcHRyID0gbmV3IChKU0M6OmFsbG9jYXRlQ2VsbDwkY29uc3RydWN0b3JDbGFzc05hbWU+
KCpleGVjLT5oZWFwKCkpKSAkY29uc3RydWN0b3JDbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAkY29uc3RydWN0
b3JDbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNvbnN0
cnVjdG9yQ2xhc3NOYW1lPigqZXhlYy0+aGVhcCgpKSkgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihleGVjLCBnbG9iYWxPYmplY3QpO1xuIik7CiAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CkBAIC0zMzUwLDcgKzMzNTAsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRl
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgSlMke2ludGVyZmFjZU5h
bWV9TmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKEpTQzo6YWxsb2NhdGVDZWxs
PEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKUyR7
aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICAgICAgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1Y3RvciogY29uc3RydWN0b3Ig
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVk
Q29uc3RydWN0b3I+KCpleGVjLT5oZWFwKCkpKSBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0
cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9hcnJheS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJKHJl
dmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX2FycmF5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhN
RTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRo
ZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUg
cmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImFycmF5Ii4KICAgICAgICAgU3RydWN0dXJlKiBkb21T
dHJ1Y3R1cmUgPSBXZWJDb3JlOjpkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlPFJ1bnRpbWVBcnJh
eT4oZXhlYyk7Ci0gICAgICAgIFJ1bnRpbWVBcnJheSogcnVudGltZUFycmF5ID0gbmV3IChhbGxv
Y2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZUFycmF5KGV4ZWMs
IGRvbVN0cnVjdHVyZSk7CisgICAgICAgIFJ1bnRpbWVBcnJheSogcnVudGltZUFycmF5ID0gbmV3
IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZUFycmF5PigqZXhlYy0+aGVhcCgpKSkgUnVu
dGltZUFycmF5KGV4ZWMsIGRvbVN0cnVjdHVyZSk7CiAgICAgICAgIHJ1bnRpbWVBcnJheS0+Zmlu
aXNoQ3JlYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhcnJheSk7CiAgICAgICAgIHJldHVybiBy
dW50aW1lQXJyYXk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVf
bWV0aG9kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0
aG9kLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1l
X21ldGhvZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBSdW50aW1lTWV0aG9kKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgQmluZGluZ3M6Ok1ldGhvZExpc3QmIG1ldGhvZExpc3QpCiAgICAgewotICAgICAg
ICBSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxSdW50aW1lTWV0aG9k
PigqZXhlYy0+aGVhcCgpKSkgUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSwg
bWV0aG9kTGlzdCk7CisgICAgICAgIFJ1bnRpbWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBSdW50aW1lTWV0
aG9kKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBtZXRob2RMaXN0KTsKICAgICAgICAgbWV0aG9k
LT5maW5pc2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgICAgICByZXR1
cm4gbWV0aG9kOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX29iamVj
dC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9v
YmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgUnVudGltZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8SW5zdGFu
Y2U+IGluc3RhbmNlKQogICAgIHsKLSAgICAgICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gbmV3
IChhbGxvY2F0ZUNlbGw8UnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVPYmpl
Y3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIGluc3RhbmNlKTsKKyAgICAgICAgUnVu
dGltZU9iamVjdCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8UnVudGltZU9i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIFJ1bnRpbWVPYmplY3QoZXhlYywgZ2xvYmFsT2JqZWN0LCBz
dHJ1Y3R1cmUsIGluc3RhbmNlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QpOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291
cmNlL1dlYkNvcmUvYnJpZGdlL2MvQ1J1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9N
U3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmpl
Y3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0
IGZvciAiaSIuCiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVw
cmVjYXRlZEdldERPTVN0cnVjdHVyZTxDUnVudGltZU9iamVjdD4oZXhlYyk7Ci0gICAgICAgIENS
dW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxDUnVudGltZU9iamVjdD4o
KmV4ZWMtPmhlYXAoKSkpIENSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgZG9tU3Ry
dWN0dXJlLCBpbnN0YW5jZSk7CisgICAgICAgIENSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDUnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIENS
dW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBpbnN0YW5jZSk7
CiAgICAgICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICAgICAg
cmV0dXJuIG9iamVjdDsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3Rh
bmNlLmNwcAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19p
bnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3Rv
dHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0
byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAgICAgICAgIFN0cnVj
dHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxD
UnVudGltZU1ldGhvZD4oZXhlYyk7Ci0gICAgICAgIENSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBu
ZXcgKGFsbG9jYXRlQ2VsbDxDUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIENSdW50aW1l
TWV0aG9kKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBsaXN0KTsKKyAgICAgICAgQ1J1bnRp
bWVNZXRob2QqIG1ldGhvZCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPENSdW50aW1lTWV0
aG9kPigqZXhlYy0+aGVhcCgpKSkgQ1J1bnRpbWVNZXRob2QoZ2xvYmFsT2JqZWN0LCBkb21TdHJ1
Y3R1cmUsIGxpc3QpOwogICAgICAgICBtZXRob2QtPmZpbmlzaENyZWF0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbmFtZSk7CiAgICAgICAgIHJldHVybiBtZXRob2Q7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2MvSmF2YUluc3RhbmNlSlNDLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5zdGFuY2VKU0MuY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvam5pL2pzYy9KYXZhSW5z
dGFuY2VKU0MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBGSVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90
b3R5cGUgb2ZmIG9mIHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQg
dG8gcGFzcyBpbiB0aGUgcmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1
Y3R1cmUqIGRvbVN0cnVjdHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8
SmF2YVJ1bnRpbWVNZXRob2Q+KGV4ZWMpOwotICAgICAgICBKYXZhUnVudGltZU1ldGhvZCogbWV0
aG9kID0gbmV3IChhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkp
KSBKYXZhUnVudGltZU1ldGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7Cisg
ICAgICAgIEphdmFSdW50aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxKYXZhUnVudGltZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIEphdmFSdW50aW1lTWV0aG9k
KGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBsaXN0KTsKICAgICAgICAgbWV0aG9kLT5maW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgICAgICByZXR1cm4gbWV0
aG9kOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9qbmkvanNjL0phdmFSdW50
aW1lT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL2puaS9qc2Mv
SmF2YVJ1bnRpbWVPYmplY3QuaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUv
YnJpZGdlL2puaS9qc2MvSmF2YVJ1bnRpbWVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3Ry
dWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYgb2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QK
ICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGluIHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZv
ciAiaSIuCiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVj
YXRlZEdldERPTVN0cnVjdHVyZTxKYXZhUnVudGltZU9iamVjdD4oZXhlYyk7Ci0gICAgICAgIEph
dmFSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFsbG9jYXRlQ2VsbDxKYXZhUnVudGltZU9i
amVjdD4oKmV4ZWMtPmhlYXAoKSkpIEphdmFSdW50aW1lT2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVj
dCwgZG9tU3RydWN0dXJlLCBqYXZhSW5zdGFuY2UpOworICAgICAgICBKYXZhUnVudGltZU9iamVj
dCogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SmF2YVJ1bnRpbWVPYmplY3Q+
KCpleGVjLT5oZWFwKCkpKSBKYXZhUnVudGltZU9iamVjdChleGVjLCBnbG9iYWxPYmplY3QsIGRv
bVN0cnVjdHVyZSwgamF2YUluc3RhbmNlKTsKICAgICAgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gb2JqZWN0OwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL09iakNSdW50aW1lT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmplY3QuaAkocmV2aXNp
b24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvT2JqQ1J1bnRpbWVPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8v
IEZJWE1FOiBkZXByZWNhdGVkR2V0RE9NU3RydWN0dXJlIHVzZXMgdGhlIHByb3RvdHlwZSBvZmYg
b2YgdGhlIHdyb25nIGdsb2JhbCBvYmplY3QKICAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGlu
IHRoZSByaWdodCBnbG9iYWwgb2JqZWN0IGZvciAiaSIuCiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpDUnVudGltZU9i
amVjdD4oZXhlYyk7Ci0gICAgICAgIE9iakNSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBuZXcgKGFs
bG9jYXRlQ2VsbDxPYmpDUnVudGltZU9iamVjdD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1l
T2JqZWN0KGV4ZWMsIGdsb2JhbE9iamVjdCwgaW5zdCwgc3RydWN0dXJlKTsKKyAgICAgICAgT2Jq
Q1J1bnRpbWVPYmplY3QqIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iakNS
dW50aW1lT2JqZWN0PigqZXhlYy0+aGVhcCgpKSkgT2JqQ1J1bnRpbWVPYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0LCBpbnN0LCBzdHJ1Y3R1cmUpOwogICAgICAgICBvYmplY3QtPmZpbmlzaENyZWF0
aW9uKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBvYmplY3Q7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCShyZXZpc2lvbiAx
MDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgICAgICAvLyBGSVhN
RTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9mIHRo
ZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFzcyBpbiB0aGUg
cmlnaHQgZ2xvYmFsIG9iamVjdCBmb3IgImkiLgogICAgICAgICBTdHJ1Y3R1cmUqIGRvbVN0cnVj
dHVyZSA9IFdlYkNvcmU6OmRlcHJlY2F0ZWRHZXRET01TdHJ1Y3R1cmU8T2JqQ1J1bnRpbWVNZXRo
b2Q+KGV4ZWMpOwotICAgICAgICBPYmpDUnVudGltZU1ldGhvZCogbWV0aG9kID0gbmV3IChhbGxv
Y2F0ZUNlbGw8T2JqQ1J1bnRpbWVNZXRob2Q+KCpleGVjLT5oZWFwKCkpKSBPYmpDUnVudGltZU1l
dGhvZChnbG9iYWxPYmplY3QsIGRvbVN0cnVjdHVyZSwgbGlzdCk7CisgICAgICAgIE9iakNSdW50
aW1lTWV0aG9kKiBtZXRob2QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxPYmpDUnVudGlt
ZU1ldGhvZD4oKmV4ZWMtPmhlYXAoKSkpIE9iakNSdW50aW1lTWV0aG9kKGdsb2JhbE9iamVjdCwg
ZG9tU3RydWN0dXJlLCBsaXN0KTsKICAgICAgICAgbWV0aG9kLT5maW5pc2hDcmVhdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIG5hbWUpOwogICAgICAgICByZXR1cm4gbWV0aG9kOwogICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5oCShyZXZpc2lvbiAx
MDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBG
SVhNRTogZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSB1c2VzIHRoZSBwcm90b3R5cGUgb2ZmIG9m
IHRoZSB3cm9uZyBnbG9iYWwgb2JqZWN0CiAgICAgICAgIFN0cnVjdHVyZSogZG9tU3RydWN0dXJl
ID0gV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZTxPYmpjRmFsbGJhY2tPYmplY3RJ
bXA+KGV4ZWMpOwotICAgICAgICBPYmpjRmFsbGJhY2tPYmplY3RJbXAqIGZhbGxiYWNrT2JqZWN0
ID0gbmV3IChhbGxvY2F0ZUNlbGw8T2JqY0ZhbGxiYWNrT2JqZWN0SW1wPigqZXhlYy0+aGVhcCgp
KSkgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKGdsb2JhbE9iamVjdCwgZG9tU3RydWN0dXJlLCBpbnN0
YW5jZSwgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgT2JqY0ZhbGxiYWNrT2JqZWN0SW1wKiBmYWxs
YmFja09iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPE9iamNGYWxsYmFja09iamVj
dEltcD4oKmV4ZWMtPmhlYXAoKSkpIE9iamNGYWxsYmFja09iamVjdEltcChnbG9iYWxPYmplY3Qs
IGRvbVN0cnVjdHVyZSwgaW5zdGFuY2UsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGZhbGxiYWNr
T2JqZWN0LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gZmFs
bGJhY2tPYmplY3Q7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDEw
MjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDEsNyArMjAxLDcgQEAgc3RydWN0IEZvcm1FbGVtZW50S2V5SGFzaCB7CiB9OwogCiBzdHJ1
Y3QgRm9ybUVsZW1lbnRLZXlIYXNoVHJhaXRzIDogV1RGOjpHZW5lcmljSGFzaFRyYWl0czxGb3Jt
RWxlbWVudEtleT4gewotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShGb3Jt
RWxlbWVudEtleSYgc2xvdCkgeyBuZXcgKCZzbG90KSBGb3JtRWxlbWVudEtleShXVEY6Okhhc2hU
YWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFs
dWUoRm9ybUVsZW1lbnRLZXkmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgRm9ybUVsZW1l
bnRLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9CiAgICAgc3RhdGljIGJvb2wgaXNE
ZWxldGVkVmFsdWUoY29uc3QgRm9ybUVsZW1lbnRLZXkmIHZhbHVlKSB7IHJldHVybiB2YWx1ZS5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9QT0RBcmVuYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BPREFyZW5hLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BPREFyZW5hLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDIzICs4NiwxMyBAQCBwdWJsaWM6CiAg
ICAgLy8gQWxsb2NhdGVzIGFuIG9iamVjdCBmcm9tIHRoZSBhcmVuYS4KICAgICB0ZW1wbGF0ZTxj
bGFzcyBUPiBUKiBhbGxvY2F0ZU9iamVjdCgpCiAgICAgewotICAgICAgICB2b2lkKiBwdHIgPSBh
bGxvY2F0ZUJhc2U8VD4oKTsKLSAgICAgICAgaWYgKHB0cikgewotICAgICAgICAgICAgLy8gVXNl
IHBsYWNlbWVudCBvcGVyYXRvciBuZXcgdG8gYWxsb2NhdGUgYSBUIGF0IHRoaXMgbG9jYXRpb24u
Ci0gICAgICAgICAgICBuZXcocHRyKSBUKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFQqPihwdHIpOworICAgICAgICByZXR1cm4gbmV3IChhbGxvY2F0ZUJhc2U8VD4o
KSkgVCgpOwogICAgIH0KIAogICAgIC8vIEFsbG9jYXRlcyBhbiBvYmplY3QgZnJvbSB0aGUgYXJl
bmEsIGNhbGxpbmcgYSBzaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3IuCiAgICAgdGVtcGxhdGU8
Y2xhc3MgVCwgY2xhc3MgQXJndW1lbnQxVHlwZT4gVCogYWxsb2NhdGVPYmplY3QoY29uc3QgQXJn
dW1lbnQxVHlwZSYgYXJndW1lbnQxKQogICAgIHsKLSAgICAgICAgdm9pZCogcHRyID0gYWxsb2Nh
dGVCYXNlPFQ+KCk7Ci0gICAgICAgIGlmIChwdHIpIHsKLSAgICAgICAgICAgIC8vIFVzZSBwbGFj
ZW1lbnQgb3BlcmF0b3IgbmV3IHRvIGFsbG9jYXRlIGEgVCBhdCB0aGlzIGxvY2F0aW9uLgotICAg
ICAgICAgICAgbmV3KHB0cikgVChhcmd1bWVudDEpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUKj4ocHRyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAoYWxsb2NhdGVCYXNl
PFQ+KCkpIFQoYXJndW1lbnQxKTsKICAgICB9CiAKICAgICAvLyBUaGUgaW5pdGlhbCBzaXplIG9m
IGFsbG9jYXRlZCBjaHVua3M7IGluY3JlYXNlcyBhcyBuZWNlc3NhcnkgdG8KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAkocmV2aXNpb24g
MTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDcgKzI0MCw3IEBAIHN0cnVjdCBGb250RGF0YUNhY2hl
S2V5VHJhaXRzIDogV1RGOjpHZW4KICAgICB9CiAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVs
ZXRlZFZhbHVlKEZvbnRQbGF0Zm9ybURhdGEmIHNsb3QpCiAgICAgewotICAgICAgICBuZXcgKCZz
bG90KSBGb250UGxhdGZvcm1EYXRhKEhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7CisgICAgICAgIG5l
dyAoTm90TnVsbCwgJnNsb3QpIEZvbnRQbGF0Zm9ybURhdGEoSGFzaFRhYmxlRGVsZXRlZFZhbHVl
KTsKICAgICB9CiAgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgRm9udFBsYXRm
b3JtRGF0YSYgdmFsdWUpCiAgICAgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UmVjdEhhc2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbnRSZWN0SGFzaC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0SGFzaC5oCSh3b3JraW5nIGNvcHkpCkBAIC01
MCw3ICs1MCw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OkkKIHRl
bXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6SW50UmVjdD4gOiBHZW5lcmljSGFz
aFRyYWl0czxXZWJDb3JlOjpJbnRSZWN0PiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlW
YWx1ZUlzWmVybyA9IHRydWU7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlv
biA9IGZhbHNlOwotICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3Jl
OjpJbnRSZWN0JiBzbG90KSB7IG5ldyAoJnNsb3QpIFdlYkNvcmU6OkludFJlY3QoLTEsIC0xLCAt
MSwgLTEpOyB9CisgICAgc3RhdGljIHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6
OkludFJlY3QmIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdCkgV2ViQ29yZTo6SW50UmVjdCgt
MSwgLTEsIC0xLCAtMSk7IH0KICAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiB2YWx1ZSkgeyByZXR1cm4gdmFsdWUueCgpID09IC0xICYmIHZhbHVl
LnkoKSA9PSAtMSAmJiB2YWx1ZS53aWR0aCgpID09IC0xICYmIHZhbHVlLmhlaWdodCgpID09IC0x
OyB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXpl
SGFzaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemVIYXNoLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemVIYXNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3Jl
OjpJbnRTaXplPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OkludFNpemU+IHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgZW1wdHlWYWx1ZUlzWmVybyA9IHRydWU7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSBmYWxzZTsKLSAgICAgICAgc3RhdGlj
IHZvaWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OkludFNpemUmIHNsb3QpIHsgbmV3
ICgmc2xvdCkgV2ViQ29yZTo6SW50U2l6ZSgtMSwgLTEpOyB9CisgICAgICAgIHN0YXRpYyB2b2lk
IGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpJbnRTaXplJiBzbG90KSB7IG5ldyAoTm90
TnVsbCwgJnNsb3QpIFdlYkNvcmU6OkludFNpemUoLTEsIC0xKTsgfQogICAgICAgICBzdGF0aWMg
Ym9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2YWx1ZSkgeyByZXR1
cm4gdmFsdWUud2lkdGgoKSA9PSAtMSAmJiB2YWx1ZS5oZWlnaHQoKSA9PSAtMTsgfQogICAgIH07
CiB9IC8vIG5hbWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRp
UnVuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQmlkaVJ1bi5j
cHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9CaWRpUnVu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEJpZGlSdW46OmRlc3Ry
b3koKQogICAgIHJlbmRlckFyZW5hLT5mcmVlKCpyZWludGVycHJldF9jYXN0PHNpemVfdCo+KHRo
aXMpLCB0aGlzKTsKIH0KIAotdm9pZCogQmlkaVJ1bjo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwg
UmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKSB0aHJvdygpCit2b2lkKiBCaWRpUnVuOjpvcGVyYXRv
ciBuZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEpCiB7CiAjaWZuZGVmIE5E
RUJVRwogICAgIGJpZGlSdW5Db3VudGVyLmluY3JlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0JpZGlSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQmlkaVJ1bi5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvQmlkaVJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHN0cnVjdCBC
aWRpUnVuIDogQmlkaUNoYXJhY3RlclJ1biB7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKICAgICAv
LyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4KLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBSZW5kZXJBcmVuYSopIHRocm93KCk7CisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwg
UmVuZGVyQXJlbmEqKTsKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8gcHJldmVudCB0aGUgbm9ybWFs
IGRlbGV0ZSBmcm9tIGJlaW5nIGNhbGxlZC4KICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lk
Kiwgc2l6ZV90KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCShy
ZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCB2b2lkIElubGluZUJveDo6ZGVzdHJv
eShSZW5kZXJBcmVuYSogcmVuCiAgICAgcmVuZGVyQXJlbmEtPmZyZWUoKihzaXplX3QgKil0aGlz
LCB0aGlzKTsKIH0KIAotdm9pZCogSW5saW5lQm94OjpvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBS
ZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEpIHRocm93KCkKK3ZvaWQqIElubGluZUJveDo6b3BlcmF0
b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQogewogICAgIHJldHVy
biByZW5kZXJBcmVuYS0+YWxsb2NhdGUoc3opOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUJveC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVCb3guaAkocmV2aXNpb24gMTAyODA5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgcHVibGlj
OgogICAgIElubGluZUJveCogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQogCiAgICAg
Ly8gT3ZlcmxvYWRlZCBuZXcgb3BlcmF0b3IuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOworICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IFJlbmRlckFyZW5hKik7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1h
bCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9p
ZCosIHNpemVfdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5j
cHAJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRT
dGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIExheW91dFN0
YXRlOjpkZXN0cm95KFJlbmRlckFyZW5hKiByCiAgICAgcmVuZGVyQXJlbmEtPmZyZWUoKihzaXpl
X3QqKXRoaXMsIHRoaXMpOwogfQogCi12b2lkKiBMYXlvdXRTdGF0ZTo6b3BlcmF0b3IgbmV3KHNp
emVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKSB0aHJvdygpCit2b2lkKiBMYXlvdXRT
dGF0ZTo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5hKQog
ewogICAgIHJldHVybiByZW5kZXJBcmVuYS0+YWxsb2NhdGUoc3opOwogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmgJKHJldmlzaW9uIDEwMjgwOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3
ICs2MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlc3Ryb3koUmVuZGVyQXJlbmEqKTsKIAogICAg
IC8vIE92ZXJsb2FkZWQgbmV3IG9wZXJhdG9yLgotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QsIFJlbmRlckFyZW5hKikgdGhyb3coKTsKKyAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90
LCBSZW5kZXJBcmVuYSopOwogCiAgICAgLy8gT3ZlcnJpZGRlbiB0byBwcmV2ZW50IHRoZSBub3Jt
YWwgZGVsZXRlIGZyb20gYmVpbmcgY2FsbGVkLgogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqLCBzaXplX3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIu
Y3BwCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIGNvbnN0IGludCBNaW5pbXVtV2lkdGhXaGlsZVJlc2l6aW5nID0gMTAw
OwogY29uc3QgaW50IE1pbmltdW1IZWlnaHRXaGlsZVJlc2l6aW5nID0gNDA7CiAKLXZvaWQqIENs
aXBSZWN0czo6b3BlcmF0b3IgbmV3KHNpemVfdCBzeiwgUmVuZGVyQXJlbmEqIHJlbmRlckFyZW5h
KSB0aHJvdygpCit2b2lkKiBDbGlwUmVjdHM6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRl
ckFyZW5hKiByZW5kZXJBcmVuYSkKIHsKICAgICByZXR1cm4gcmVuZGVyQXJlbmEtPmFsbG9jYXRl
KHN6KTsKIH0KQEAgLTEwNDAsNyArMTA0MCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXIKICAgICB9CiB9CiAKLXZvaWQqIFJlbmRlckxheWVyOjpvcGVyYXRvciBu
ZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEpIHRocm93KCkKK3ZvaWQqIFJl
bmRlckxheWVyOjpvcGVyYXRvciBuZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVuYSogcmVuZGVyQXJl
bmEpCiB7CiAgICAgcmV0dXJuIHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAkocmV2aXNpb24gMTAyODA5KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2OCw3ICsxNjgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXN0cm95KFJlbmRlckFyZW5hKik7
CiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4KLSAgICB2b2lkKiBvcGVyYXRvciBu
ZXcoc2l6ZV90LCBSZW5kZXJBcmVuYSopIHRocm93KCk7CisgICAgdm9pZCogb3BlcmF0b3IgbmV3
KHNpemVfdCwgUmVuZGVyQXJlbmEqKTsKIAogICAgIC8vIE92ZXJyaWRkZW4gdG8gcHJldmVudCB0
aGUgbm9ybWFsIGRlbGV0ZSBmcm9tIGJlaW5nIGNhbGxlZC4KICAgICB2b2lkIG9wZXJhdG9yIGRl
bGV0ZSh2b2lkKiwgc2l6ZV90KTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBwdWJsaWM6CiAKICAgICAv
LyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4gRGVyaXZlZCBjbGFzc2VzIG11c3Qgb3ZlcnJpZGUg
b3BlcmF0b3IgbmV3CiAgICAgLy8gaW4gb3JkZXIgdG8gYWxsb2NhdGUgb3V0IG9mIHRoZSBSZW5k
ZXJBcmVuYS4KLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCBSZW5kZXJBcmVuYSopIHRo
cm93KCk7CisgICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVfdCwgUmVuZGVyQXJlbmEqKTsKIAog
ICAgIC8vIE92ZXJyaWRkZW4gdG8gcHJldmVudCB0aGUgbm9ybWFsIGRlbGV0ZSBmcm9tIGJlaW5n
IGNhbGxlZC4KICAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkKiwgc2l6ZV90KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAxMDI4
MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBzdGF0aWMgdm9pZCogYmFzZU9mUmVuZGVyT2JqZWN0
QmVpbmdEZWxlCiAKIGJvb2wgUmVuZGVyT2JqZWN0OjpzX2FmZmVjdHNQYXJlbnRCbG9jayA9IGZh
bHNlOwogCi12b2lkKiBSZW5kZXJPYmplY3Q6Om9wZXJhdG9yIG5ldyhzaXplX3Qgc3osIFJlbmRl
ckFyZW5hKiByZW5kZXJBcmVuYSkgdGhyb3coKQordm9pZCogUmVuZGVyT2JqZWN0OjpvcGVyYXRv
ciBuZXcoc2l6ZV90IHN6LCBSZW5kZXJBcmVuYSogcmVuZGVyQXJlbmEpCiB7CiAgICAgcmV0dXJu
IHJlbmRlckFyZW5hLT5hbGxvY2F0ZShzeik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCShyZXZpc2lvbiAxMDI4MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw3ICsyNjQsNyBA
QCBwdWJsaWM6CiAKICAgICAvLyBPdmVybG9hZGVkIG5ldyBvcGVyYXRvci4gIERlcml2ZWQgY2xh
c3NlcyBtdXN0IG92ZXJyaWRlIG9wZXJhdG9yIG5ldwogICAgIC8vIGluIG9yZGVyIHRvIGFsbG9j
YXRlIG91dCBvZiB0aGUgUmVuZGVyQXJlbmEuCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3KHNpemVf
dCwgUmVuZGVyQXJlbmEqKSB0aHJvdygpOworICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3Qs
IFJlbmRlckFyZW5hKik7CiAKICAgICAvLyBPdmVycmlkZGVuIHRvIHByZXZlbnQgdGhlIG5vcm1h
bCBkZWxldGUgZnJvbSBiZWluZyBjYWxsZWQuCiAgICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9p
ZCosIHNpemVfdCk7Cg==
</data>
<flag name="review"
          id="119644"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>